diff options
Diffstat (limited to 'includes/js/dijit/tests/i18n/test_i18n.js')
-rw-r--r-- | includes/js/dijit/tests/i18n/test_i18n.js | 206 |
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>"); +} |