OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="../../../resources/js-test.js"></script> | 4 <script src="../../../resources/js-test.js"></script> |
5 </head> | 5 </head> |
6 <body> | 6 <body> |
7 <p id="description"></p> | 7 <p id="description"></p> |
8 <div id="console"></div> | 8 <div id="console"></div> |
9 <script> | 9 <script> |
10 description('Check stepUp() and stepDown() bahevior for range type.'); | 10 description('Check stepUp() and stepDown() bahevior for range type.'); |
11 | 11 |
12 var input = document.createElement('input'); | 12 var input; |
| 13 |
| 14 function createRangeElement() { |
| 15 input = document.createElement('input'); |
| 16 input.type = 'range'; |
| 17 } |
13 | 18 |
14 function setInputAttributes(min, max, step, value) { | 19 function setInputAttributes(min, max, step, value) { |
15 input.min = min; | 20 input.min = min; |
16 input.max = max; | 21 input.max = max; |
17 input.step = step; | 22 input.step = step; |
18 input.value = value; | 23 input.value = value; |
19 } | 24 } |
20 | 25 |
| 26 function createInputWithContentAttributes(min, max, step, value) { |
| 27 createRangeElement(); |
| 28 function setIfNonNull(attribute, value) { |
| 29 if (typeof value !== "null") |
| 30 input.setAttribute(attribute, value); |
| 31 } |
| 32 setIfNonNull("min", min); |
| 33 setIfNonNull("max", max); |
| 34 setIfNonNull("step", step); |
| 35 setIfNonNull("value", value); |
| 36 } |
| 37 |
21 function stepUp(value, step, max, optionalStepCount) { | 38 function stepUp(value, step, max, optionalStepCount) { |
22 setInputAttributes(null, max, step, value); | 39 setInputAttributes(null, max, step, value); |
23 if (typeof optionalStepCount != "undefined") | 40 if (typeof optionalStepCount != "undefined") |
24 input.stepUp(optionalStepCount); | 41 input.stepUp(optionalStepCount); |
25 else | 42 else |
26 input.stepUp(); | 43 input.stepUp(); |
27 return input.value; | 44 return input.value; |
28 } | 45 } |
29 | 46 |
30 function stepDown(value, step, min, optionalStepCount) { | 47 function stepDown(value, step, min, optionalStepCount) { |
(...skipping 19 matching lines...) Expand all Loading... |
50 | 67 |
51 function stepDownExplicitBounds(min, max, step, value, stepCount) { | 68 function stepDownExplicitBounds(min, max, step, value, stepCount) { |
52 setInputAttributes(min, max, step, value); | 69 setInputAttributes(min, max, step, value); |
53 if (typeof stepCount !== 'undefined') | 70 if (typeof stepCount !== 'undefined') |
54 input.stepDown(stepCount); | 71 input.stepDown(stepCount); |
55 else | 72 else |
56 input.stepDown(); | 73 input.stepDown(); |
57 return input.value; | 74 return input.value; |
58 } | 75 } |
59 | 76 |
60 input.type = 'range'; | 77 createRangeElement(); |
61 debug('function arguments are (min, max, step, value, [stepCount])'); | 78 debug('function arguments are (min, max, step, value, [stepCount])'); |
62 debug('Using the default values'); | 79 debug('Using the default values'); |
63 shouldBe('stepUpExplicitBounds(null, null, null, "")', '"51"'); | 80 shouldBeEqualToString('stepUpExplicitBounds(null, null, null, "")', '51'); |
64 shouldBe('stepDownExplicitBounds(null, null, null, "")', '"49"'); | 81 shouldBeEqualToString('stepDownExplicitBounds(null, null, null, "")', '49'); |
65 debug('Non-number arguments (stepCount)'); | 82 debug('Non-number arguments (stepCount)'); |
66 shouldBe('stepUpExplicitBounds(null, null, null, "0", "0")', '"0"'); | 83 shouldBeEqualToString('stepUpExplicitBounds(null, null, null, "0", "0")', '0'); |
67 shouldBe('stepDownExplicitBounds(null, null, null, "0", "0")', '"0"'); | 84 shouldBeEqualToString('stepDownExplicitBounds(null, null, null, "0", "0")', '0')
; |
68 shouldBe('stepUpExplicitBounds(null, null, null, "0", "foo")', '"0"'); | 85 shouldBeEqualToString('stepUpExplicitBounds(null, null, null, "0", "foo")', '0')
; |
69 shouldBe('stepDownExplicitBounds(null, null, null, "0", "foo")', '"0"'); | 86 shouldBeEqualToString('stepDownExplicitBounds(null, null, null, "0", "foo")', '0
'); |
70 shouldBe('stepUpExplicitBounds(null, null, null, "0", null)', '"0"'); | 87 shouldBeEqualToString('stepUpExplicitBounds(null, null, null, "0", null)', '0'); |
71 shouldBe('stepDownExplicitBounds(null, null, null, "0", null)', '"0"'); | 88 shouldBeEqualToString('stepDownExplicitBounds(null, null, null, "0", null)', '0'
); |
72 debug('Normal cases'); | 89 debug('Normal cases'); |
73 shouldBe('stepUpExplicitBounds(null, null, null, "0")', '"1"'); | 90 shouldBeEqualToString('stepUpExplicitBounds(null, null, null, "0")', '1'); |
74 shouldBe('stepUpExplicitBounds(null, null, null, "1", 2)', '"3"'); | 91 shouldBeEqualToString('stepUpExplicitBounds(null, null, null, "1", 2)', '3'); |
75 shouldBe('stepUpExplicitBounds(null, null, null, "3", -1)', '"2"'); | 92 shouldBeEqualToString('stepUpExplicitBounds(null, null, null, "3", -1)', '2'); |
76 shouldBe('stepDownExplicitBounds("-100", null, null, "2")', '"1"'); | 93 shouldBeEqualToString('stepDownExplicitBounds("-100", null, null, "2")', '1'); |
77 shouldBe('stepDownExplicitBounds("-100", null, null, "1", 2)', '"-1"'); | 94 shouldBeEqualToString('stepDownExplicitBounds("-100", null, null, "1", 2)', '-1'
); |
78 shouldBe('stepDownExplicitBounds("-100", null, null, "-1", -1)', '"0"'); | 95 shouldBeEqualToString('stepDownExplicitBounds("-100", null, null, "-1", -1)', '0
'); |
79 debug('Extra arguments'); | 96 debug('Extra arguments'); |
80 shouldBe('setInputAttributes(null, null, null, "0"); input.stepUp(1,2); input.va
lue', '"1"'); | 97 shouldBeEqualToString('setInputAttributes(null, null, null, "0"); input.stepUp(1
,2); input.value', '1'); |
81 shouldBe('setInputAttributes(null, null, null, "1"); input.stepDown(1,3); input.
value', '"0"'); | 98 shouldBeEqualToString('setInputAttributes(null, null, null, "1"); input.stepDown
(1,3); input.value', '0'); |
82 debug('Invalid step value'); | 99 debug('Invalid step value'); |
83 shouldBe('stepUpExplicitBounds(null, null, "foo", "0")', '"1"'); | 100 shouldBeEqualToString('stepUpExplicitBounds(null, null, "foo", "0")', '1'); |
84 shouldBe('stepUpExplicitBounds(null, null, "0", "1")', '"2"'); | 101 shouldBeEqualToString('stepUpExplicitBounds(null, null, "0", "1")', '2'); |
85 shouldBe('stepUpExplicitBounds(null, null, "-1", "2")', '"3"'); | 102 shouldBeEqualToString('stepUpExplicitBounds(null, null, "-1", "2")', '3'); |
86 shouldBe('stepDownExplicitBounds(null, null, "foo", "1")', '"0"'); | 103 shouldBeEqualToString('stepDownExplicitBounds(null, null, "foo", "1")', '0'); |
87 shouldBe('stepDownExplicitBounds(null, null, "0", "2")', '"1"'); | 104 shouldBeEqualToString('stepDownExplicitBounds(null, null, "0", "2")', '1'); |
88 shouldBe('stepDownExplicitBounds(null, null, "-1", "3")', '"2"'); | 105 shouldBeEqualToString('stepDownExplicitBounds(null, null, "-1", "3")', '2'); |
| 106 debug('Step bases'); |
| 107 shouldBeEqualToString('createInputWithContentAttributes(0, 100, "20", "50"); inp
ut.value', '60'); |
| 108 shouldBeEqualToString('createInputWithContentAttributes(null, null, "50", "25");
input.value', '25'); |
| 109 shouldBeEqualToString('createInputWithContentAttributes(null, null, "50", "25");
input.stepUp(1); input.value', '75'); |
| 110 shouldBeEqualToString('createInputWithContentAttributes(null, null, "50", "25");
input.stepUp(1); input.stepDown(1); input.value', '25'); |
| 111 // FIXME: these shouldn't throw according to the spec; commented-out version giv
e its expected outcomes. |
| 112 shouldThrow('createInputWithContentAttributes(null, null, "50", "25"); input.ste
pUp(2); input.stepDown(2);'); |
| 113 shouldThrow('createInputWithContentAttributes(null, null, "7", "22"); input.step
Up(40);'); |
| 114 //shouldBeEqualToString('createInputWithContentAttributes(null, null, "50", "25"
); input.stepUp(2); input.stepDown(2); input.value', '25'); |
| 115 //shouldBeEqualToString('createInputWithContentAttributes(null, null, "7", "22")
; input.stepUp(40); input.value', '99'); |
| 116 |
| 117 // Reset 'input' for follow-on tests. |
| 118 createRangeElement(); |
89 debug('Step=any'); | 119 debug('Step=any'); |
90 shouldThrow('stepUpExplicitBounds(null, null, "any", "1")'); | 120 shouldThrow('stepUpExplicitBounds(null, null, "any", "1")'); |
91 shouldThrow('stepDownExplicitBounds(null, null, "any", "1")'); | 121 shouldThrow('stepDownExplicitBounds(null, null, "any", "1")'); |
92 debug('Overflow/underflow'); | 122 debug('Overflow/underflow'); |
93 shouldBe('stepUpExplicitBounds(null, "100", "1", "99")', '"100"'); | 123 shouldBeEqualToString('stepUpExplicitBounds(null, "100", "1", "99")', '100'); |
94 shouldThrow('stepUpExplicitBounds(null, "100", "1", "100")'); | 124 shouldThrow('stepUpExplicitBounds(null, "100", "1", "100")'); |
95 shouldBe('input.value', '"100"'); | 125 shouldBeEqualToString('input.value', '100'); |
96 shouldThrow('stepUpExplicitBounds(null, "100", "1", "99", "2")'); | 126 shouldThrow('stepUpExplicitBounds(null, "100", "1", "99", "2")'); |
97 shouldBe('input.value', '"99"'); | 127 shouldBeEqualToString('input.value', '99'); |
98 shouldBe('stepDownExplicitBounds("0", null, "1", "1")', '"0"'); | 128 shouldBeEqualToString('stepDownExplicitBounds("0", null, "1", "1")', '0'); |
99 shouldThrow('stepDownExplicitBounds("0", null, "1", "0")'); | 129 shouldThrow('stepDownExplicitBounds("0", null, "1", "0")'); |
100 shouldBe('input.value', '"0"'); | 130 shouldBeEqualToString('input.value', '0'); |
101 shouldThrow('stepDownExplicitBounds("0", null, "1", "1", "2")'); | 131 shouldThrow('stepDownExplicitBounds("0", null, "1", "1", "2")'); |
102 shouldBe('input.value', '"1"'); | 132 shouldBeEqualToString('input.value', '1'); |
103 shouldThrow('stepDownExplicitBounds(null, null, "3.40282346e+38", "1", "2")'); | 133 shouldThrow('stepDownExplicitBounds(null, null, "3.40282346e+38", "1", "2")'); |
104 shouldBe('stepUpExplicitBounds(-100, 0, 1, -1)', '"0"'); | 134 shouldBeEqualToString('stepUpExplicitBounds(-100, 0, 1, -1)', '0'); |
105 shouldThrow('stepUpExplicitBounds(null, 0, 1, 0)'); | 135 shouldThrow('stepUpExplicitBounds(null, 0, 1, 0)'); |
106 shouldThrow('stepUpExplicitBounds(-100, 0, 1, -1, 2)'); | 136 shouldThrow('stepUpExplicitBounds(-100, 0, 1, -1, 2)'); |
107 shouldBe('input.value', '"-1"'); | 137 shouldBeEqualToString('input.value', '-1'); |
108 shouldThrow('stepUpExplicitBounds(null, null, "3.40282346e+38", "1", "2")'); | 138 shouldThrow('stepUpExplicitBounds(null, null, "3.40282346e+38", "1", "2")'); |
109 debug('stepDown()/stepUp() for stepMismatch values'); | 139 debug('stepDown()/stepUp() for stepMismatch values'); |
110 shouldBe('stepUpExplicitBounds(null, null, 2, 1)', '"4"'); | 140 shouldBeEqualToString('stepUpExplicitBounds(null, null, 2, 1)', '4'); |
111 shouldBe('input.stepDown(); input.value', '"2"'); | 141 shouldBeEqualToString('input.stepDown(); input.value', '2'); |
112 shouldBe('stepUpExplicitBounds(0, null, 10, 9, 9)', '"100"'); | 142 shouldBeEqualToString('stepUpExplicitBounds(0, null, 10, 9, 9)', '100'); |
113 shouldBe('stepDownExplicitBounds(0, null, 10, 19)', '"10"'); | 143 shouldBeEqualToString('stepDownExplicitBounds(0, null, 10, 19)', '10'); |
114 debug('value + step is <= max, but rounded result would be > max.'); | 144 debug('value + step is <= max, but rounded result would be > max.'); |
115 shouldThrow('stepUpExplicitBounds(null, 99, 10, 89)'); | 145 shouldThrow('stepUpExplicitBounds(null, 99, 10, 89)'); |
116 debug('Huge value and small step'); | 146 debug('Huge value and small step'); |
117 shouldBe('stepUpExplicitBounds(0, 1e38, 1, 1e38, 999999)', '"1e+38"'); | 147 shouldBeEqualToString('stepUpExplicitBounds(0, 1e38, 1, 1e38, 999999)', '1e+38')
; |
118 shouldBe('stepDownExplicitBounds(0, 1e38, 1, 1e38, 999999)', '"1e+38"'); | 148 shouldBeEqualToString('stepDownExplicitBounds(0, 1e38, 1, 1e38, 999999)', '1e+38
'); |
119 debug('Fractional numbers'); | 149 debug('Fractional numbers'); |
120 shouldBe('stepUpExplicitBounds(null, null, 0.33333333333333333, 0, 3)', '"1"'); | 150 shouldBeEqualToString('stepUpExplicitBounds(null, null, 0.33333333333333333, 0,
3)', '1'); |
121 shouldBe('stepUpExplicitBounds(null, null, 0.1, 1)', '"1.1"'); | 151 shouldBeEqualToString('stepUpExplicitBounds(null, null, 0.1, 1)', '1.1'); |
122 shouldBe('stepUpExplicitBounds(null, null, 0.1, 1, 8)', '"1.8"'); | 152 shouldBeEqualToString('stepUpExplicitBounds(null, null, 0.1, 1, 8)', '1.8'); |
123 shouldBe('stepUpExplicitBounds(null, null, 0.1, 1, 10)', '"2"'); | 153 shouldBeEqualToString('stepUpExplicitBounds(null, null, 0.1, 1, 10)', '2'); |
124 shouldBe('input.stepUp(); input.stepUp(); input.stepUp(); input.stepUp(); input.
stepUp(); input.stepUp(); input.stepUp(); input.stepUp(); input.stepUp(); input.
stepUp(); input.value', '"3"'); | 154 shouldBeEqualToString('input.stepUp(); input.stepUp(); input.stepUp(); input.ste
pUp(); input.stepUp(); input.stepUp(); input.stepUp(); input.stepUp(); input.ste
pUp(); input.stepUp(); input.value', '3'); |
125 shouldBe('stepUpExplicitBounds(0, 1, 0.003921568627450980, 0, 255)', '"1"'); | 155 shouldBeEqualToString('stepUpExplicitBounds(0, 1, 0.003921568627450980, 0, 255)'
, '1'); |
126 shouldBe('for (var i = 0; i < 255; i++) { input.stepDown(); }; input.value', '"0
"'); | 156 shouldBeEqualToString('for (var i = 0; i < 255; i++) { input.stepDown(); }; inpu
t.value', '0'); |
127 shouldBe('stepDownExplicitBounds(null, null, 0.1, 1, 8)', '"0.2"'); | 157 shouldBeEqualToString('stepDownExplicitBounds(null, null, 0.1, 1, 8)', '0.2'); |
128 shouldBe('stepDownExplicitBounds(null, null, 0.1, 1)', '"0.9"'); | 158 shouldBeEqualToString('stepDownExplicitBounds(null, null, 0.1, 1)', '0.9'); |
129 </script> | 159 </script> |
130 </body> | 160 </body> |
131 </html> | 161 </html> |
OLD | NEW |