<html dir=rtl style="-webkit-writing-mode:vertical-lr">

<script src="../../resources/js-test.js"></script>
<script>
    var testScrolls = [
        {x: -10, y: 0, expectedX: 110, expectedY: -100},
        {x: 30, y: 0, expectedX: 80, expectedY: -100},
        {x: 0, y: -10, expectedX: 80, expectedY: -90},
        {x: 0, y: 30, expectedX: 80, expectedY: -120},
    ];
    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>
