<!doctype html>
<meta charset=utf-8>
<title>Animation.frameRate</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../../imported/w3c/web-platform-tests/web-animations/testcommon.js"></script>
<body>
<script>
'use strict';

test(t => {
    const animation = new Animation;

    assert_equals(animation.frameRate, "auto", "The default value for frameRate is 'auto'");

    // AnimationFrameRatePreset values.
    for (let value of ["low", "high", "highest", "auto"]) {
        animation.frameRate = value;
        assert_equals(animation.frameRate, value, `The value "${value}" can be set`);
    }

    // Numeric value.
    animation.frameRate = 60;
    assert_equals(animation.frameRate, 60, `A numeric value can be set`);
}, "Valid animation.frameRate values");

test(t => {
    const animation = new Animation;
    for (let value of ["default", "120", null, undefined, [], {}]) {
        assert_throws(new TypeError, () => animation.frameRate = value, `Setting the value ${value} throws`);
        assert_equals(animation.frameRate, "auto", `Setting the invalid value "${value}" does not change the value`);
    }
}, "Invalid animation.frameRate values");

</script>
</body>
