1 description('This test aims to check for rangeUnderflow flag with input fields');
3 var input = document.createElement('input');
5 function checkUnderflow(value, min, disabled)
9 input.disabled = !!disabled;
10 var underflow = input.validity.rangeUnderflow;
11 var resultText = 'The value "' + input.value + '" ' +
12 (underflow ? 'undeflows' : 'doesn\'t underflow') +
13 ' the minimum value "' + input.min + '"' + (disabled ? ' when disabled.' : '.');
15 testPassed(resultText);
17 testFailed(resultText);
20 function checkNotUnderflow(value, min, disabled)
24 input.disabled = !!disabled;
25 var underflow = input.validity.rangeUnderflow;
26 var resultText = 'The value "' + input.value + '" ' +
27 (underflow ? 'underflows' : 'doesn\'t underflow') +
28 ' the minimum value "' + input.min + '"' + (disabled ? ' when disabled.' : '.');
30 testFailed(resultText);
32 testPassed(resultText);
35 // ----------------------------------------------------------------
37 input.type = 'text'; // No underflow for type=text.
38 checkNotUnderflow('99', '100');
40 // ----------------------------------------------------------------
43 input.type = 'number';
46 input.type = 'number';
47 checkNotUnderflow('101', '100'); // Very normal case.
48 checkNotUnderflow('-99', '-100');
49 checkNotUnderflow('101', '1E+2');
50 checkNotUnderflow('1.01', '1.00');
51 checkNotUnderflow('abc', '100'); // Invalid value.
52 checkNotUnderflow('', '1'); // No value.
53 checkNotUnderflow('-1', ''); // No min.
54 checkNotUnderflow('-1', 'xxx'); // Invalid min.
55 // The following case should be rangeUnderflow==true ideally. But the "double" type doesn't have enough precision.
56 checkNotUnderflow('0.999999999999999999999999999999999999999998', '0.999999999999999999999999999999999999999999');
59 checkUnderflow('99', '100');
60 checkUnderflow('-101', '-100');
61 checkUnderflow('99', '1E+2');
62 input.max = '100'; // value < min && value > max
63 checkUnderflow('101', '200');
66 checkNotUnderflow('99', '1E+2', true);