<!DOCTYPE html>
<html>
    <head>
        <style>
            #scroller {
                height: 500px;
                width:500px;
                outline: 1px solid black;
                overflow: auto;
            }
            .content {
                width: 9999px;
                height: 9999px;
            }
        </style>
        <script src="../../../resources/js-test-pre.js"></script>
        <script>
            function runTest() {
                description('Tests scrollTo/By(x,y) and scrollTo/By(scrollOptions) on Element');
                
                var scroller = document.getElementById('scroller');
                setTimeout(function() {
                    scroller.scrollTo(20, 500);
                    shouldBe("scroller.scrollLeft", "20");
                    shouldBe("scroller.scrollTop", "500");

                    scroller.scrollBy(50, 60);
                    shouldBe("scroller.scrollLeft", "70");
                    shouldBe("scroller.scrollTop", "560");

                    scroller.scrollTo({ 'left' : 100, 'top' : 400 });
                    shouldBe("scroller.scrollLeft", "100");
                    shouldBe("scroller.scrollTop", "400");

                    scroller.scrollBy({ 'left' : 20, 'top' : 30 });
                    shouldBe("scroller.scrollLeft", "120");
                    shouldBe("scroller.scrollTop", "430");

                    scroller.scrollTo({ 'top' : 700 });
                    shouldBe("scroller.scrollLeft", "120");
                    shouldBe("scroller.scrollTop", "700");

                    scroller.scrollTo({ 'left' : 300 });
                    shouldBe("scroller.scrollLeft", "300");
                    shouldBe("scroller.scrollTop", "700");

                    scroller.scrollBy({ 'left' : 200 });
                    shouldBe("scroller.scrollLeft", "500");
                    shouldBe("scroller.scrollTop", "700");

                    scroller.scrollBy({ 'top' : 250 });
                    shouldBe("scroller.scrollLeft", "500");
                    shouldBe("scroller.scrollTop", "950");

                    scroller.scrollTo(20.5, 25.5);
                    shouldBe("scroller.scrollLeft", "20");
                    shouldBe("scroller.scrollTop", "25");

                    scroller.scrollTo(30.99, 35.99);
                    shouldBe("scroller.scrollLeft", "30");
                    shouldBe("scroller.scrollTop", "35");

                    scroller.scrollTo(NaN, NaN);
                    shouldBe("scroller.scrollLeft", "0");
                    shouldBe("scroller.scrollTop", "0");

                    scroller.scrollTo(10, 10);
                    scroller.scrollBy(Infinity, Infinity);
                    shouldBe("scroller.scrollLeft", "10");
                    shouldBe("scroller.scrollTop", "10");

                    scroller.scrollTo(-100, -100);
                    shouldBe("scroller.scrollLeft", "0");
                    shouldBe("scroller.scrollTop", "0");

                    scroller.style.display = 'none';
                    scroller.scrollTo(100, 100);
                    shouldBe("scroller.scrollLeft", "0");
                    shouldBe("scroller.scrollTop", "0");

                    scroller.style.display = 'block';
                    shouldBe("scroller.scrollLeft", "0");
                    shouldBe("scroller.scrollTop", "0");

                    if (window.internals)
                        internals.setPageZoomFactor(1.5);

                    scroller.scrollTo({ 'left' : 100, 'top' : 400 });
                    shouldBe("scroller.scrollLeft", "100");
                    shouldBe("scroller.scrollTop", "400");

                    scroller.style.display = 'none';

                    finishJSTest();
                }, 0);
            }
            var jsTestIsAsync = true;
        </script>
    </head>
    <body onload="runTest()">
        <div id="scroller">
            <div class="content">Scrolling content</div>
        </div>
        <script src="../../../resources/js-test-post.js"></script>
    </body>
</html>
