<!DOCTYPE HTML>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<div id="role" role="button"></div>

<script>
test(function(t) {
    var element = document.getElementById("role");
    assert_equals(element.role, "button");
    element.role = "checkbox";
    assert_equals(element.getAttribute("role"), "checkbox");
}, "role attribute reflects.");
</script>

<div id="activedescendant" aria-activedescendant="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("activedescendant");
    assert_equals(element.ariaActiveDescendant, "x");
    element.ariaActiveDescendant = "y";
    assert_equals(element.getAttribute("aria-activedescendant"), "y");
}, "aria-activedescendant attribute reflects.");
</script>

<div id="atomic" aria-atomic="true"></div>

<script>
test(function(t) {
    var element = document.getElementById("atomic");
    assert_equals(element.ariaAtomic, "true");
    element.ariaAtomic = "false";
    assert_equals(element.getAttribute("aria-atomic"), "false");
}, "aria-atomic attribute reflects.");
</script>

<div id="autocomplete" aria-autocomplete="list"></div>

<script>
test(function(t) {
    var element = document.getElementById("autocomplete");
    assert_equals(element.ariaAutoComplete, "list");
    element.ariaAutoComplete = "inline";
    assert_equals(element.getAttribute("aria-autocomplete"), "inline");
}, "aria-autocomplete attribute reflects.");
</script>

<div id="busy" aria-busy="true"></div>

<script>
test(function(t) {
    var element = document.getElementById("busy");
    assert_equals(element.ariaBusy, "true");
    element.ariaBusy = "false";
    assert_equals(element.getAttribute("aria-busy"), "false");
}, "aria-busy attribute reflects.");
</script>

<div id="checked" aria-checked="mixed"></div>

<script>
test(function(t) {
    var element = document.getElementById("checked");
    assert_equals(element.ariaChecked, "mixed");
    element.ariaChecked = "true";
    assert_equals(element.getAttribute("aria-checked"), "true");
}, "aria-checked attribute reflects.");
</script>

<div id="colcount" aria-colcount="5"></div>

<script>
test(function(t) {
    var element = document.getElementById("colcount");
    assert_equals(element.ariaColCount, "5");
    element.ariaColCount = "6";
    assert_equals(element.getAttribute("aria-colcount"), "6");
}, "aria-colcount attribute reflects.");
</script>

<div id="colindex" aria-colindex="1"></div>

<script>
test(function(t) {
    var element = document.getElementById("colindex");
    assert_equals(element.ariaColIndex, "1");
    element.ariaColIndex = "2";
    assert_equals(element.getAttribute("aria-colindex"), "2");
}, "aria-colindex attribute reflects.");
</script>

<div id="colspan" aria-colspan="2"></div>

<script>
test(function(t) {
    var element = document.getElementById("colspan");
    assert_equals(element.ariaColSpan, "2");
    element.ariaColSpan = "3";
    assert_equals(element.getAttribute("aria-colspan"), "3");
}, "aria-colspan attribute reflects.");
</script>

<div id="controls" aria-controls="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("controls");
    assert_equals(element.ariaControls, "x");
    element.ariaControls = "y";
    assert_equals(element.getAttribute("aria-controls"), "y");
}, "aria-controls attribute reflects.");
</script>

<div id="current" aria-current="page"></div>

<script>
test(function(t) {
    var element = document.getElementById("current");
    assert_equals(element.ariaCurrent, "page");
    element.ariaCurrent = "step";
    assert_equals(element.getAttribute("aria-current"), "step");
}, "aria-current attribute reflects.");
</script>

<div id="describedby" aria-describedby="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("describedby");
    assert_equals(element.ariaDescribedBy, "x");
    element.ariaDescribedBy = "y";
    assert_equals(element.getAttribute("aria-describedby"), "y");
}, "aria-describedby attribute reflects.");
</script>

<div id="details" aria-details="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("details");
    assert_equals(element.ariaDetails, "x");
    element.ariaDetails = "y";
    assert_equals(element.getAttribute("aria-details"), "y");
}, "aria-details attribute reflects.");
</script>

<div id="errormessage" aria-errormessage="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("errormessage");
    assert_equals(element.ariaDisabled, "x");
    element.ariaDisabled = "y";
    assert_equals(element.getAttribute("aria-errormessage"), "y");
}, "aria-errormessage attribute reflects.");
</script>

<div id="flowto" aria-flowto="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("flowto");
    assert_equals(element.ariaExpanded, "x");
    element.ariaExpanded = "y";
    assert_equals(element.getAttribute("aria-flowto"), "y");
}, "aria-flowto attribute reflects.");
</script>

