Browse Source

Add specs for web workers.

Cheng Zhao 10 years ago
parent
commit
d81a34d3dd

+ 18 - 0
spec/chromium-spec.coffee

@@ -75,3 +75,21 @@ describe 'chromium feature', ->
       return if process.platform is 'linux'
       webgl = document.createElement('canvas').getContext 'webgl'
       assert.notEqual webgl, null
+
+  describe 'web workers', ->
+    it 'Worker can work', (done) ->
+      worker = new Worker('../fixtures/workers/worker.js')
+      message = 'ping'
+      worker.onmessage = (event) ->
+        assert.equal event.data, message
+        worker.terminate()
+        done()
+      worker.postMessage message
+
+    it 'SharedWorker can work', (done) ->
+      worker = new SharedWorker('../fixtures/workers/shared_worker.js')
+      message = 'ping'
+      worker.port.onmessage = (event) ->
+        assert.equal event.data, message
+        done()
+      worker.port.postMessage message

+ 7 - 0
spec/fixtures/workers/shared_worker.js

@@ -0,0 +1,7 @@
+onconnect = function(event) {
+  var port = event.ports[0];
+  port.start();
+  port.onmessage = function(event) {
+    port.postMessage(event.data);
+  }
+}

+ 3 - 0
spec/fixtures/workers/worker.js

@@ -0,0 +1,3 @@
+this.onmessage = function(msg) {
+  this.postMessage(msg.data);
+}