UNPKG

deno-vm

Version:

A VM module that provides a secure runtime environment via Deno.

95 lines (78 loc) 2.16 kB
import { assertEquals, assert, assertThrows, } from 'https://deno.land/std/testing/asserts.ts'; import { MessageChannel } from './MessageChannel.ts'; import { MessageEvent } from './MessageTarget.ts'; Deno.test( 'MessageChannel messages sent on port1 should end up on port2', () => { const channel = new MessageChannel(); let event: MessageEvent | null = null; channel.port2.onmessage = (e) => { event = e; }; channel.port1.postMessage({ hello: 'world', }); assertEquals(event, { data: { hello: 'world', }, }); } ); Deno.test( 'MessageChannel messages sent on port2 should end up on port1', () => { const channel = new MessageChannel(); let event: MessageEvent | null = null; channel.port1.onmessage = (e) => { event = e; }; channel.port2.postMessage({ hello: 'world', }); assertEquals(event, { data: { hello: 'world', }, }); } ); Deno.test('MessageChannel should create ports with a string channel ID', () => { const channel = new MessageChannel(); assertEquals(typeof channel.port1.channelID, 'string'); }); Deno.test( 'MessageChannel should be able to transfer() a MessagePort to take control of the serialization', () => { const channel = new MessageChannel(); let sent = [] as any[]; const recieveMessage = channel.port1.transfer((data, list) => { sent.push([data, list]); }); channel.port2.postMessage({ hello: 'world', }); assertEquals(sent, [ [ { hello: 'world', }, undefined, ], ]); let event: MessageEvent | null = null; channel.port2.onmessage = (e) => { event = e; }; recieveMessage({ wow: true, }); assertEquals(event, { data: { wow: true }, }); } );