<!DOCTYPE html>
<html>
<head>
    <title>CSSOM View - 4.2 - screen.width range tests</title>
    <link rel="author" title="Neils Christoffersen" href="mailto:neils.christoffersen@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.width has sensible values">
    <script src="../../../../../resources/testharness.js"></script>
    <script src="../../../../../resources/testharnessreport.js"></script>
</head>
<body>
    <div id="myDiv"></div>
    <div id="log"></div>
    <script>
        var upperBound = 50000;

        test(
            function() {
                assert_not_equals(window.screen.width, 0, "window.screen.width is zero")
            }, "zero check"
        );

        test(
            function() {
                assert_true(window.screen.width > 0, "window.screen.width shouldn't be negative")
            }, "positive check"
        );

        test(
            function() {
                assert_true(window.screen.width < upperBound, "window.screen.width shouldn't be so large")
            }, "upper bound check"
        );
    </script>
</body>
</html>
