aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dijit/tests/i18n/test_i18n.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dijit/tests/i18n/test_i18n.js')
-rw-r--r--includes/js/dijit/tests/i18n/test_i18n.js206
1 files changed, 206 insertions, 0 deletions
diff --git a/includes/js/dijit/tests/i18n/test_i18n.js b/includes/js/dijit/tests/i18n/test_i18n.js
new file mode 100644
index 0000000..bc44e63
--- /dev/null
+++ b/includes/js/dijit/tests/i18n/test_i18n.js
@@ -0,0 +1,206 @@
+var validateValues = [];
+var formatWidgetCount = 0;
+var validateWidgetCount = 0;
+
+function getElementsById(id){
+ var result = [];
+
+ if(!id || typeof(id) != "string"){
+ return result;
+ }
+
+ var ae = document.getElementsByTagName(dojo.byId(id).tagName);
+ for(var i = 0; i < ae.length; i++){
+ if(ae[i].id == id){
+ result.push(ae[i]);
+ }
+ }
+ return result;
+}
+
+function getString(n){
+ return n && n.toString();
+}
+
+function startTest(t){
+ startTestFormat(t);
+ startTestValidate(t);
+}
+
+function escapeEx(s){
+ var result = "";
+ for(var i = 0; i < s.length; i++){
+ var c = s.charAt(i);
+ switch (c){
+ case '"':
+ result += '\\"';
+ break;
+ case "'":
+ result += "\\'";
+ break;
+ default:
+ result += escape(c);
+ break;
+ }
+ }
+ return result;
+}
+
+function getAllTestCases(){
+ var allTestCases = [];
+ for(var i = 0; i < formatWidgetCount; i++){
+ allTestCases.push({
+ name: "format-" + i,
+ runTest: new Function("t", "startTestFormat(" + i + ", t)")
+ });
+ }
+ for(var i = 0; i < validateWidgetCount; i++){
+ allTestCases.push({
+ name: "validate-" + i,
+ runTest: new Function("t", "startTestValidate(" + i + ", t)")
+ });
+ }
+ return allTestCases;
+}
+
+function startTestFormat(i, t){
+ var test_node = dojo.doc.getElementById("test_display_" + i);
+ var exp = dojo.doc.getElementById("test_display_expected_" + i).value;
+ var res_node = dojo.doc.getElementById("test_display_result_" + i);
+ res_node.innerHTML = test_node.value;
+ res_node.style.backgroundColor = (test_node.value == exp) ? "#AFA" : "#FAA";
+ res_node.innerHTML += " <a style='font-size:0.8em' href='javascript:alert(\"Expected: " + escapeEx(exp) + "\\n Result: " + escapeEx(test_node.value) + "\")'>Compare (Escaped)</a>";
+ t.is(exp, test_node.value);
+}
+
+function startTestValidate(i, t){
+ /*
+ * The dijit.byNode has an issue: cannot handle same id.
+ */
+ var test_node = dojo.doc.getElementById("test_validate_" + i);
+ var inp_node = dojo.doc.getElementById("test_validate_input_" + i);
+ var exp = dojo.doc.getElementById("test_validate_expected_" + i).innerHTML;
+ var res_node = dojo.doc.getElementById("test_validate_result_" + i);
+ var val_node = dojo.doc.getElementById("test_display_value_" + i);
+
+ test_node.value = inp_node.value;
+ /*
+ * The dijit.byNode has an issue.
+ */
+ var widget = null;
+ var node = test_node;
+ while ((widget = dijit.byNode(node)) == null){
+ node = node.parentNode;
+ if(!node){
+ break;
+ }
+ }
+
+ if(widget){
+ widget.focus();
+
+ var expected = validateValues[i];
+ var result = widget.getValue();
+ if(validateValues[i].processValue){
+ expected = validateValues[i].processValue(expected);
+ result = validateValues[i].processValue(result);
+ }
+ var parseCorrect = getString(expected) == getString(result);
+ val_node.style.backgroundColor = parseCorrect ? "#AFA" : "#FAA";
+ val_node.innerHTML = getString(result) + (parseCorrect ? "" : "<br>Expected: " + getString(expected));
+
+ res_node.innerHTML = widget.isValid && !widget.isValid() ? "Wrong" : "Correct";
+ res_node.style.backgroundColor = res_node.innerHTML == exp ? "#AFA" : "#FAA";
+
+ t.is(getString(expected), getString(result));
+ }
+}
+
+function genFormatTestCase(desc, dojoType, dojoAttrs, value, expValue, comment){
+ dojo.doc.write("<tr>");
+ dojo.doc.write("<td>" + desc + "</td>");
+ dojo.doc.write("<td>");
+ dojo.doc.write("<input id='test_display_" + formatWidgetCount + "' type='text' value='" + value + "' ");
+ dojo.doc.write("dojoType='" + dojoType + "' ");
+ for(var attr in dojoAttrs){
+ dojo.doc.write(attr + "=\"" + dojoAttrs[attr] + "\" ");
+ }
+ dojo.doc.write("/>");
+ dojo.doc.write("</td>");
+ dojo.doc.write("<td><input id='test_display_expected_" + formatWidgetCount + "' value='" + expValue + "'></td>");
+ dojo.doc.write("<td id='test_display_result_" + formatWidgetCount + "'></td>");
+ dojo.doc.write("<td style='white-space:normal'>" + comment + "</td>");
+ dojo.doc.write("</tr>");
+ formatWidgetCount++;
+}
+/*
+[
+ {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:"-123456789.46", expValue: "", comment: ""},
+ ...
+]
+*/
+function genFormatTestCases(title, dojoType, testCases){
+ dojo.doc.write("<h2 class=testTitle>" + title + "</h2>");
+ dojo.doc.write("<table border=1>");
+ dojo.doc.write("<tr>");
+ dojo.doc.write("<td class=title><b>Test Description</b></td>");
+ dojo.doc.write("<td class=title><b>Test</b></td>");
+ dojo.doc.write("<td class=title><b>Expected</b></td>");
+ dojo.doc.write("<td class=title><b>Result</b></td>");
+ dojo.doc.write("<td class=title><b>Comment</b></td>");
+ dojo.doc.write("</tr>");
+
+ for(var i = 0; i < testCases.length; i++){
+ var testCase = testCases[i];
+ genFormatTestCase(testCase.desc, dojoType, testCase.attrs, testCase.value, testCase.expValue, testCase.comment);
+ }
+
+ dojo.doc.write("</table>");
+}
+
+function genValidateTestCase(desc, dojoType, dojoAttrs, input, value, comment, isWrong){
+ dojo.doc.write("<tr>");
+ dojo.doc.write("<td>" + desc + "</td>");
+ dojo.doc.write("<td>");
+ dojo.doc.write("<input id='test_validate_" + validateWidgetCount + "' type='text' ");
+ dojo.doc.write("dojoType='" + dojoType + "' ");
+ for(var attr in dojoAttrs){
+ dojo.doc.write(attr + "=\"" + dojoAttrs[attr] + "\" ");
+ }
+ dojo.doc.write("/>");
+ dojo.doc.write("</td>");
+ dojo.doc.write("<td><input id='test_validate_input_" + validateWidgetCount + "' value='" + input + "'></td>");
+ dojo.doc.write("<td id='test_display_value_" + validateWidgetCount + "'></td>");
+ dojo.doc.write("<td id='test_validate_expected_" + validateWidgetCount + "'>" + (isWrong ? "Wrong" : "Correct") + "</td>");
+ dojo.doc.write("<td id='test_validate_result_" + validateWidgetCount + "'></td>");
+ dojo.doc.write("<td style='white-space:normal'>" + comment + "</td>");
+ dojo.doc.write("</tr>");
+ validateValues.push(value);
+ validateWidgetCount++;
+}
+/*
+[
+ {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:false, expValue: "-123456789.46", comment: ""},
+ ...
+]
+*/
+function genValidateTestCases(title, dojoType, testCases){
+ dojo.doc.write("<h2 class=testTitle>" + title + "</h2>");
+ dojo.doc.write("<table border=1>");
+ dojo.doc.write("<tr>");
+ dojo.doc.write("<td class=title><b>Test Description</b></td>");
+ dojo.doc.write("<td class=title><b>Test</b></td>");
+ dojo.doc.write("<td class=title><b>Input</b></td>");
+ dojo.doc.write("<td class=title><b>Parsed Value</b></td>");
+ dojo.doc.write("<td class=title><b>Expected</b></td>");
+ dojo.doc.write("<td class=title><b>Result</b></td>");
+ dojo.doc.write("<td class=title><b>Comment</b></td>");
+ dojo.doc.write("</tr>");
+
+ for(var i = 0; i < testCases.length; i++){
+ var testCase = testCases[i];
+ genValidateTestCase(testCase.desc, dojoType, testCase.attrs, testCase.expValue, testCase.value, testCase.comment, testCase.isWrong);
+ }
+
+ dojo.doc.write("</table>");
+}