tizen beta release
[framework/web/webkit-efl.git] / LayoutTests / fast / forms / script-tests / ValidityState-rangeUnderflow.js
1 description('This test aims to check for rangeUnderflow flag with input fields');
2
3 var input = document.createElement('input');
4
5 function checkUnderflow(value, min, disabled)
6 {
7     input.value = value;
8     input.min = min;
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.' : '.');
14     if (underflow)
15         testPassed(resultText);
16     else
17         testFailed(resultText);
18 }
19
20 function checkNotUnderflow(value, min, disabled)
21 {
22     input.value = value;
23     input.min = min;
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.' : '.');
29     if (underflow)
30         testFailed(resultText);
31     else
32         testPassed(resultText);
33 }
34
35 // ----------------------------------------------------------------
36 debug('Type=text');
37 input.type = 'text';  // No underflow for type=text.
38 checkNotUnderflow('99', '100');
39
40 // ----------------------------------------------------------------
41 debug('');
42 debug('Type=number');
43 input.type = 'number';
44 input.max = '';
45 // No underflow cases
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');
57
58 // Underflow cases
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');
64
65 // Disabled
66 checkNotUnderflow('99', '1E+2', true);