-
Notifications
You must be signed in to change notification settings - Fork 22
/
serialize.test.ts
79 lines (73 loc) · 1.88 KB
/
serialize.test.ts
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import { assertEquals } from "https://deno.land/std@0.122.0/testing/asserts.ts";
import Long from "../Long.ts";
import { WireMessage, WireType } from "./index.ts";
import serialize, { concat } from "./serialize.ts";
Deno.test("serialize", () => {
const varint: WireMessage = [[1, {
type: WireType.Varint,
value: new Long(150),
}]];
assertEquals(serialize(varint), new Uint8Array([0x08, 0x96, 0x01]));
const fixed64: WireMessage = [[2, {
type: WireType.Fixed64,
value: Long.parse("12345678999"),
}]];
assertEquals(
serialize(fixed64),
concat([
new Uint8Array([0x11]),
new Uint8Array(new Uint32Array(Long.parse("12345678999")).buffer),
]),
);
const lengthDelimited: WireMessage = [[3, {
type: WireType.LengthDelimited,
value: new Uint8Array(1),
}]];
assertEquals(serialize(lengthDelimited), new Uint8Array([0x1A, 0x01, 0x00]));
const lengthDelimitedString: WireMessage = [[3, {
type: WireType.LengthDelimited,
value: new TextEncoder().encode("testing"),
}]];
assertEquals(
serialize(lengthDelimitedString),
new Uint8Array([0x1A, 0x07, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67]),
);
const fixed32: WireMessage = [[4, {
type: WireType.Fixed32,
value: 123456789, // 0x075BCD15
}]];
assertEquals(
serialize(fixed32),
new Uint8Array([0x25, 0x15, 0xCD, 0x5B, 0x07]),
);
const longMessage: WireMessage = [[1, {
type: WireType.LengthDelimited,
value: new Uint8Array(1),
}], [2, {
type: WireType.Varint,
value: new Long(150),
}], [3, {
type: WireType.LengthDelimited,
value: new TextEncoder().encode("testing"),
}]];
assertEquals(
serialize(longMessage),
new Uint8Array([
0x0A,
0x01,
0x00,
0x10,
0x96,
0x01,
0x1A,
0x07,
0x74,
0x65,
0x73,
0x74,
0x69,
0x6e,
0x67,
]),
);
});