]> git.pond.sub.org Git - eow/blob - static/dojo-release-1.1.1/dijit/tests/i18n/test_i18n.js
Comment class stub
[eow] / static / dojo-release-1.1.1 / dijit / tests / i18n / test_i18n.js
1 var validateValues = [];
2 var formatWidgetCount = 0;
3 var validateWidgetCount = 0;
4
5 function getElementsById(id){
6         var result = [];        
7
8         if(!id || typeof(id) != "string"){
9                 return result;
10         }
11
12         var ae = document.getElementsByTagName(dojo.byId(id).tagName);
13         for(var i = 0; i < ae.length; i++){
14                 if(ae[i].id == id){
15                         result.push(ae[i]);
16                 }
17         }
18         return result;
19 }
20
21 function getString(n){
22         return n && n.toString();
23 }
24
25 function startTest(t){
26         startTestFormat(t);
27         startTestValidate(t);
28 }
29
30 function escapeEx(s){
31         var result = "";
32         for(var i = 0; i < s.length; i++){
33                 var c = s.charAt(i);
34                 switch (c){
35                         case '"':
36                                 result += '\\"';
37                                 break;
38                         case "'":
39                                 result += "\\'";
40                                 break;
41                         default:
42                                 result += escape(c);
43                                 break;
44                 }
45         }
46         return result;
47 }
48
49 function getAllTestCases(){
50         var allTestCases = [];
51         for(var i = 0; i < formatWidgetCount; i++){
52                 allTestCases.push({
53                         name: "format-" + i,
54                         runTest: new Function("t", "startTestFormat(" + i + ", t)")
55                 });
56         }
57         for(var i = 0; i < validateWidgetCount; i++){
58                 allTestCases.push({
59                         name: "validate-" + i,
60                         runTest: new Function("t", "startTestValidate(" + i + ", t)")
61                 });
62         }
63         return allTestCases;
64 }
65
66 function startTestFormat(i, t){
67         var test_node = dojo.doc.getElementById("test_display_" + i);
68         var exp = dojo.doc.getElementById("test_display_expected_" + i).value;
69         var res_node = dojo.doc.getElementById("test_display_result_" + i);
70         res_node.innerHTML = test_node.value;
71         res_node.style.backgroundColor = (test_node.value == exp) ? "#AFA" : "#FAA";
72         res_node.innerHTML += " <a style='font-size:0.8em' href='javascript:alert(\"Expected: " + escapeEx(exp) + "\\n Result: " + escapeEx(test_node.value) + "\")'>Compare (Escaped)</a>";
73         t.is(exp, test_node.value);
74 }
75
76 function startTestValidate(i, t){
77         /*
78          * The dijit.byNode has an issue: cannot handle same id.
79          */
80         var test_node = dojo.doc.getElementById("test_validate_" + i);
81         var inp_node = dojo.doc.getElementById("test_validate_input_" + i);
82         var exp = dojo.doc.getElementById("test_validate_expected_" + i).innerHTML;
83         var res_node = dojo.doc.getElementById("test_validate_result_" + i);
84         var val_node = dojo.doc.getElementById("test_display_value_" + i);
85
86         test_node.value = inp_node.value;
87         /*
88          * The dijit.byNode has an issue.
89          */
90         var widget = null;
91         var node = test_node;
92         while ((widget = dijit.byNode(node)) == null){
93                 node = node.parentNode;
94                 if(!node){
95                         break;
96                 }
97         }
98
99         if(widget){
100                 widget.focus();
101
102                 var expected = validateValues[i];
103                 var result = widget.getValue();
104                 if(validateValues[i].processValue){
105                         expected = validateValues[i].processValue(expected);
106                         result = validateValues[i].processValue(result);
107                 }
108                 var parseCorrect = getString(expected) == getString(result);
109                 val_node.style.backgroundColor = parseCorrect ?  "#AFA" : "#FAA";
110                 val_node.innerHTML = getString(result) + (parseCorrect ? "" : "<br>Expected: " + getString(expected));
111
112                 res_node.innerHTML = widget.isValid && !widget.isValid() ? "Wrong" : "Correct";
113                 res_node.style.backgroundColor = res_node.innerHTML == exp ? "#AFA" : "#FAA";
114
115                 t.is(getString(expected), getString(result));
116         }
117 }
118
119 function genFormatTestCase(desc, dojoType, dojoAttrs, value, expValue, comment){
120         dojo.doc.write("<tr>");
121         dojo.doc.write("<td>" + desc + "</td>");
122         dojo.doc.write("<td>");
123         dojo.doc.write("<input id='test_display_" + formatWidgetCount + "' type='text' value='" + value + "' ");
124         dojo.doc.write("dojoType='" + dojoType + "' ");
125         for(var attr in dojoAttrs){
126                 dojo.doc.write(attr + "=\"" + dojoAttrs[attr] + "\" ");
127         }
128         dojo.doc.write("/>");
129         dojo.doc.write("</td>");
130         dojo.doc.write("<td><input id='test_display_expected_" + formatWidgetCount + "' value='" + expValue + "'></td>");
131         dojo.doc.write("<td id='test_display_result_" + formatWidgetCount + "'></td>");
132         dojo.doc.write("<td style='white-space:normal'>" + comment + "</td>");
133         dojo.doc.write("</tr>");
134         formatWidgetCount++;
135 }
136 /*
137 [
138         {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:"-123456789.46", expValue: "", comment: ""},
139         ...
140 ]
141 */
142 function genFormatTestCases(title, dojoType, testCases){
143         dojo.doc.write("<h2 class=testTitle>" + title + "</h2>");
144         dojo.doc.write("<table border=1>");
145         dojo.doc.write("<tr>");
146         dojo.doc.write("<td class=title><b>Test Description</b></td>");
147         dojo.doc.write("<td class=title><b>Test</b></td>");
148         dojo.doc.write("<td class=title><b>Expected</b></td>");
149         dojo.doc.write("<td class=title><b>Result</b></td>");
150         dojo.doc.write("<td class=title><b>Comment</b></td>");
151         dojo.doc.write("</tr>");
152
153         for(var i = 0; i < testCases.length; i++){
154                 var testCase = testCases[i];
155                 genFormatTestCase(testCase.desc, dojoType, testCase.attrs, testCase.value, testCase.expValue, testCase.comment);
156         }
157
158         dojo.doc.write("</table>");
159 }
160
161 function genValidateTestCase(desc, dojoType, dojoAttrs, input, value, comment, isWrong){
162         dojo.doc.write("<tr>");
163         dojo.doc.write("<td>" + desc + "</td>");
164         dojo.doc.write("<td>");
165         dojo.doc.write("<input id='test_validate_" + validateWidgetCount + "' type='text' ");
166         dojo.doc.write("dojoType='" + dojoType + "' ");
167         for(var attr in dojoAttrs){
168                 dojo.doc.write(attr + "=\"" + dojoAttrs[attr] + "\" ");
169         }
170         dojo.doc.write("/>");
171         dojo.doc.write("</td>");
172         dojo.doc.write("<td><input id='test_validate_input_" + validateWidgetCount + "' value='" + input + "'></td>");
173         dojo.doc.write("<td id='test_display_value_" + validateWidgetCount + "'></td>");
174         dojo.doc.write("<td id='test_validate_expected_" + validateWidgetCount + "'>" + (isWrong ? "Wrong" : "Correct") + "</td>");
175         dojo.doc.write("<td id='test_validate_result_" + validateWidgetCount + "'></td>");
176         dojo.doc.write("<td style='white-space:normal'>" + comment + "</td>");
177         dojo.doc.write("</tr>");
178         validateValues.push(value);
179         validateWidgetCount++;
180 }
181 /*
182 [
183         {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:false, expValue: "-123456789.46", comment: ""},
184         ...
185 ]
186 */
187 function genValidateTestCases(title, dojoType, testCases){
188         dojo.doc.write("<h2 class=testTitle>" + title + "</h2>");
189         dojo.doc.write("<table border=1>");
190         dojo.doc.write("<tr>");
191         dojo.doc.write("<td class=title><b>Test Description</b></td>");
192         dojo.doc.write("<td class=title><b>Test</b></td>");
193         dojo.doc.write("<td class=title><b>Input</b></td>");
194         dojo.doc.write("<td class=title><b>Parsed Value</b></td>");
195         dojo.doc.write("<td class=title><b>Expected</b></td>");
196         dojo.doc.write("<td class=title><b>Result</b></td>");
197         dojo.doc.write("<td class=title><b>Comment</b></td>");
198         dojo.doc.write("</tr>");
199
200         for(var i = 0; i < testCases.length; i++){
201                 var testCase = testCases[i];
202                 genValidateTestCase(testCase.desc, dojoType, testCase.attrs, testCase.expValue, testCase.value, testCase.comment, testCase.isWrong);
203         }
204
205         dojo.doc.write("</table>");
206 }