Skip to content

Commit 7883f54

Browse files
committed
Add some tests
1 parent 69b2714 commit 7883f54

2 files changed

Lines changed: 47 additions & 5 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ queue.addModule('/fetch-worklet.js').then(() => { /* loaded */ })
3535

3636
const task = queue.postTask('fetch', 'https://example.com/data.json');
3737

38-
console.log(task.status); // pending
38+
console.log(task.state); // pending
3939

4040
await sleep(1);
4141

42-
console.log(task.status); // scheduled
42+
console.log(task.state); // scheduled
4343

4444
// now we'll ask for the result back. This bumps up the priority
4545
// of the task and sends its result to the main thread once complete:

test/index.test.js

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,52 @@
1111
* limitations under the License.
1212
*/
1313

14-
import TaskWorklet from '../src/index.mjs';
14+
import TaskQueue from '../src/index.mjs';
1515

16-
describe('TaskWorklet', () => {
16+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
17+
18+
describe('TaskQueue', () => {
1719
it('should pass smoketest', async () => {
18-
expect(TaskWorklet).toBe(expect.any(Function));
20+
expect(typeof TaskQueue).toBe('function');
21+
});
22+
23+
describe('task execution and chaining', () => {
24+
let queue;
25+
26+
it('should be instantiable via a Blob URL', async () => {
27+
queue = new TaskQueue();
28+
await queue.addModule(URL.createObjectURL(new Blob([`
29+
registerTask('add', class {
30+
process(a, b) {
31+
return a + b;
32+
}
33+
})
34+
`])));
35+
});
36+
37+
it('should execute a single task', async () => {
38+
const sum1 = queue.postTask('add', 1, 2);
39+
40+
await sleep(1);
41+
expect(sum1.state).toBe('scheduled');
42+
43+
const result = await sum1.result;
44+
expect(sum1.state).toBe('fulfilled');
45+
expect(result).toBe(3);
46+
});
47+
48+
it('should execute tasks with task dependencies', async () => {
49+
const sum1 = queue.postTask('add', 1, 2);
50+
const sum2 = queue.postTask('add', sum1, 2);
51+
52+
await sleep(1);
53+
expect(sum1.state).toBe('scheduled');
54+
expect(sum2.state).toBe('scheduled');
55+
56+
const result = await sum2.result;
57+
expect(sum1.state).toBe('fulfilled');
58+
expect(sum2.state).toBe('fulfilled');
59+
expect(result).toBe(5);
60+
});
1961
});
2062
});

0 commit comments

Comments
 (0)