1b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik/* spec tests gl-matrix when embedded into a Web Worker */ 2b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik 3b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik// only test with workers if workers are available 4b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craikif (typeof(Worker) !== 'undefined') { 5b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik describe("Embedded within Web Workers", function() { 6b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik it("should initialize successfully", function() { 7b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik var xhr = new XMLHttpRequest(); 8b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik var source = null; 9b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik xhr.onreadystatechange = function() { 10b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik if (this.readyState == this.DONE) { 11b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik if (this.status == 200) { 12b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik source = this.responseText; 13b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik } 14b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik } 15b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik }; 16b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik xhr.open("GET", "/dist/gl-matrix-min.js"); 17b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik xhr.send(); 18b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik 19b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik var result = null; 20b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik 21b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik waitsFor(function() { 22b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik if (!source) return false; 23b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik var blob = new Blob([ 24b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik source, 25b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik "self.postMessage(vec3.create());" 26b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik ], 27b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik {type: "application/javascript"} 28b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik ); 29b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik 30b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik var worker = new Worker(URL.createObjectURL(blob)); 31b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik worker.onmessage = function(e) { 32b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik result = e.data; 33b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik }; 34b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik return true; 35b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik }); 36b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik 37b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik waitsFor(function() { 38b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik if (!result) return false; 39b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik expect(result).toBeEqualish([0, 0, 0]); 40b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik return true; 41b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik }); 42b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik }); 43b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik }); 44b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik} 45