summaryrefslogtreecommitdiff
path: root/deno2/js/mock_runtime.js
diff options
context:
space:
mode:
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");
+}