<!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>
