a_linalg_{Tnn,Tmn}->{T1,T2}
[liba.git] / javascript / test / crc.js
blob0c743f90fc15a3eb908128c816c78a826d3c66df
1 #!/usr/bin/env node
2 const liba = require("../liba");
3 function assert(expr) {
4     if (!eval(expr)) {
5         throw Error(expr);
6     }
8 function do_leak_check() {
9     for (const arg of arguments) {
10         arg.delete();
11     }
12     if (liba.do_leak_check) {
13         liba.do_leak_check();
14     }
16 var text = "0123456789";
17 var crc = new liba.crc8(0x07);
18 assert("crc.eval(text, 0) == 0x45");
19 assert("crc.eval(crc.pack(text, 0), 0) == 0");
20 do_leak_check(crc);
21 var crc = new liba.crc8(0x31, true);
22 assert("crc.eval(text, 0) == 0x75");
23 assert("crc.eval(crc.pack(text, 0), 0) == 0");
24 do_leak_check(crc);
25 var crc = new liba.crc16(0x1021);
26 assert("crc.eval(text, 0) == 0x9C58");
27 assert("crc.eval(crc.pack(text, 0), 0) == 0");
28 do_leak_check(crc);
29 var crc = new liba.crc16(0x8005, true);
30 assert("crc.eval(text, 0) == 0x443D");
31 assert("crc.eval(crc.pack(text, 0), 0) == 0");
32 do_leak_check(crc);
33 var crc = new liba.crc32(0x1EDC6F41);
34 assert("crc.eval(text, 0) == 0x512B456E");
35 assert("crc.eval(crc.pack(text, 0), 0) == 0");
36 do_leak_check(crc);
37 var crc = new liba.crc32(0x04C11DB7, true);
38 assert("crc.eval(text, 0) == 0x450EAFB0");
39 assert("crc.eval(crc.pack(text, 0), 0) == 0");
40 do_leak_check(crc);
41 if (liba.crc64) {
42     var crc = new liba.crc64(0x000000000000001Bn);
43     assert("crc.eval(text, 0n) == 0xE4FFBEA588AFC790n");
44     assert("crc.eval(crc.pack(text, 0n), 0n) == 0n");
45     do_leak_check(crc);
46     var crc = new liba.crc64(0x42F0E1EBA9EA3693n, true);
47     assert("crc.eval(text, 0n) == 0xDA60676A5CDE0008n");
48     assert("crc.eval(crc.pack(text, 0n), 0n) == 0n");
49     do_leak_check(crc);