summaryrefslogtreecommitdiff
path: root/core/encode_decode_test.js
blob: 294144593bdf1f89d5301647a82872fee1fa4114 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.

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");
    }
  }
}

function main() {
  // prettier-ignore
  const fixture1 = [
    0xf0, 0x9d, 0x93, 0xbd,
    0xf0, 0x9d, 0x93, 0xae,
    0xf0, 0x9d, 0x94, 0x81,
    0xf0, 0x9d, 0x93, 0xbd
  ];
  // prettier-ignore
  const fixture2 = [ 
    72, 101, 108, 108, 
    111, 32, 239, 191, 
    189, 239, 191, 189, 
    32, 87, 111, 114, 
    108, 100 
  ];

  const empty = Deno.core.encode("");
  if (empty.length !== 0) throw new Error("assert");

  assertArrayEquals(Array.from(Deno.core.encode("𝓽𝓮𝔁𝓽")), fixture1);
  assertArrayEquals(
    Array.from(Deno.core.encode("Hello \udc12\ud834 World")),
    fixture2
  );

  const emptyBuf = Deno.core.decode(new Uint8Array(0));
  if (emptyBuf !== "") throw new Error("assert");

  assert(Deno.core.decode(new Uint8Array(fixture1)) === "𝓽𝓮𝔁𝓽");
  assert(Deno.core.decode(new Uint8Array(fixture2)) === "Hello �� World");
}

main();