Skip to content

Commit cbf397d

Browse files
committed
change all worker_transfer tests to use structuredClone for realistic test; note that jsdom Blob does not work with node native structuredClone so that one line is disabled
1 parent 7667d80 commit cbf397d

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

src/util/web_worker_transfer.test.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe('web worker transfer', () => {
1717
constructor(n) {
1818
this.n = n;
1919
this.buffer = new ArrayBuffer(100);
20-
this.blob = new Blob();
20+
this.blob = new Blob(['Test'], {type: 'application/text'});
2121
this.squared();
2222
}
2323

@@ -34,15 +34,20 @@ describe('web worker transfer', () => {
3434

3535
const serializableMock = new SerializableMock(10);
3636
const transferables = [];
37-
const deserialized = deserialize(serialize(serializableMock, transferables)) as SerializableMock;
38-
expect(deserialize(serialize(serializableMock, transferables)) instanceof SerializableMock).toBeTruthy();
39-
37+
const deserialized = mockTransfer(serializableMock, transferables) as SerializableMock;
38+
expect(deserialized instanceof SerializableMock).toBeTruthy();
39+
expect(transferables[0] === serializableMock.buffer).toBeTruthy();
40+
expect(serializableMock.buffer.byteLength).toBe(0);
41+
expect(deserialized.buffer.byteLength).toBe(100);
4042
expect(serializableMock !== deserialized).toBeTruthy();
4143
expect(deserialized.constructor === SerializableMock).toBeTruthy();
4244
expect(deserialized.n === 10).toBeTruthy();
43-
expect(deserialized.buffer === serializableMock.buffer).toBeTruthy();
44-
expect(deserialized.blob === serializableMock.blob).toBeTruthy();
45-
expect(transferables[0] === serializableMock.buffer).toBeTruthy();
45+
expect(serializableMock.blob.size).toBe(4);
46+
// seems to be a problem with jsdom + node. it works in
47+
// node and it works in browsers
48+
// expect(structuredClone(new Blob())).toBeInstanceOf(Blob);
49+
// expect(deserialized.blob.size).toBe(4);
50+
4651
expect(deserialized._cached === undefined).toBeTruthy();
4752
expect(deserialized.squared() === 100).toBeTruthy();
4853
});
@@ -52,7 +57,7 @@ describe('web worker transfer', () => {
5257
expect(!Klass.name).toBeTruthy();
5358
register('Anon', Klass);
5459
const x = new Klass();
55-
const deserialized = deserialize(serialize(x));
60+
const deserialized = mockTransfer(x);
5661
expect(deserialized instanceof Klass).toBeTruthy();
5762
});
5863

@@ -81,8 +86,8 @@ describe('web worker transfer', () => {
8186
const customSerialization = new CustomSerialization('a');
8287
expect(!customSerialization._deserialized).toBeTruthy();
8388

84-
const deserialized = deserialize(serialize(customSerialization)) as CustomSerialization;
85-
expect(deserialize(serialize(customSerialization)) instanceof CustomSerialization).toBeTruthy();
89+
const deserialized = mockTransfer(customSerialization) as CustomSerialization;
90+
expect(mockTransfer(customSerialization) instanceof CustomSerialization).toBeTruthy();
8691
expect(deserialized.id).toBe(customSerialization.id);
8792
expect(deserialized._deserialized).toBeTruthy();
8893
});

0 commit comments

Comments
 (0)