40 lines
1.6 KiB
JavaScript
40 lines
1.6 KiB
JavaScript
|
/* globals Worker, location */
|
||
|
|
||
|
describe('Worker', function () {
|
||
|
var workerErrorEventToError = function (errorEvent) {
|
||
|
var errorText = 'Error in Worker';
|
||
|
if (errorEvent.filename !== undefined) {
|
||
|
errorText += ' ' + errorEvent.filename;
|
||
|
}
|
||
|
if (errorEvent.lineno !== undefined) {
|
||
|
errorText += '(' + errorEvent.lineno + ')';
|
||
|
}
|
||
|
if (errorEvent.message !== undefined) {
|
||
|
errorText += ': ' + errorEvent.message;
|
||
|
}
|
||
|
return new Error(errorText);
|
||
|
};
|
||
|
var canRunWorkerTestInCurrentContext = function () {
|
||
|
var workerConstructorExists = typeof Worker !== 'undefined';
|
||
|
var locationPropertyExists = typeof location !== 'undefined';
|
||
|
var runningOnFileUriScheme = locationPropertyExists && location.protocol === 'file:';
|
||
|
|
||
|
// The Worker constructor doesn't exist in some older browsers nor does it exist in non-browser contexts like Node.
|
||
|
// Additionally some browsers (at least Chrome) don't allow Workers over file URIs.
|
||
|
// To prevent false negative test failures in the cases where Workers are unavailable for either of those reasons
|
||
|
// we skip this test.
|
||
|
return workerConstructorExists && !runningOnFileUriScheme;
|
||
|
};
|
||
|
|
||
|
if (canRunWorkerTestInCurrentContext()) {
|
||
|
it('can import es6-shim', function (done) {
|
||
|
var worker = new Worker('worker-runner.workerjs');
|
||
|
worker.addEventListener('error', function (errorEvent) { throw workerErrorEventToError(errorEvent); });
|
||
|
worker.addEventListener('message', function (messageEvent) {
|
||
|
expect(messageEvent.data).to.eql('ready');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
});
|