blob: 2a77c063e38c68281533de7b6a88d8fe4bd37866 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description('This test aims to check for typeMismatch flag with type=datetime input fields');
var i = document.createElement('input');
i.type = 'datetime';
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 datetime string.');
else
testFailed('"' + value + '" is a valid datetime string that failed to be set on the input.');
}
function shouldBeInvalid(value, disabled)
{
check(value, disabled);
if (i.value === '')
testPassed('"' + value + '" is an invalid datetime string and was sanitized' + (disabled ? ' while disabled' : '') + '.');
else
testFailed('"' + value + '" is an invalid datetime string and was not sanitized' + (disabled ? ' while disabled' : '') + '.');
}
// Valid values
shouldBeValid('');
shouldBeValid('2009-09-07T16:49Z');
shouldBeValid('2009-09-07T16:49:31Z');
shouldBeValid('2009-09-07T16:49:31.1Z');
shouldBeValid('2009-09-07T16:49:31.12Z');
shouldBeValid('2009-09-07T16:49:31.123Z');
shouldBeValid('2009-09-07T16:49:31.1234567890Z');
shouldBeValid('275760-09-12T23:59:59.999Z');
shouldBeValid('275760-09-13T00:00:00.000Z');
shouldBeValid('0001-01-01T00:00:00.000Z');
shouldBeValid('0001-01-01T00:00:00.000+00:00');
shouldBeValid('0001-01-01T01:30+01:30');
shouldBeValid('0001-01-01T00:00-01:00');
// Invalid values
shouldBeInvalid(' 2009-09-07T16:49Z ');
shouldBeInvalid('2009-09-07T16:49z');
shouldBeInvalid('2009-09-07t16:49Z');
shouldBeInvalid('2009-09-07T16:49');
shouldBeInvalid('2009/09/07T16:49Z');
shouldBeInvalid('a');
shouldBeInvalid('-1-09-07T16:49Z');
shouldBeInvalid('2009-09-07T16:49+23');
shouldBeInvalid('2009-09-07T16:49+23:');
shouldBeInvalid('2009-09-07T16:49+24:00');
shouldBeInvalid('2009-09-07T16:49+23:60');
shouldBeInvalid('2009-09-07T16:49-23');
shouldBeInvalid('2009-09-07T16:49-23:');
shouldBeInvalid('2009-09-07T16:49-24:00');
shouldBeInvalid('2009-09-07T16:49-23:60');
shouldBeInvalid('0000-12-31T23:59:59Z');
shouldBeInvalid('2147483647-12-31T23:59-00:01');
shouldBeInvalid('2147483648-01-01T00:00:00Z');
shouldBeInvalid('0001-01-01T00:00+01:00');
// Disabled
shouldBeInvalid('invalid', true);
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>