chromium/third_party/blink/web_tests/fast/dom/boolean-attribute-reflection.html

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

var attributes = [
    [ "area", "noHref" ],
    [ "dir", "compact" ],
    [ "dl", "compact" ],
    [ "form", "noValidate" ],
    [ "frame", "noResize" ],
    [ "hr", "noShade" ],
    [ "iframe", "allowFullscreen" ],
    [ "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" ],
    [ "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>
</body>
</html>