You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
5.3 KiB
191 lines
5.3 KiB
// TODO: FIXME: Refactor this to use D.O.H. instead of its own assertions |
|
|
|
dojo.require("dojox.flash"); |
|
|
|
var flashLoaded = false; |
|
var pageLoaded = false; |
|
var testXML = testBook = null; |
|
|
|
function flashReady(){ |
|
console.debug("flashReady"); |
|
if (flashLoaded) { |
|
return; // prevent double loads |
|
} |
|
|
|
flashLoaded = true; |
|
|
|
if(isReady()){ |
|
run(); |
|
} |
|
} |
|
|
|
function pageReady(){ |
|
console.debug("pageReady"); |
|
if (pageLoaded) { |
|
return; // prevent double loads |
|
} |
|
|
|
pageLoaded = true; |
|
|
|
loadResources(); |
|
|
|
if(isReady()){ |
|
run(); |
|
} |
|
} |
|
|
|
function isReady(){ |
|
return testXML && testBook && pageLoaded && flashLoaded; |
|
} |
|
|
|
function loadResources(){ |
|
console.debug("Trying to load resources"); |
|
|
|
var d = dojo.xhrGet({ |
|
url: "../../storage/tests/resources/testXML.xml", |
|
handleAs: "text" |
|
}); |
|
|
|
d.addCallback(function(results){ |
|
console.debug("testXML loaded"); |
|
testXML = results; |
|
if(isReady()){ |
|
run(); |
|
} |
|
}); |
|
|
|
d.addErrback(function(error){ |
|
console.debug("Unable to load testXML.xml: " + error); |
|
}); |
|
|
|
d = dojo.xhrGet({ |
|
url: "../../storage/tests/resources/testBook.txt", |
|
handleAs: "text" |
|
}); |
|
|
|
d.addCallback(function(results){ |
|
console.debug("testBook loaded"); |
|
testBook = results; |
|
if(isReady()){ |
|
run(); |
|
} |
|
}); |
|
|
|
d.addErrback(function(error){ |
|
console.debug("Unable to load testXML.xml: " + error); |
|
}); |
|
} |
|
|
|
function run(){ |
|
console.debug("run"); |
|
try{ |
|
var correct, actual; |
|
|
|
console.debug("Setting simple message..."); |
|
correct = "hello world"; |
|
dojox.flash.comm.setMessage(correct); |
|
actual = dojox.flash.comm.getMessage(); |
|
assert(correct, actual, "Setting/getting simple message did not work"); |
|
chop(correct); |
|
|
|
console.debug("Setting message with evil characters..."); |
|
// our correct and actual values get tricky when we have double back |
|
// slashes; do a trick so that they can be compared easier |
|
var doubleSlash = "\\"; |
|
doubleSlash = doubleSlash.charAt(0); |
|
correct = "hello world\n\n\nasdfasdf!@#$@#%^[]{}&<xml>" + doubleSlash |
|
+ "<div>$%^&%^&*^&()<><><>,./;\0\r\f\'][`~=\"+-]\\0MORE!\n\rLESS"; |
|
var putSize = dojox.flash.comm.setMessage(correct); |
|
assert(putSize, correct.length, "Failed putting. Correct length = " |
|
+ correct.length + ", Flash length = " + putSize); |
|
dojox.flash.comm.setMessage(correct); |
|
actual = dojox.flash.comm.getMessage(); |
|
assert(correct, actual, "Setting/getting message with evil characters did not work"); |
|
chop(correct); |
|
|
|
console.debug("Setting testXML..."); |
|
correct = testXML; |
|
dojox.flash.comm.setMessage(correct); |
|
actual = dojox.flash.comm.getMessage(); |
|
assert(correct, actual, "Setting/getting testXML did not work"); |
|
chop(correct); |
|
|
|
console.debug("Setting testBook(~300K)..."); |
|
correct = testBook; |
|
dojox.flash.comm.setMessage(correct); |
|
actual = dojox.flash.comm.getMessage(); |
|
assert(correct, actual, "Setting/getting testBook did not work"); |
|
|
|
console.debug("Setting testBook 3 times (~900K)..."); |
|
correct = testBook + testBook + testBook; |
|
dojox.flash.comm.setMessage(correct); |
|
actual = dojox.flash.comm.getMessage(); |
|
assert(correct, actual, "Setting/getting testBook X 3 did not work"); |
|
|
|
console.debug("Setting JSON..."); |
|
var obj = {type: "car", color: "red", model: "Ford", year: "2008", |
|
features: ["A/C", "automatic", "4-wheel drive"]}; |
|
correct = dojo.toJson(obj, true); |
|
dojox.flash.comm.setMessage(correct); |
|
actual = dojox.flash.comm.getMessage(); |
|
assert(correct, actual, "Setting/getting JSON did not work"); |
|
chop(correct); |
|
|
|
console.debug("Calling method that takes multiple values..."); |
|
actual = dojox.flash.comm.multipleValues("key", "value", "namespace"); |
|
assert("namespacekeyvalue", actual, "Setting/getting multiple values did not work"); |
|
|
|
var allPassed = document.createElement("p"); |
|
allPassed.style.backgroundColor = "green"; |
|
allPassed.style.color = "white"; |
|
allPassed.style.fontSize = "24pt"; |
|
allPassed.appendChild(document.createTextNode("All tests passed")); |
|
var body = document.getElementsByTagName("body")[0]; |
|
body.appendChild(allPassed); |
|
}catch(e){ |
|
console.debug(e.message || e); |
|
} |
|
} |
|
|
|
function chop(testString){ |
|
console.debug("chopping '" + testString + "'"); |
|
for(var i = 0; i < Math.min(testString.length, 100); i++){ |
|
//console.debug("index = " + i); |
|
testSlice(testString, 0, i+1); |
|
} |
|
} |
|
|
|
function testSlice( testString, from, to){ |
|
var putSize = dojox.flash.comm.setMessageSlice( testString, from, to); |
|
var actual = dojox.flash.comm.getMessage(); |
|
var correct = testString.slice(from, to); |
|
|
|
var msg = "Put a string with " + testString.length |
|
+ " chars, but it got with " + putSize + " chars in the Flash layer"; |
|
assert(putSize, testString.length, msg); |
|
|
|
msg = "I got '" + actual + "' instead of '" + correct +"'"; |
|
assert(correct, actual, msg); |
|
} |
|
|
|
function assert(correct, actual, msg){ |
|
//alert("correct="+correct+",\n\nactual="+actual); |
|
if(correct != actual){ |
|
var failed = document.createElement("p"); |
|
failed.style.backgroundColor = "red"; |
|
failed.style.color = "white"; |
|
failed.style.fontSize = "24pt"; |
|
failed.appendChild(document.createTextNode("Test failed: " + msg)); |
|
var body = document.getElementsByTagName("body")[0]; |
|
body.appendChild(failed); |
|
|
|
throw new Error("ASSERTION FAILED: " + msg); |
|
}else{ |
|
//console.debug("Assertion passed"); |
|
} |
|
} |
|
|
|
console.debug("adding listeners..."); |
|
dojox.flash.addLoadedListener(flashReady); |
|
dojox.flash.setSwf("TestFlash.swf", false); |
|
dojo.connect(dojo, "loaded", pageReady); |