64a033fd6a166e0dc90aa19e246f6f1541b17d4d
[test/tct/web/api.git] /
1 <!DOCTYPE html>
2 <meta charset="utf-8">
3 <title>The constraint validation API Test: element.validity.valueMissing</title>
4 <link rel="author" title="Intel" href="http://www.intel.com/">
5 <link rel="help" href="http://www.w3.org/html/wg/drafts/html/master/forms.html#dom-validitystate-valuemissing">
6 <link rel="help" href="http://www.w3.org/html/wg/drafts/html/master/forms.html#the-constraint-validation-api">
7 <script src="../../../../resources/testharness.js"></script>
8 <script src="../../../../resources/testharnessreport.js"></script>
9 <script src="support/validator.js"></script>
10 <div id="log"></div>
11 <script>
12   var testElements = [
13     {
14       tag: "input",
15       types: ["text", "search", "tel", "url", "email", "password"],
16       testData: [
17         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
18         {conditions: {required: true, value: "abc"}, expected: false, name: "[target] The value is not empty and required is true"},
19         {conditions: {required: true, value: ""}, expected: true, name: "[target] The value is empty and required is true"}
20       ]
21     },
22     {
23       tag: "input",
24       types: ["datetime"],
25       testData: [
26         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
27         {conditions: {required: true, value: "2000-12-10T12:00:00Z"}, expected: false, name: "[target] Valid global date and time string(2000-12-10T12:00:00Z)"},
28         {conditions: {required: true, value: "2000-12-10 12:00Z"}, expected: false, name: "[target] Valid global date and time string(2000-12-10 12:00Z)"},
29         {conditions: {required: true, value: "1979-10-14T12:00:00.001-04:00"}, expected: false, name: "[target] Valid global date and time string(1979-10-14T12:00:00.001-04:00)"},
30         {conditions: {required: true, value: "8592-01-01T02:09+02:09"}, expected: false, name: "[target] Valid global date and time string(8592-01-01T02:09+02:09)"},
31         {conditions: {required: true, value: 1234567}, expected: true, name: "[target] The value attribute is a number(1234567)"},
32         {conditions: {required: true, value: new Date()}, expected: true, name: "[target] The value attribute is a Date object"},
33         {conditions: {required: true, value: "1979-10-99 99:99Z"}, expected: true, name: "[target] Invalid global date and time string(1979-10-99 99:99Z)"},
34         {conditions: {required: true, value: "1979-10-14 12:00:00"}, expected: true, name: "[target] Invalid global date and time string(1979-10-14 12:00:00)"},
35         {conditions: {required: true, value: "2001-12-21  12:00Z"}, expected: true, name: "[target] Invalid global date and time string(2001-12-21  12:00Z)-two white space"},
36         {conditions: {required: true, value: "abc"}, expected: true, name: "[target] the value attribute is a string(abc)"},
37         {conditions: {required: true, value: ""}, expected: true, name: "[target] The value attribute is empty string"}
38       ]
39     },
40     {
41       tag: "input",
42       types: ["date"],
43       testData: [
44         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
45         {conditions: {required: true, value: "2000-12-10"}, expected: false, name: "[target] Valid date string(2000-12-10)"},
46         {conditions: {required: true, value: "9999-01-01"}, expected: false, name: "[target] Valid date string(9999-01-01)"},
47         {conditions: {required: true, value: 1234567}, expected: true, name: "[target] The value attribute is a number(1234567)"},
48         {conditions: {required: true, value: new Date()}, expected: true, name: "[target] The value attribute is a Date object"},
49         {conditions: {required: true, value: "9999-99-99"}, expected: true, name: "[target] Invalid date string(9999-99-99)"},
50         {conditions: {required: true, value: "37/01/01"}, expected: true, name: "[target] Invalid date string(37-01-01)"},
51         {conditions: {required: true, value: "2000/01/01"}, expected: true, name: "[target] Invalid date string(2000/01/01)"},
52         {conditions: {required: true, value: ""}, expected: true, name: "[target] The value attribute is empty string"}
53       ]
54     },
55     {
56       tag: "input",
57       types: ["month"],
58       testData: [
59         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
60         {conditions: {required: true, value: "2000-12"}, expected: false, name: "[target] Valid month string(2000-12)"},
61         {conditions: {required: true, value: "9999-01"}, expected: false, name: "[target] Valid month string(9999-01)"},
62         {conditions: {required: true, value: 1234567}, expected: true, name: "[target] The value attribute is a number(1234567)"},
63         {conditions: {required: true, value: new Date()}, expected: true, name: "[target] The value attribute is a Date object"},
64         {conditions: {required: true, value: "2000-99"}, expected: true, name: "[target] Invalid month string(2000-99)"},
65         {conditions: {required: true, value: "37-01"}, expected: true, name: "[target] Invalid month string(37-01)"},
66         {conditions: {required: true, value: "2000/01"}, expected: true, name: "[target] Invalid month string(2000/01)"},
67         {conditions: {required: true, value: ""}, expected: true, name: "[target] The value attribute is empty string"}
68       ]
69     },
70     {
71       tag: "input",
72       types: ["week"],
73       testData: [
74         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
75         {conditions: {required: true, value: "2000-W12"}, expected: false, name: "[target] Valid week string(2000-W12)"},
76         {conditions: {required: true, value: "9999-W01"}, expected: false, name: "[target] Valid week string(9999-W01)"},
77         {conditions: {required: true, value: 1234567}, expected: true, name: "[target] The value attribute is a number(1234567)"},
78         {conditions: {required: true, value: new Date()}, expected: true, name: "[target] The value attribute is a Date object"},
79         {conditions: {required: true, value: "2000-W99"}, expected: true, name: "[target] Invalid week string(2000-W99)"},
80         {conditions: {required: true, value: "2000-W00"}, expected: true, name: "[target] invalid week string(2000-W00)"},
81         {conditions: {required: true, value: "2000-w01"}, expected: true, name: "[target] invalid week string(2000-w01)"},
82         {conditions: {required: true, value: ""}, expected: true, name: "[target] The value attribute is empty string"}
83       ]
84     },
85     {
86       tag: "input",
87       types: ["time"],
88       testData: [
89         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
90         {conditions: {required: true, value: "12:00:00"}, expected: false, name: "[target] Validtime string(12:00:00)"},
91         {conditions: {required: true, value: "12:00"}, expected: false, name: "[target] Validtime string(12:00)"},
92         {conditions: {required: true, value: "12:00:00.001"}, expected: false, name: "[target] Valid time string(12:00:60.001)"},
93         {conditions: {required: true, value: "12:00:00.01"}, expected: false, name: "[target] Valid time string(12:00:60.01)"},
94         {conditions: {required: true, value: "12:00:00.1"}, expected: false, name: "[target] Valid time string(12:00:60.1)"},
95         {conditions: {required: true, value: 1234567}, expected: true, name: "[target] The value attribute is a number(1234567)"},
96         {conditions: {required: true, value: new Date()}, expected: true, name: "[target] The value attribute is a time object"},
97         {conditions: {required: true, value: "25:00:00"}, expected: true, name: "[target] Invalid time string(25:00:00)"},
98         {conditions: {required: true, value: "12:60:00"}, expected: true, name: "[target] Invalid time string(12:60:00)"},
99         {conditions: {required: true, value: "12:00:60"}, expected: true, name: "[target] Invalid time string(12:00:60)"},
100         {conditions: {required: true, value: "12:00:00:001"}, expected: true, name: "[target] Invalid time string(12:00:00:001)"},
101         {conditions: {required: true, value: ""}, expected: true, name: "[target] The value attribute is empty string"}
102       ]
103     },
104     {
105       tag: "input",
106       types: ["number"],
107       testData: [
108         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
109         {conditions: {required: true, value: "123"}, expected: false, name: "[target] Value is an integer with a leading symbol '+'"},
110         {conditions: {required: true, value: "-123.45"}, expected: false, name: "[target] Value is a number with a '-' symbol"},
111         {conditions: {required: true, value: "123.01e-10"}, expected: false, name: "[target] Value is a number in scientific notation form(e is in lowercase)"},
112         {conditions: {required: true, value: "123.01E+10"}, expected: false, name: "[target] Value is a number in scientific notation form(E is in uppercase)"},
113         {conditions: {required: true, value: "-0"}, expected: false, name: "[target] Value is -0"},
114         {conditions: {required: true, value: " 123 "}, expected: true, name: "[target] Value is a number with some white spaces"},
115         {conditions: {required: true, value: Math.pow(2, 1024)}, expected: true, name: "[target] Value is Math.pow(2, 1024)"},
116         {conditions: {required: true, value: Math.pow(-2, 1024)}, expected: true, name: "[target] Value is Math.pow(-2, 1024)"},
117         {conditions: {required: true, value: "abc"}, expected: true, name: "[target] Value is a string that can not be coverted to a number"},
118         {conditions: {required: true, value: ""}, expected: true, name: "[target] The value attribute is empty string"}
119       ]
120     },
121     {
122       tag: "input",
123       types: ["checkbox", "radio"],
124       testData: [
125         {conditions: {required: false, checked: false, name: "test1"}, expected: false, name: "[target] The required attribute is not set"},
126         {conditions: {required: true, checked: true, name: "test1"}, expected: false, name: "[target] The checked attribute is true"},
127         {conditions: {required: true, checked: false, name: "test1"}, expected: true, name: "[target] The checked attribute is false"}
128       ]
129     },
130     {
131       tag: "input",
132       types: ["file"],
133       testData: [
134         {conditions: {required: false, files: null}, expected: false, name: "[target] The required attribute is not set"},
135         {conditions: {required: true, files: null}, expected: true, name: "[target] The Files attribute is null"}
136         //ToDo: Add a case to test the files is not null
137       ]
138     },
139     {
140       tag: "select",
141       types: [],
142       testData: [
143         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
144         {conditions: {required: true, value: 1}, expected: false, name: "[target] Selected the option with value equals to 1"},
145         {conditions: {required: true, value: ""}, expected: true, name: "[target] Selected the option with value equals to empty"}
146       ]
147     },
148     {
149       tag: "textarea",
150       types: [],
151       testData: [
152         {conditions: {required: false, value: ""}, expected: false, name: "[target] The required attribute is not set"},
153         {conditions: {required: true, value: "abc"}, expected: false, name: "[target] The value is not empty"},
154         {conditions: {required: true, value: ""}, expected: true  , name: "[target] The value is empty"}
155       ]
156     }
157   ];
158
159   validator.run_test(testElements, "valueMissing");
160 </script>