SuperX-Kernmodul
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.

106 lines
3.0 KiB

/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.registerModulePath("tests", "tests");
dojo.require("tests.MockXMLHttpRequest");
dojo.require("dojo.io.*");
var testTimerCalled = false;
var testBindJson = null;
function test_MockXMLHttpRequest(){
if (dojo.hostenv.name_ == 'browser') {
//test basic functionality using dojo.hostenv.getText
//(only test on environments that implement getText with XHR)
var responseText = "this is a test!";
tests.MockXMLHttpRequest.set(responseText, 1000); //simulate a 1 sec response time
dojo.hostenv.getText('urn:this_is_ignored',
function(data) {
jum.assertTrue(data == responseText);
jum.assertTrue(testTimerCalled);
});
tests.MockXMLHttpRequest.restore();
setTimeout(function() { testTimerCalled = true; }, 200);
}
//test dojo.io.bind
tests.MockXMLHttpRequest.set('[10]', 100);
dojo.io.bind({
url: "http://ignore",
method: "get",
mimetype: "text/json",
handle: function(type, data, evt) {
if(type == "load"){
testBindJson = data;
}
}
});
setTimeout(function() { jum.assertTrue('async io completed',
testBindJson && testBindJson[0] == 10);}, 500);
//test abort()
tests.MockXMLHttpRequest.set('test abort', 500);
bindKw = {
url: "http://ignore2",
method: "get",
mimetype: "text/plain" ,
handle: function(type, data, evt) {
jum.assertTrue("bind.abort didn't work", false);
}
}
var request = dojo.io.bind(bindKw);
request.abort();
//test post
tests.MockXMLHttpRequest.set(function(xhr) { return xhr.data; }, 100);
var postData = "test post data";
dojo.io.bind({
url: "http://ignore",
method: "post",
postContent: postData,
mimetype: "text/plain",
handle: function(type, data, evt) {
jum.assertTrue("receive post data", type == "load" && data == postData);
}
});
//test sync
//(note: response time doesn't work with sync)
var testSyncData = '';
dojo.io.bind({
sync: true,
url: "http://ignore",
method: "post",
postContent: postData,
mimetype: "text/plain",
handle: function(type, data, evt) {
if(type == "load"){
testSyncData = data;
} else {
dojo.debug('mock request problem: ' + type + ' ' + dojo.json.serialize(data));
}
}
});
//handle func should be called immediately
jum.assertTrue("test sync", testSyncData == postData);
tests.MockXMLHttpRequest.restore();
//test tests.MockXMLHttpRequest.wrap
var responseText = "this is a test!";
tests.MockXMLHttpRequest.wrap(dj_global, 'wrapMockRequestTest', responseText, 50);
jum.assertFalse( wrapMockRequestTest() );
//the wrapping should only happen once
jum.assertTrue( wrapMockRequestTest() );
}
function wrapMockRequestTest() {
return dojo.hostenv.getXmlhttpObject == tests.MockXMLHttpRequest._originalXmlhttpObjectGetter;
}