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 += " Compare (Escaped)"; 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 ? "" : "
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(""); dojo.doc.write("" + desc + ""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write("" + comment + ""); dojo.doc.write(""); formatWidgetCount++; } /* * [ {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:"-123456789.46", * expValue: "", comment: ""}, ... ] */ function genFormatTestCases(title, dojoType, testCases) { dojo.doc.write("

" + title + "

"); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); 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("
Test DescriptionTestExpectedResultComment
"); } function genValidateTestCase(desc, dojoType, dojoAttrs, input, value, comment, isWrong) { dojo.doc.write(""); dojo.doc.write("" + desc + ""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write("" + (isWrong ? "Wrong" : "Correct") + ""); dojo.doc.write(""); dojo.doc.write("" + comment + ""); dojo.doc.write(""); 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("

" + title + "

"); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); dojo.doc.write(""); 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("
Test DescriptionTestInputParsed ValueExpectedResultComment
"); }