<div id="haspopup" aria-haspopup="menu"></div>

<script>
test(function(t) {
    var element = document.getElementById("haspopup");
    assert_equals(element.ariaHasPopup, "menu");
    element.ariaHasPopup = "listbox";
    assert_equals(element.getAttribute("aria-haspopup"), "listbox");
}, "aria-haspopup attribute reflects.");
</script>

<div id="keyshortcuts" aria-keyshortcuts="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("keyshortcuts");
    assert_equals(element.ariaHidden, "x");
    element.ariaHidden = "y";
    assert_equals(element.getAttribute("aria-keyshortcuts"), "y");
}, "aria-keyshortcuts attribute reflects.");
</script>

<div id="label" aria-label="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("label");
    assert_equals(element.ariaLabel, "x");
    element.ariaLabel = "y";
    assert_equals(element.getAttribute("aria-label"), "y");
}, "aria-label attribute reflects.");
</script>

<div id="labelledby" aria-labelledby="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("labelledby");
    assert_equals(element.ariaLabelledBy, "x");
    element.ariaLabelledBy = "y";
    assert_equals(element.getAttribute("aria-labelledby"), "y");
}, "aria-labelledby attribute reflects.");
</script>

<div id="level" aria-level="1"></div>

<script>
test(function(t) {
    var element = document.getElementById("level");
    assert_equals(element.ariaLevel, "1");
    element.ariaLevel = "2";
    assert_equals(element.getAttribute("aria-level"), "2");
}, "aria-level attribute reflects.");
</script>

<div id="live" aria-live="polite"></div>

<script>
test(function(t) {
    var element = document.getElementById("live");
    assert_equals(element.ariaLive, "polite");
    element.ariaLive = "assertive";
    assert_equals(element.getAttribute("aria-live"), "assertive");
}, "aria-live attribute reflects.");
</script>

<div id="modal" aria-modal="true"></div>

<script>
test(function(t) {
    var element = document.getElementById("modal");
    assert_equals(element.ariaModal, "true");
    element.ariaModal = "false";
    assert_equals(element.getAttribute("aria-modal"), "false");
}, "aria-modal attribute reflects.");
</script>

<div id="multiline" aria-multiline="true"></div>

<script>
test(function(t) {
    var element = document.getElementById("multiline");
    assert_equals(element.ariaMultiLine, "true");
    element.ariaMultiLine = "false";
    assert_equals(element.getAttribute("aria-multiline"), "false");
}, "aria-multiline attribute reflects.");
</script>

<div id="multiselectable" aria-multiselectable="true"></div>

<script>
test(function(t) {
    var element = document.getElementById("multiselectable");
    assert_equals(element.ariaMultiSelectable, "true");
    element.ariaMultiSelectable = "false";
    assert_equals(element.getAttribute("aria-multiselectable"), "false");
}, "aria-multiselectable attribute reflects.");
</script>

<div id="orientation" aria-orientation="vertical"></div>

<script>
test(function(t) {
    var element = document.getElementById("orientation");
    assert_equals(element.ariaOrientation, "vertical");
    element.ariaOrientation = "horizontal";
    assert_equals(element.getAttribute("aria-orientation"), "horizontal");
}, "aria-orientation attribute reflects.");
</script>

<div id="owns" aria-owns="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("owns");
    assert_equals(element.ariaOwns, "x");
    element.ariaOwns = "y";
    assert_equals(element.getAttribute("aria-owns"), "y");
}, "aria-owns attribute reflects.");
</script>

<div id="placeholder" aria-placeholder="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("placeholder");
    assert_equals(element.ariaPlaceholder, "x");
    element.ariaPlaceholder = "y";
    assert_equals(element.getAttribute("aria-placeholder"), "y");
}, "aria-placeholder attribute reflects.");
</script>

<div id="posinset" aria-posinset="10"></div>

<script>
test(function(t) {
    var element = document.getElementById("posinset");
    assert_equals(element.ariaPosInSet, "10");
    element.ariaPosInSet = "11";
    assert_equals(element.getAttribute("aria-posinset"), "11");
}, "aria-posinset attribute reflects.");
</script>

<button id="pressed" aria-pressed="true"></button>

<script>
test(function(t) {
    var element = document.getElementById("pressed");
    assert_equals(element.ariaPressed, "true");
    element.ariaPressed = "false";
    assert_equals(element.getAttribute("aria-pressed"), "false");
}, "aria-pressed attribute reflects.");
</script>

