<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Test reflecting boolean attributes.");

var attributes = [
    [ "area", "noHref" ],
    [ "dir", "compact" ],
    [ "dl", "compact" ],
    [ "form", "noValidate" ],
    [ "frame", "noResize" ],
    [ "hr", "noShade" ],
    [ "img", "isMap" ],
    [ "input", "autofocus" ],
    [ "input", "defaultChecked", "checked" ],
    [ "input", "disabled" ],
    [ "input", "formNoValidate" ],
    [ "input", "multiple" ],
    [ "input", "readOnly" ],
    [ "input", "required" ],
    [ "link", "disabled" ],
    [ "menu", "compact" ],
    [ "object", "declare" ],
    [ "ol", "compact" ],
    [ "option", "defaultSelected", "selected" ],
    [ "pre", "wrap" ],
    [ "script", "defer" ],
    [ "select", "multiple" ],
    [ "td", "noWrap" ],
    [ "ul", "compact" ],
    [ "video", "autoplay" ],
    [ "video", "controls" ],
    [ "video", "loop" ],
];

function make(tag)
{
    return document.createElement(tag);
}

for (var i = 0; i < attributes.length; ++i) {
    var tag = attributes[i][0];
    var reflectingAttribute = attributes[i][1];
    var contentAttribute = attributes[i][2] || reflectingAttribute.toLowerCase();
    shouldBe("e = make('" + tag + "'); "
        + "e.removeAttribute('" + contentAttribute + "'); "
        + "e." + reflectingAttribute,
        "false");
    shouldBe("e = make('" + tag + "'); "
        + "e.setAttribute('" + contentAttribute + "', ''); "
        + "e." + reflectingAttribute,
        "true");
    shouldBe("e = make('" + tag + "'); "
        + "e.setAttribute('" + contentAttribute + "', 'x'); "
        + "e." + reflectingAttribute + " = false; "
        + "e.getAttribute('" + contentAttribute + "')",
        "null");
    shouldBe("e = make('" + tag + "'); "
        + "e.setAttribute('" + contentAttribute + "', 'x'); "
        + "e." + reflectingAttribute + " = true; "
        + "e.getAttribute('" + contentAttribute + "')",
        "''");
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
