blob: be41f0b0b8ba92f3cf86c3e59f4989349f5e86d4 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description('This test aims to check for typeMismatch flag with type=date input fields');
var i = document.createElement('input');
i.type = 'date';
function check(value, disabled)
{
i.value = value;
i.disabled = !!disabled;
if (i.validity.typeMismatch)
testFailed('"' + value + '" had typeMismatch. This should not happen with sanitization.');
}
function shouldBeValid(value)
{
check(value);
if ((value === '' && i.value === '') || (value !== '' && i.value !== ""))
testPassed('"' + value + '" is a correct valid date string.');
else
testFailed('"' + value + '" is a valid date string that failed to be set on the input.');
}
function shouldBeInvalid(value, disabled)
{
check(value, disabled);
if (i.value === '')
testPassed('"' + value + '" is an invalid date string and was sanitized' + (disabled ? ' while disabled' : '') + '.');
else
testFailed('"' + value + '" is an invalid date string and was not sanitized' + (disabled ? ' while disabled' : '') + '.');
}
// Valid values
shouldBeValid('');
shouldBeValid('2009-09-07');
shouldBeValid('9999-12-31');
shouldBeValid('275760-09-13');
shouldBeValid('1582-10-15');
shouldBeValid('0001-01-01');
shouldBeValid('2009-01-31');
shouldBeValid('2009-02-28');
shouldBeValid('2009-03-31');
shouldBeValid('2009-04-30');
shouldBeValid('2009-05-31');
shouldBeValid('2009-06-30');
shouldBeValid('2009-07-31');
shouldBeValid('2009-08-31');
shouldBeValid('2009-09-30');
shouldBeValid('2009-10-31');
shouldBeValid('2009-11-30');
shouldBeValid('2009-12-31');
shouldBeValid('2008-02-29');
shouldBeValid('2000-02-29');
// Invalid values
shouldBeInvalid(' 2009-09-07 ');
shouldBeInvalid('a');
shouldBeInvalid('-1-09-07');
shouldBeInvalid('0000-12-31');
shouldBeInvalid('0000-01-01');
shouldBeInvalid('275760-09-14');
shouldBeInvalid('2147483648-12-31');
shouldBeInvalid('2009/09/07');
shouldBeInvalid('20090907');
shouldBeInvalid('2009--2-07');
shouldBeInvalid('2009-00-07');
shouldBeInvalid('2009-13-07');
shouldBeInvalid('2009-xx-30');
shouldBeInvalid('2009-01-32');
shouldBeInvalid('2009-02-29');
shouldBeInvalid('2009-03-32');
shouldBeInvalid('2009-04-31');
shouldBeInvalid('2009-05-32');
shouldBeInvalid('2009-06-31');
shouldBeInvalid('2009-07-32');
shouldBeInvalid('2009-08-32');
shouldBeInvalid('2009-09-31');
shouldBeInvalid('2009-10-32');
shouldBeInvalid('2009-11-31');
shouldBeInvalid('2009-12-32');
shouldBeInvalid('2100-02-29');
shouldBeInvalid('2009-09-00');
shouldBeInvalid('2009-09-');
shouldBeInvalid('2009-09-7');
shouldBeInvalid('2009-09-001');
shouldBeInvalid('2009-09-xx');
shouldBeInvalid('2009-09');
shouldBeInvalid('2009');
// Disabled
shouldBeInvalid('2009-09', true);
</script>
</body>
</html>