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