added test for onload being called, as well as multiple local overlapping calls in async mode
diff --git a/autotest/tests/localXHR.tests.js b/autotest/tests/localXHR.tests.js
index 9b4cd8b..f15d0a5 100644
--- a/autotest/tests/localXHR.tests.js
+++ b/autotest/tests/localXHR.tests.js
@@ -21,92 +21,127 @@
describe("XMLHttpRequest", function () {
- var createXHR = function(url,bAsync,win,lose) {
+ var createXHR = function (url, bAsync, win, lose) {
var xhr = new XMLHttpRequest();
- xhr.open("GET",url,bAsync);
+ xhr.open("GET", url, bAsync);
xhr.onload = win;
xhr.onerror = lose;
xhr.send();
return xhr;
}
- it("XMLHttpRequest.spec.1 should exist", function () {
- expect(window.XMLHttpRequest).toBeDefined();
- expect(window.XMLHttpRequest.UNSENT).toBe(0);
- expect(window.XMLHttpRequest.OPENED).toBe(1);
- expect(window.XMLHttpRequest.HEADERS_RECEIVED).toBe(2);
- expect(window.XMLHttpRequest.LOADING).toBe(3);
- expect(window.XMLHttpRequest.DONE).toBe(4);
- });
+ it("XMLHttpRequest.spec.1 should exist", function () {
+ expect(window.XMLHttpRequest).toBeDefined();
+ expect(window.XMLHttpRequest.UNSENT).toBe(0);
+ expect(window.XMLHttpRequest.OPENED).toBe(1);
+ expect(window.XMLHttpRequest.HEADERS_RECEIVED).toBe(2);
+ expect(window.XMLHttpRequest.LOADING).toBe(3);
+ expect(window.XMLHttpRequest.DONE).toBe(4);
+ });
- it("XMLHttpRequest.spec.2 should be able to create new XHR", function () {
+ it("XMLHttpRequest.spec.2 should be able to create new XHR", function () {
- var xhr = new XMLHttpRequest();
- expect(xhr).toBeDefined();
+ var xhr = new XMLHttpRequest();
+ expect(xhr).toBeDefined();
-// abort
- expect(xhr.abort).toBeDefined();
- expect(typeof xhr.abort == 'function').toBe(true);
+ // abort
+ expect(xhr.abort).toBeDefined();
+ expect(typeof xhr.abort == 'function').toBe(true);
-// getResponseHeader
- expect(xhr.getResponseHeader).toBeDefined();
- expect(typeof xhr.getResponseHeader == 'function').toBe(true);
+ // getResponseHeader
+ expect(xhr.getResponseHeader).toBeDefined();
+ expect(typeof xhr.getResponseHeader == 'function').toBe(true);
-// getAllResponseHeaders
- expect(xhr.getAllResponseHeaders).toBeDefined();
- expect(typeof xhr.getAllResponseHeaders == 'function').toBe(true);
+ // getAllResponseHeaders
+ expect(xhr.getAllResponseHeaders).toBeDefined();
+ expect(typeof xhr.getAllResponseHeaders == 'function').toBe(true);
-// overrideMimeType
- expect(xhr.overrideMimeType).toBeDefined();
- expect(typeof xhr.overrideMimeType == 'function').toBe(true);
- return;
-// open
- expect(xhr.open).toBeDefined();
- expect(typeof xhr.open == 'function').toBe(true);
-// send
- expect(xhr.send).toBeDefined();
- expect(typeof xhr.send == 'function').toBe(true);
-// setRequestHeader
- expect(xhr.setRequestHeader).toBeDefined();
- expect(typeof xhr.setRequestHeader == 'function').toBe(true);
- });
+ // overrideMimeType
+ expect(xhr.overrideMimeType).toBeDefined();
+ expect(typeof xhr.overrideMimeType == 'function').toBe(true);
+ return;
+ // open
+ expect(xhr.open).toBeDefined();
+ expect(typeof xhr.open == 'function').toBe(true);
+ // send
+ expect(xhr.send).toBeDefined();
+ expect(typeof xhr.send == 'function').toBe(true);
+ // setRequestHeader
+ expect(xhr.setRequestHeader).toBeDefined();
+ expect(typeof xhr.setRequestHeader == 'function').toBe(true);
+ });
- it("XMLHttpRequest.spec.2 should be able to load the current page", function () {
- var win = jasmine.createSpy().andCallFake(function (res) {});
- var lose = createDoNotCallSpy('xhrFail');
- var xhr = createXHR("localXHR.html", true, win, lose);
- waitsForAny(win, lose);
+ it("XMLHttpRequest.spec.2 should be able to load the current page", function () {
+ var win = jasmine.createSpy().andCallFake(function (res) {});
+ var lose = createDoNotCallSpy('xhrFail');
+ var xhr = createXHR("localXHR.html", true, win, lose);
+ waitsForAny(win, lose);
- });
+ });
- it("XMLHttpRequest.spec.3 should be able to load the current page", function () {
- var win = jasmine.createSpy().andCallFake(function (res) {});
- var lose = createDoNotCallSpy('xhrFail');
- var xhr = createXHR(window.location.href, true, win, lose);
- waitsForAny(win, lose);
- });
+ it("XMLHttpRequest.spec.9 calls onload from successful http get", function () {
+ var win = jasmine.createSpy().andCallFake(function (res) { });
+ var lose = createDoNotCallSpy('xhrFail');
+ var xhr = createXHR("http://cordova-filetransfer.jitsu.com", true, win, lose);
+ waitsForAny(win, lose);
+ });
- it("XMLHttpRequest.spec.4 should be able to load the parent folder page ../index.html", function () {
- var win = jasmine.createSpy().andCallFake(function (res) {});
- var lose = createDoNotCallSpy('xhrFail');
- var xhr = createXHR("../index.html", true, win, lose);
- waitsForAny(win, lose);
- });
+ it("XMLHttpRequest.spec.3 should be able to load the current page", function () {
+ var win = jasmine.createSpy().andCallFake(function (res) {});
+ var lose = createDoNotCallSpy('xhrFail');
+ var xhr = createXHR(window.location.href, true, win, lose);
+ waitsForAny(win, lose);
+ });
- it("XMLHttpRequest.spec.5 should be able to load the current page ./???.html", function () {
- var win = jasmine.createSpy().andCallFake(function (res) { });
+ it("XMLHttpRequest.spec.4 should be able to load the parent folder page ../index.html", function () {
+ var win = jasmine.createSpy().andCallFake(function (res) {});
+ var lose = createDoNotCallSpy('xhrFail');
+ var xhr = createXHR("../index.html", true, win, lose);
+ waitsForAny(win, lose);
+ });
+
+ it("XMLHttpRequest.spec.5 should be able to load the current page ./???.html", function () {
+ var win = jasmine.createSpy().andCallFake(function (res) { });
+ var lose = createDoNotCallSpy('xhrFail');
+ var fileName = window.location.href.split('#')[0].split('/').pop();
+ var xhr = createXHR("./" + fileName, true, win, lose);
+ waitsForAny(win, lose);
+ });
+
+ it("XMLHttpRequest.spec.6 adds hash-path and loads file okay", function () {
+ window.location = window.location.href + "#asd/asd/asdasd";
+ var win = jasmine.createSpy().andCallFake(function (res) { });
+ var lose = createDoNotCallSpy('xhrFail');
+ var xhr = createXHR(window.location.href, true, win, lose);
+ waitsForAny(win, lose);
+ });
+
+ it("XMLHttpRequest.spec.10 overlapping async calls are not muxed", function () {
+
+ var order = "";
+
+ var winA = jasmine.createSpy("spyWinA").andCallFake(function(){
+ order += "A";
+ });
+ var winB = jasmine.createSpy("spyWinB").andCallFake(function(){
+ order += "B";
+ });
var lose = createDoNotCallSpy('xhrFail');
var fileName = window.location.href.split('#')[0].split('/').pop();
- var xhr = createXHR("./" + fileName, true, win, lose);
- waitsForAny(win, lose);
- });
+ createXHR(fileName, true, winA, lose);
+ createXHR(fileName, false, winB, lose);
- it("XMLHttpRequest.spec.6 adds hash-path and loads file okay", function () {
- window.location = window.location.href + "#asd/asd/asdasd";
- var win = jasmine.createSpy().andCallFake(function (res) { });
- var lose = createDoNotCallSpy('xhrFail');
- var xhr = createXHR(window.location.href, true, win, lose);
- waitsForAny(win, lose);
+ waitsFor(function () {
+ return lose.wasCalled ||
+ (winA.wasCalled && winB.wasCalled);
+ }, "Expecting both callbacks to be called.", Tests.TEST_TIMEOUT);
+
+ runs(function () {
+ expect(lose).not.toHaveBeenCalled();
+ expect(winA).toHaveBeenCalled();
+ expect(winB).toHaveBeenCalled();
+ console.log("order = " + order);
+ });
});