<!doctype html>
<meta charset="utf-8">
<title>dom-element-scroll tests</title>
<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrolltop">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
    #section1 {
        width: 300px;
        height: 500px;
        top: 16px;
        left: 16px;
        border: inset gray 3px;
        background: white;
    }

    #scrollable {
        width: 400px;
        height: 700px;
        background: linear-gradient(135deg, red, blue);
    }

    #section2 {
        width: 300px;
        height: 500px;
        top: 16px;
        left: 16px;
        border: inset gray 3px;
        background: white;
    }

    #unscrollable {
        width: 200px;
        height: 300px;
        background: linear-gradient(135deg, red, blue);
    }
</style>
<section id="section1">
    <div id="scrollable"></div>
</section>
<section id="section2">
    <div id="unscrollable"></div>
</section>
<script>
    var section1 = document.getElementById("section1");
    var section2 = document.getElementById("section2");

    test(function () {
        // let it be "hidden" to have scrolling box
        section1.style.overflow = "hidden";

        section1.scroll(50, 60);
        assert_equals(section1.scrollLeft, 50, "changed scrollLeft should be 50");
        assert_equals(section1.scrollTop, 60, "changed scrollTop should be 60");

        section1.scroll(0, 0); // back to the origin
    }, "Element test for having scrolling box");

    test(function () {
        section1.scroll(10, 20);
        assert_equals(section1.scrollLeft, 10, "changed scrollLeft should be 10");
        assert_equals(section1.scrollTop, 20, "changed scrollTop should be 20");

        section1.scroll(0, 0); // back to the origin
    }, "Element test for having overflow");

    test(function () {
        // make it not "hidden" to not have scrolling box
        section1.style.overflow = "visible";

        section1.scroll(50, 0);
        assert_equals(section1.scrollLeft, 0, "changed scrollLeft should be 0");
        assert_equals(section1.scrollTop, 0, "changed scrollTop should be 0");

        section1.scroll(0, 60);
        assert_equals(section1.scrollLeft, 0, "changed scrollLeft should be 0");
        assert_equals(section1.scrollTop, 0, "changed scrollTop should be 0");

        section1.scroll(50, 60);
        assert_equals(section1.scrollLeft, 0, "changed scrollLeft should be 0");
        assert_equals(section1.scrollTop, 0, "changed scrollTop should be 0");

        section1.scroll(0, 0); // back to the origin
    }, "Element test for not having scrolling box");

    test(function () {
        section2.scroll(0, 20);
        assert_equals(section2.scrollLeft, 0, "changed scrollLeft should be 0");
        assert_equals(section2.scrollTop, 0, "changed scrollTop should be 0");

        section2.scroll(10, 0);
        assert_equals(section2.scrollLeft, 0, "changed scrollLeft should be 0");
        assert_equals(section2.scrollTop, 0, "changed scrollTop should be 0");

        section2.scroll(10, 20);
        assert_equals(section2.scrollLeft, 0, "changed scrollLeft should be 0");
        assert_equals(section2.scrollTop, 0, "changed scrollTop should be 0");
    }, "Element test for not having overflow");

</script>
