summaryrefslogtreecommitdiff
path: root/deno2/js/mock_runtime.js
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-06-11 20:18:56 +0200
committerRyan Dahl <ry@tinyclouds.org>2018-06-11 20:18:56 +0200
commit482fc3a2ce6ef6c3064486b2a8c3ddc51950a4c5 (patch)
treed5676905c9f2c9c6f56388b04eb876a15b8dd622 /deno2/js/mock_runtime.js
parent2443f7efee9c04f9331743a5e7ca5c71396f2004 (diff)
Add tests for deno_sub_cb.
Diffstat (limited to 'deno2/js/mock_runtime.js')
-rw-r--r--deno2/js/mock_runtime.js30
1 files changed, 27 insertions, 3 deletions
diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js
index b3ec7f034..97688a08d 100644
--- a/deno2/js/mock_runtime.js
+++ b/deno2/js/mock_runtime.js
@@ -1,18 +1,42 @@
// A simple runtime that doesn't involve typescript or protobufs to test
// libdeno.
const window = eval("this");
-window['foo'] = () => {
+window["foo"] = () => {
deno_print("Hello world from foo");
return "foo";
-}
+};
function assert(cond) {
if (!cond) throw Error("mock_runtime.js assert failed");
}
function subabc() {
- deno_sub((msg) => {
+ deno_sub(msg => {
assert(msg instanceof ArrayBuffer);
assert(msg.byteLength === 3);
});
}
+
+function typedArrayToArrayBuffer(ta) {
+ return ta.buffer.slice(ta.byteOffset, ta.byteOffset + ta.byteLength);
+}
+
+function pubReturnEmpty() {
+ const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0)));
+ const ab = typedArrayToArrayBuffer(ui8);
+ let r = deno_pub(ab);
+ assert(r == null);
+ r = deno_pub(ab);
+ assert(r == null);
+}
+
+function pubReturnBar() {
+ const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0)));
+ const ab = typedArrayToArrayBuffer(ui8);
+ const r = deno_pub(ab);
+ assert(r instanceof ArrayBuffer);
+ assert(r.byteLength === 3);
+ const rui8 = new Uint8Array(r);
+ const rstr = String.fromCharCode(...rui8);
+ assert(rstr === "bar");
+}