'use strict';
const Worker = require('tiny-worker');
const { defaultCase, findLibrary } = require('./test_case')
describe('web worker', function() {
before(async function() {
this.hljsPath = await findLibrary();
this.worker = new Worker(function() {
self.onmessage = function(event) {
if (event.data.action === 'importScript') {
importScripts(event.data.script);
postMessage(1);
} else {
var result = hljs.highlight(event.data, { language: 'javascript' });
postMessage(result.value);
}
};
});
const done = new Promise(resolve => this.worker.onmessage = resolve);
this.worker.postMessage({
action: 'importScript',
script: this.hljsPath
});
return done;
});
it('should highlight text', function(done) {
this.worker.onmessage = event => {
const actual = event.data;
// the " will be encoded since it's not being
// filtered by the browsers innerHTML implementation
const expect = '' +
'var say = ' +
'"Hello";';
actual.should.equal(expect);
done();
};
this.worker.postMessage(defaultCase.code);
});
after(function() {
this.worker.terminate();
});
});