mirror of
https://github.com/denoland/deno.git
synced 2024-12-29 10:39:10 -05:00
ec8e9d4f5b
This is a quick first refactoring to split the tests out of runtime and move runtime-related code to a top-level runtime module. There will be a followup to refactor imports a bit, but this is the major change that will most likely conflict with other work and I want to merge it early.
74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
|
"use strict";
|
|
|
|
function assert(cond) {
|
|
if (!cond) {
|
|
throw Error("assert");
|
|
}
|
|
}
|
|
|
|
function assertArrayEquals(a1, a2) {
|
|
if (a1.length !== a2.length) throw Error("assert");
|
|
|
|
for (const index in a1) {
|
|
if (a1[index] !== a2[index]) {
|
|
throw Error(`assert: (index ${index}) ${a1[index]} !== ${a2[index]}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
function main() {
|
|
const emptyString = "";
|
|
const emptyStringSerialized = [255, 15, 34, 0];
|
|
assertArrayEquals(
|
|
Deno.core.ops.op_serialize(emptyString),
|
|
emptyStringSerialized,
|
|
);
|
|
assert(
|
|
Deno.core.ops.op_deserialize(
|
|
new Uint8Array(emptyStringSerialized),
|
|
) ===
|
|
emptyString,
|
|
);
|
|
|
|
const primitiveValueArray = ["test", "a", null, undefined];
|
|
// deno-fmt-ignore
|
|
const primitiveValueArraySerialized = [
|
|
255, 15, 65, 4, 34, 4, 116, 101, 115, 116,
|
|
34, 1, 97, 48, 95, 36, 0, 4,
|
|
];
|
|
assertArrayEquals(
|
|
Deno.core.ops.op_serialize(primitiveValueArray),
|
|
primitiveValueArraySerialized,
|
|
);
|
|
|
|
assertArrayEquals(
|
|
Deno.core.ops.op_deserialize(
|
|
new Uint8Array(primitiveValueArraySerialized),
|
|
),
|
|
primitiveValueArray,
|
|
);
|
|
|
|
const circularObject = { test: null, test2: "dd", test3: "aa" };
|
|
circularObject.test = circularObject;
|
|
// deno-fmt-ignore
|
|
const circularObjectSerialized = [
|
|
255, 15, 111, 34, 4, 116, 101, 115,
|
|
116, 94, 0, 34, 5, 116, 101, 115,
|
|
116, 50, 34, 2, 100, 100, 34, 5,
|
|
116, 101, 115, 116, 51, 34, 2, 97,
|
|
97, 123, 3,
|
|
];
|
|
|
|
assertArrayEquals(
|
|
Deno.core.ops.op_serialize(circularObject),
|
|
circularObjectSerialized,
|
|
);
|
|
|
|
const deserializedCircularObject = Deno.core.ops.op_deserialize(
|
|
new Uint8Array(circularObjectSerialized),
|
|
);
|
|
assert(deserializedCircularObject.test == deserializedCircularObject);
|
|
}
|
|
|
|
main();
|