<!DOCTYPE html>
<html>
    <head>
    <title>CSS Test: cssom view window screen attribute</title>
    <link rel="author" title="jingke" href="mailto:jingkewhu@gmail.com">
    <link rel="help" href="http://www.w3.org/TR/cssom-view/#the-screen-interface">
    <meta name="flags" content="dom">
    <meta name="assert" content="window screen interface">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    </head>
    <body>
        <div id="myDiv"></div>
        <div id="log"></div>
        <script>
        test(function(){assert_true(window.screen.width >= 0 && window.screen.width < 6000000);},
            "window.screen.width >= 0 && window.screen.width < 6000000");
        test(function(){assert_true(window.screen.height >= 0 && window.screen.height < 6000000);},
            "window.screen.height >= 0 && window.screen.height < 6000000");
        test(function(){assert_true(window.screen.availWidth >= 0 && window.screen.availWidth <= window.screen.width);},
            "window.screen.availWidth >= 0 && window.screen.availWidth <= window.screen.width");
        test(function(){assert_true(window.screen.availHeight >= 0 && window.screen.availHeight <= window.screen.height);},
            "window.screen.availHeight >= 0 && window.screen.availHeight <= window.screen.height");
        test(function(){assert_in_array(window.screen.colorDepth, [0, 16, 24, 32]);},
            "window.screen.colorDepth == 0 || window.screen.colorDepth == 16 || window.screen.colorDepth == 24 || window.screen.colorDepth == 32");
        test(function(){assert_equals(window.screen.pixelDepth, window.screen.colorDepth);},
            "window.screen.pixelDepth must return the value returned by window.screen.colorDepth");
        </script>

    </body>
</html>
