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("Test Description | ");
dojo.doc.write("Test | ");
dojo.doc.write("Expected | ");
dojo.doc.write("Result | ");
dojo.doc.write("Comment | ");
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("
");
}
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("Test Description | ");
dojo.doc.write("Test | ");
dojo.doc.write("Input | ");
dojo.doc.write("Parsed Value | ");
dojo.doc.write("Expected | ");
dojo.doc.write("Result | ");
dojo.doc.write("Comment | ");
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("
");
}