<div id="readonly" aria-readonly="true"></div>

<script>
test(function(t) {
    var element = document.getElementById("readonly");
    assert_equals(element.ariaReadOnly, "true");
    element.ariaReadOnly = "false";
    assert_equals(element.getAttribute("aria-readonly"), "false");
}, "aria-readonly attribute reflects.");
</script>

<div id="relevant" aria-relevant="text"></div>

<script>
test(function(t) {
    var element = document.getElementById("relevant");
    assert_equals(element.ariaRelevant, "text");
    element.ariaRelevant = "removals";
    assert_equals(element.getAttribute("aria-relevant"), "removals");
}, "aria-relevant attribute reflects.");
</script>

<div id="required" aria-required="true"></div>

<script>
test(function(t) {
    var element = document.getElementById("required");
    assert_equals(element.ariaRequired, "true");
    element.ariaRequired = "false";
    assert_equals(element.getAttribute("aria-required"), "false");
}, "aria-required attribute reflects.");
</script>

<div id="roledescription" aria-roledescription="x"></div>

<script>
test(function(t) {
    var element = document.getElementById("roledescription");
    assert_equals(element.ariaRoleDescription, "x");
    element.ariaRoleDescription = "y";
    assert_equals(element.getAttribute("aria-roledescription"), "y");
}, "aria-roledescription attribute reflects.");
</script>

<div id="rowcount" aria-rowcount="10"></div>

<script>
test(function(t) {
    var element = document.getElementById("rowcount");
    assert_equals(element.ariaRowCount, "10");
    element.ariaRowCount = "11";
    assert_equals(element.getAttribute("aria-rowcount"), "11");
}, "aria-rowcount attribute reflects.");
</script>

<div id="rowindex" aria-rowindex="1"></div>

<script>
test(function(t) {
    var element = document.getElementById("rowindex");
    assert_equals(element.ariaRowIndex, "1");
    element.ariaRowIndex = "2";
    assert_equals(element.getAttribute("aria-rowindex"), "2");
}, "aria-rowindex attribute reflects.");
</script>

<div id="rowspan" aria-rowspan="2"></div>

<script>
test(function(t) {
    var element = document.getElementById("rowspan");
    assert_equals(element.ariaRowSpan, "2");
    element.ariaRowSpan = "3";
    assert_equals(element.getAttribute("aria-rowspan"), "3");
}, "aria-rowspan attribute reflects.");
</script>

<div id="setsize" aria-setsize="10"></div>

<script>
test(function(t) {
    var element = document.getElementById("setsize");
    assert_equals(element.ariaSelected, "10");
    element.ariaSelected = "11";
    assert_equals(element.getAttribute("aria-setsize"), "11");
}, "aria-setsize attribute reflects.");
</script>

<div id="sort" aria-sort="descending"></div>

<script>
test(function(t) {
    var element = document.getElementById("sort");
    assert_equals(element.ariaSort, "descending");
    element.ariaSort = "ascending";
    assert_equals(element.getAttribute("aria-sort"), "ascending");
}, "aria-sort attribute reflects.");
</script>

<div id="valuemax" aria-valuemax="99"></div>

<script>
test(function(t) {
    var element = document.getElementById("valuemax");
    assert_equals(element.ariaValueMax, "99");
    element.ariaValueMax = "100";
    assert_equals(element.getAttribute("aria-valuemax"), "100");
}, "aria-valuemax attribute reflects.");
</script>

<div id="valuemin" aria-valuemin="3"></div>

<script>
test(function(t) {
    var element = document.getElementById("valuemin");
    assert_equals(element.ariaValueMin, "3");
    element.ariaValueMin = "2";
    assert_equals(element.getAttribute("aria-valuemin"), "2");
}, "aria-valuemin attribute reflects.");
</script>

<div id="valuenow" aria-valuenow="50"></div>

<script>
test(function(t) {
    var element = document.getElementById("valuenow");
    assert_equals(element.ariaValueNow, "50");
    element.ariaValueNow = "51";
    assert_equals(element.getAttribute("aria-valuenow"), "51");
}, "aria-valuenow attribute reflects.");
</script>

<div id="valuetext" aria-valuetext="50%"></div>

<script>
test(function(t) {
    var element = document.getElementById("valuetext");
    assert_equals(element.ariaValueText, "50%");
    element.ariaValueText = "51%";
    assert_equals(element.getAttribute("aria-valuetext"), "51%");
}, "aria-valuetext attribute reflects.");
</script>
