<!DOCTYPE html>
<html>
<body>
<script src="../resources/js-test.js"></script>
<script>
description("Tests for ObservableArray's [[Put]]");

let sheet1 = null;
let sheet2 = null;
let descriptor = null;

function runTest() {
    "use strict";

    sheet1 = new CSSStyleSheet()
    sheet1.replaceSync('div { color: red }')
    document.adoptedStyleSheets.push(sheet1)

    shouldBe("document.adoptedStyleSheets.length", "1");
    descriptor = Object.getOwnPropertyDescriptor(document.adoptedStyleSheets, 'length');
    shouldBeFalse("descriptor.configurable");
    shouldBeFalse("descriptor.enumerable");
    shouldBeTrue("descriptor.writable");
    shouldBe("descriptor.value", "1");
    shouldBe("document.adoptedStyleSheets[0]", "sheet1");

    evalAndLog("document.adoptedStyleSheets.length = 0");
    shouldBe("document.adoptedStyleSheets.length", "0");
    shouldBeUndefined("document.adoptedStyleSheets[0]");

    sheet2 = new CSSStyleSheet()
    sheet2.replaceSync('div { color: blue }')
    document.adoptedStyleSheets.push(sheet1)
    document.adoptedStyleSheets.push(sheet2)
    shouldBe("document.adoptedStyleSheets.length", "2");
    evalAndLog("document.adoptedStyleSheets.length = 1");
    shouldBe("document.adoptedStyleSheets.length", "1");
    shouldBe("document.adoptedStyleSheets[0]", "sheet1");
    shouldBeUndefined("document.adoptedStyleSheets[1]");

    evalAndLog("document.adoptedStyleSheets.length = 5");
    shouldBe("document.adoptedStyleSheets.length", "1");
    shouldBe("document.adoptedStyleSheets[0]", "sheet1");
    shouldBeUndefined("document.adoptedStyleSheets[1]");

    shouldThrowErrorName("document.adoptedStyleSheets.length = 0.5", "RangeError");

    evalAndLog("document.adoptedStyleSheets.foo = 1;");
    shouldBe("document.adoptedStyleSheets.foo", "1");

    document.adoptedStyleSheets.length = 0;
}

runTest();
</script>
</body>
