<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description('Check stepUp() and stepDown() bahevior for type=week.');

var input = document.createElement('input');

function setInputAttributes(min, max, step, value) {
    input.min = min;
    input.max = max;
    input.step = step;
    input.value = value;
}

function stepUp(value, step, max, optionalStepCount) {
    setInputAttributes(null, max, step, value);
    if (typeof optionalStepCount != "undefined")
        input.stepUp(optionalStepCount);
    else
        input.stepUp();
    return input.value;
}

function stepDown(value, step, min, optionalStepCount) {
    setInputAttributes(min, null, step, value);
    if (typeof optionalStepCount != "undefined")
        input.stepDown(optionalStepCount);
    else
        input.stepDown();
    return input.value;
}

input.type = 'week';
debug('Invalid value');
shouldBe('stepUp("", null, null)', '"1970-W02"');
shouldBe('stepDown("", null, null)', '"1969-W52"');
debug('Non-number arguments');
shouldBe('stepUp("2010-W02", null, null, "0")', '"2010-W02"');
shouldBe('stepDown("2010-W02", null, null, "0")', '"2010-W02"');
shouldBe('stepUp("2010-W02", null, null, "foo")', '"2010-W02"');
shouldBe('stepDown("2010-W02", null, null, "foo")', '"2010-W02"');
shouldBe('stepUp("2010-W02", null, null, null)', '"2010-W02"');
shouldBe('stepDown("2010-W02", null, null, null)', '"2010-W02"');
debug('Normal cases');
shouldBe('stepUp("2010-W02", null, null)', '"2010-W03"');
shouldBe('stepDown("2010-W02", null, null)', '"2010-W01"');
shouldBe('stepUp("2010-W02", null, null, 10)', '"2010-W12"');
shouldBe('stepDown("2010-W02", null, null, 11)', '"2009-W44"');
shouldBe('stepUp("1970-W01", "4", null, 2)', '"1970-W09"');
shouldBe('stepDown("1970-W01", "4", null, 3)', '"1969-W41"');
debug('Step=any');
shouldThrowErrorName('stepUp("2010-W02", "any", null)', "InvalidStateError");
shouldThrowErrorName('stepDown("2010-W02", "any", null)', "InvalidStateError");
debug('Overflow/underflow');
shouldBe('stepUp("2010-W02", "3.40282346e+38", null)', '"2010-W02"');
shouldBe('stepDown("2010-W02", "3.40282346e+38", null)', '"1970-W01"');
shouldBe('stepUp("2010-W02", "1", "2010-W02")', '"2010-W02"');
shouldBe('stepDown("2010-W02", "1", "2010-W02")', '"2010-W02"');

debug('');
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
