123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- 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>");
- }
|