<html dir=rtl>

<script src="../../resources/js-test.js"></script>
<script>
    var testScrolls = [
        {x: -10, y: 0, expectedX: -90, expectedY: 100},
        {x: 30, y: 0, expectedX: -120, expectedY: 100},
        {x: 0, y: -10, expectedX: -120, expectedY: 110},
        {x: 0, y: 30, expectedX: -120, expectedY: 80},
    ];
    var currentTest = -1;
    window.jsTestIsAsync = true;

    function startNextTestCase() {
        currentTest++;
        if (currentTest >= testScrolls.length) {
            finishJSTest();
            return;
        }
        var testCase = testScrolls[currentTest];
        eventSender.mouseMoveTo(100, 100);
        eventSender.continuousMouseScrollBy(testCase.x, testCase.y);
        shouldBecomeEqual("window.scrollX == " + testCase.expectedX + " && " +
            "window.scrollY == " + testCase.expectedY, "true", startNextTestCase);
    }

    window.onload = function() {
        if (!window.testRunner)
            return;
        window.addEventListener("mousewheel", function (e){}, false);
        window.scrollTo(-100, 100);
        startNextTestCase();
    }
</script>

<body style="margin:0">
    <div id="div" style="whitespace:nowrap; width: 4000px; height: 1000px; border: 1px solid red;">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</div>
    <div id="console"></div>
</body>
</html>
