presentations/highlight-js/test/browser/worker.js

50 lines
1.3 KiB
JavaScript

'use strict';
let bluebird = require('bluebird');
let Worker = require('tiny-worker');
let utility = require('../utility');
let glob = bluebird.promisify(require('glob'));
describe('web worker', function() {
before(function() {
// Will match both `highlight.pack.js` and `highlight.min.js`
const filepath = utility.buildPath('..', 'build', 'highlight.*.js');
return glob(filepath).then(hljsPath => {
this.worker = new Worker(function() {
self.onmessage = function(event) {
if (event.data.action === 'importScript') {
importScripts(event.data.script);
postMessage(1);
} else {
var result = self.hljs.highlight('javascript', event.data);
postMessage(result.value);
}
};
});
const done = new Promise(resolve => this.worker.onmessage = resolve);
this.worker.postMessage({
action: 'importScript',
script: hljsPath[0]
});
return done;
});
});
it('should highlight text', function(done) {
this.worker.onmessage = event => {
const actual = event.data;
actual.should.equal(this.expect);
done();
};
this.worker.postMessage(this.text);
});
after(function() {
this.worker.terminate();
});
});