<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <title>test of bitwise operators mixing integers, null, and undefined</title>
        <style>
            .failure { color: red; }
            .success { color: green; }
        </style>
        <script type="text/javascript">

            if (window.testRunner)  testRunner.dumpAsText();

            function log(msg) {
                document.getElementById("log").innerHTML += msg;
            }

            function logTest(expression, expected) {
                var result;
                try {
                    result = eval(expression);
                } catch (e) {
                    result = e;
                }
                if (result != expected)
                    log("<li class='failure'>FAILED: " + expression + " = " + result + " -- expected: " + expected + "</li>");
                else
                    log("<li class='success'>SUCCESS: " + expression + " = " + result + "</li>");
                
            }
            
            function runTest() {
                logTest("0 & null", 0);
                logTest("0 & undefined", 0);
                logTest("1 & null", 0);
                logTest("1 & undefined", 0);
                logTest("0 | null", 0);
                logTest("0 | undefined", 0);
                logTest("1 | null", 1);
                logTest("1 | undefined", 1);
                logTest("0 ^ null", 0);
                logTest("0 ^ undefined", 0);
                logTest("1 ^ null", 1);
                logTest("1 ^ undefined", 1);
            }
            
        </script>
        
    </head>
    This tests the bitwise operators work correctly in conjunction with undefined and null.<br />
    <body onload="runTest()">
        <ul id="log"></ul>
    </body>
</html>
