-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathendian.test.ts
87 lines (82 loc) · 2.21 KB
/
endian.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
80
81
82
83
84
85
86
87
import {
assertEquals,
assertMatch,
assertNotEquals,
assertStrictEquals,
} from '@std/assert';
import {
BIG_ENDIAN,
bigEndian,
dynamicEndian,
Endian,
LITTLE_ENDIAN,
littleEndian,
} from './endian.ts';
import { Struct } from './struct.ts';
const defaultClassProperties = new Set(Object.getOwnPropertyNames(class {}));
Deno.test('BIG_ENDIAN != LITTLE_ENDIAN', () => {
assertNotEquals(BIG_ENDIAN, LITTLE_ENDIAN);
});
Deno.test('dynamicEndian', () => {
const DE = dynamicEndian(Endian);
assertEquals(DE.LITTLE_ENDIAN, null);
assertStrictEquals(dynamicEndian(Endian), DE);
assertEquals(
`${new DE(new ArrayBuffer(0))}`,
'[object DynamicEndian<Endian>]',
);
assertEquals(
`${new (dynamicEndian(Struct))(new ArrayBuffer(0))}`,
'[object DynamicEndian<Struct>]',
);
for (const p of Object.getOwnPropertyNames(DE)) {
if (defaultClassProperties.has(p)) {
continue;
}
const desc = Object.getOwnPropertyDescriptor(DE, p);
assertMatch(p, /^[A-Z][A-Z0-9_]*$/, p);
assertEquals(desc!.writable ?? false, false, p);
}
});
Deno.test('bigEndian', () => {
const BE = bigEndian(Endian);
assertEquals(BE.LITTLE_ENDIAN, false);
assertStrictEquals(bigEndian(Endian), BE);
assertEquals(
`${new BE(new ArrayBuffer(0))}`,
'[object BigEndian<Endian>]',
);
assertEquals(
`${new (bigEndian(Struct))(new ArrayBuffer(0))}`,
'[object BigEndian<Struct>]',
);
for (const p of Object.getOwnPropertyNames(BE)) {
if (defaultClassProperties.has(p)) {
continue;
}
const desc = Object.getOwnPropertyDescriptor(BE, p);
assertMatch(p, /^[A-Z][A-Z0-9_]*$/, p);
assertEquals(desc!.writable ?? false, false, p);
}
});
Deno.test('littleEndian', () => {
const LE = littleEndian(Endian);
assertEquals(LE.LITTLE_ENDIAN, true);
assertStrictEquals(littleEndian(Endian), LE);
assertEquals(
`${new LE(new ArrayBuffer(0))}`,
'[object LittleEndian<Endian>]',
);
assertEquals(
`${new (littleEndian(Struct))(new ArrayBuffer(0))}`,
'[object LittleEndian<Struct>]',
);
for (const p of Object.getOwnPropertyNames(LE)) {
if (defaultClassProperties.has(p)) {
continue;
}
const desc = Object.getOwnPropertyDescriptor(LE, p);
assertMatch(p, /^[A-Z][A-Z0-9_]*$/, p);
assertEquals(desc!.writable ?? false, false, p);
}
});