tizen beta release
[framework/web/webkit-efl.git] / LayoutTests / fast / forms / script-tests / input-valueasnumber-number.js
1 description('Tests for .valueAsNumber with <input type=number>.');
2
3 var input = document.createElement('input');
4 input.type = 'number';
5
6 function valueAsNumberFor(stringValue) {
7     input.value = stringValue;
8     return input.valueAsNumber;
9 }
10
11 function setValueAsNumberAndGetValue(num) {
12     input.valueAsNumber = num;
13     return input.value;
14 }
15
16 shouldBe('valueAsNumberFor("0")', '0');
17 shouldBe('valueAsNumberFor("0.2")', '0.2');
18 shouldBe('valueAsNumberFor(".2")', '0.2');
19 shouldBe('valueAsNumberFor("10")', '10');
20 shouldBe('valueAsNumberFor("01")', '1');
21 shouldBe('valueAsNumberFor("-0")', '0'); // "-0" is 0 in HTML5.
22 shouldBe('valueAsNumberFor("-1.2")', '-1.2');
23 shouldBe('valueAsNumberFor("1.2E10")', '1.2E10');
24 shouldBe('valueAsNumberFor("1.2E-10")', '1.2E-10');
25 shouldBe('valueAsNumberFor("1.2E+10")', '1.2E10');
26 shouldBe('valueAsNumberFor("123456789012345678901234567890123456789")', '1.2345678901234568E+38');
27 shouldBe('valueAsNumberFor("0.12345678901234567890123456789012345678901234567890")', '0.123456789012345678');
28
29 debug('valueAsNumber for invalid string values:');
30 shouldBeTrue('isNaN(valueAsNumberFor(""))');
31 shouldBeTrue('isNaN(valueAsNumberFor("abc"))');
32 shouldBeTrue('isNaN(valueAsNumberFor("0xff"))');
33 shouldBeTrue('isNaN(valueAsNumberFor("+1"))');
34 shouldBeTrue('isNaN(valueAsNumberFor(" 10"))');
35 shouldBeTrue('isNaN(valueAsNumberFor("10 "))');
36 shouldBeTrue('isNaN(valueAsNumberFor("."))');
37 shouldBeTrue('isNaN(valueAsNumberFor("1E"))');
38 shouldBeTrue('isNaN(valueAsNumberFor("NaN"))');
39 shouldBeTrue('isNaN(valueAsNumberFor("nan"))');
40 shouldBeTrue('isNaN(valueAsNumberFor("Inf"))');
41 shouldBeTrue('isNaN(valueAsNumberFor("inf"))');
42 shouldBeTrue('isNaN(valueAsNumberFor("Infinity"))');
43 shouldBeTrue('isNaN(valueAsNumberFor("infinity"))');
44
45 debug('Too huge exponent to support');
46 shouldBeTrue('isNaN(valueAsNumberFor("1.2E65535"))');
47
48 debug('Tests for the valueAsNumber setter:');
49 shouldBe('setValueAsNumberAndGetValue(0)', '"0"');
50 shouldBe('setValueAsNumberAndGetValue(10)', '"10"');
51 shouldBe('setValueAsNumberAndGetValue(01)', '"1"');
52 shouldBe('setValueAsNumberAndGetValue(-0)', '"0"');
53 shouldBe('setValueAsNumberAndGetValue(-1.2)', '"-1.2"');
54 shouldBe('setValueAsNumberAndGetValue(1.2e10)', '"12000000000"');
55 shouldBe('setValueAsNumberAndGetValue(1.2e-10)', '"1.2e-10"');
56 shouldBe('setValueAsNumberAndGetValue(1.2345678901234567e+38)', '"1.2345678901234567e+38"');
57 shouldBe('setValueAsNumberAndGetValue("-3.40282346e+38")', '"-3.40282346e+38"');
58 shouldThrow('setValueAsNumberAndGetValue("-3.40282348e+38")', '"Error: INVALID_STATE_ERR: DOM Exception 11"');
59 shouldBe('setValueAsNumberAndGetValue("3.40282346e+38")', '"3.40282346e+38"');
60 shouldThrow('setValueAsNumberAndGetValue("3.40282348e+38")', '"Error: INVALID_STATE_ERR: DOM Exception 11"');
61
62 debug('Tests to set invalid values to valueAsNumber:');
63 shouldBe('setValueAsNumberAndGetValue(null)', '"0"');
64 shouldThrow('setValueAsNumberAndGetValue("foo")', '"Error: NOT_SUPPORTED_ERR: DOM Exception 9"');
65 shouldThrow('setValueAsNumberAndGetValue(NaN)', '"Error: NOT_SUPPORTED_ERR: DOM Exception 9"');
66 shouldThrow('setValueAsNumberAndGetValue(Number.NaN)', '"Error: NOT_SUPPORTED_ERR: DOM Exception 9"');
67 shouldThrow('setValueAsNumberAndGetValue(Infinity)', '"Error: NOT_SUPPORTED_ERR: DOM Exception 9"');
68 shouldThrow('setValueAsNumberAndGetValue(Number.POSITIVE_INFINITY)', '"Error: NOT_SUPPORTED_ERR: DOM Exception 9"');
69 shouldThrow('setValueAsNumberAndGetValue(Number.NEGATIVE_INFINITY)', '"Error: NOT_SUPPORTED_ERR: DOM Exception 9"');