<!DOCTYPE html>
<html>
    <head>
        <title>CSS Test: HTMLImageElement x and y attributes</title>
        <link rel="author" title="Adobe" href="http://html.adobe.com/">
        <link rel="author" title="Alan Stearns" href="mailto:stearns@adobe.com">
        <link rel="reviewer" title="" href="">
        <link rel="help" href="https://drafts.csswg.org/cssom-view/#excensions-to-the-htmlimageelement-interface">
        <meta name="assert" content="HTMLImageElement attributes give x and y position of CSS layout box">
        <meta name="flags" content="dom">
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
    </head>
    <body>
        <div id="log"></div>
        <script type="text/javascript">

        function testIMGAttributes(attribute_name, display_none) {
            var element = document.createElement("img");
            document.body.appendChild(element);
            element.style.setProperty("position", "absolute");
            element.style.setProperty("left", "10px");
            element.style.setProperty("top", "10px");
            if (display_none) {
                element.style.setProperty("display", "none");
            }
            var attributeValue = element[attribute_name];
            document.body.removeChild(element);
            return attributeValue;
        }

        var imgAttributes = [
            ["x", false, 10],
            ["y", false, 10],
            ["x", true, 0],
            ["y", true, 0],
        ];

        imgAttributes.forEach(function(test_data) {
            test (function() { assert_equals(testIMGAttributes(test_data[0], test_data[1]), test_data[2])},
                "test " + test_data[0] + " with display " + test_data[1])
            }
        );
        </script>
    </body>
</html>
