node-q
Version:
Q interfacing with Node.js
965 lines (961 loc) • 54.8 kB
JavaScript
var c = require("../lib/c.js"),
typed = require("../lib/typed.js"),
moment = require("moment"),
assert = require("assert"),
Long = require("long");
function hexstr_to_bin(str) {
"use strict";
return new Buffer(str, "hex");
}
function bin_to_hexstr(b) {
"use strict";
return b.toString("hex");
}
// use -8! in q to get the byte representation
describe("c", function() {
"use strict";
describe("deserialize", function() {
describe("little", function() {
describe("primitives", function() {
it("boolean", function() { // 1b
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000ff01")), true);
});
describe("guid", function() {
it("guid", function() { // 0a369037-75d3-b24d-6721-5a1d44d4bed5
assert.equal(c.deserialize(hexstr_to_bin("0100000019000000fe0a36903775d3b24d67215a1d44d4bed5")), "0a369037-75d3-b24d-6721-5a1d44d4bed5");
});
it("null", function() { // 0Ng
assert.equal(c.deserialize(hexstr_to_bin("0100000019000000fe00000000000000000000000000000000")), null);
});
});
it("byte", function() { // 0x01
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000fc01")), "1");
});
describe("short", function() {
it("1", function() { // 1h
assert.equal(c.deserialize(hexstr_to_bin("010000000b000000fb0100")), 1);
});
it("-1", function() { // -1h
assert.equal(c.deserialize(hexstr_to_bin("010000000b000000fbffff")), -1);
});
it("null", function() { // 0Nh
assert.equal(c.deserialize(hexstr_to_bin("010000000b000000fb0080")), null);
});
it("Infinity", function() { // 0wh
assert.equal(c.deserialize(hexstr_to_bin("010000000b000000fbff7f")), Infinity);
});
it("-Infinity", function() { // -0wh
assert.equal(c.deserialize(hexstr_to_bin("010000000b000000fb0180")), -Infinity);
});
});
describe("integer", function() {
it("1", function() { // 1i
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000fa01000000")), 1);
});
it("-1", function() { // -1i
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000faffffffff")), -1);
});
it("null", function() { // 0Ni
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000fa00000080")), null);
});
it("Infinity", function() { // 0wi
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000faffffff7f")), Infinity);
});
it("-Infinity", function() { // -0wi
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000fa01000080")), -Infinity);
});
});
describe("long", function() {
describe("long2number", function() {
describe("default", function() {
it("1", function() { // 1j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000000000000")), 1);
});
it("-1", function() { // -1j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffffffffffff")), -1);
});
it("2147483647", function() { // 2147483647j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffff7f00000000")), 2147483647);
});
it("2147483648", function() { // 2147483648j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000008000000000")), 2147483648);
});
it("2147483649", function() { // 2147483649j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100008000000000")), 2147483649);
});
it("4294967295", function() { // 4294967295j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffff00000000")), 4294967295);
});
it("4294967296", function() { // 4294967296j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000000001000000")), 4294967296);
});
it("4294967297", function() { // 4294967297j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000001000000")), 4294967297);
});
it("null", function() { // 0Nj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000000000000080")), null);
});
it("Infinity", function() { // 0wj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffffffffff7f")), Infinity);
});
it("-Infinity", function() { // -0wj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000000000080")), -Infinity);
});
});
describe("false", function() {
it("1", function() { // 1j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000000000000"), undefined, undefined, undefined, false).toNumber(), 1);
});
it("-1", function() { // -1j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffffffffffff"), undefined, undefined, undefined, false).toNumber(), -1);
});
it("2147483647", function() { // 2147483647j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffff7f00000000"), undefined, undefined, undefined, false).toNumber(), 2147483647);
});
it("2147483648", function() { // 2147483648j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000008000000000"), undefined, undefined, undefined, false).toNumber(), 2147483648);
});
it("2147483649", function() { // 2147483649j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100008000000000"), undefined, undefined, undefined, false).toNumber(), 2147483649);
});
it("4294967295", function() { // 4294967295j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffff00000000"), undefined, undefined, undefined, false).toNumber(), 4294967295);
});
it("4294967296", function() { // 4294967296j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000000001000000"), undefined, undefined, undefined, false).toNumber(), 4294967296);
});
it("4294967297", function() { // 4294967297j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000001000000"), undefined, undefined, undefined, false).toNumber(), 4294967297);
});
it("null", function() { // 0Nj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000000000000080"), undefined, undefined, undefined, false), null);
});
it("Infinity", function() { // 0wj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffffffffff7f"), undefined, undefined, undefined, false), Infinity);
});
it("-Infinity", function() { // -0wj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000000000080"), undefined, undefined, undefined, false), -Infinity);
});
});
describe("true", function() {
it("1", function() { // 1j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000000000000"), undefined, undefined, undefined, true), 1);
});
it("-1", function() { // -1j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffffffffffff"), undefined, undefined, undefined, true), -1);
});
it("2147483647", function() { // 2147483647j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffff7f00000000"), undefined, undefined, undefined, true), 2147483647);
});
it("2147483648", function() { // 2147483648j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000008000000000"), undefined, undefined, undefined, true), 2147483648);
});
it("2147483649", function() { // 2147483649j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100008000000000"), undefined, undefined, undefined, true), 2147483649);
});
it("4294967295", function() { // 4294967295j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffff00000000"), undefined, undefined, undefined, true), 4294967295);
});
it("4294967296", function() { // 4294967296j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000000001000000"), undefined, undefined, undefined, true), 4294967296);
});
it("4294967297", function() { // 4294967297j
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000001000000"), undefined, undefined, undefined, true), 4294967297);
});
it("null", function() { // 0Nj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90000000000000080"), undefined, undefined, undefined, true), null);
});
it("Infinity", function() { // 0wj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f9ffffffffffffff7f"), undefined, undefined, undefined, true), Infinity);
});
it("-Infinity", function() { // -0wj
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f90100000000000080"), undefined, undefined, undefined, true), -Infinity);
});
});
});
});
describe("real", function() {
it("1", function() { // 1e
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f80000803f")), 1.0);
});
it("-1", function() { // -1e
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f8000080bf")), -1.0);
});
it("null", function() { // 0Ne
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f80000c0ff")), null);
});
it("Infinity", function() { // 0we
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f80000807f")), Infinity);
});
it("-Infinity", function() { // -0we
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f8000080ff")), -Infinity);
});
});
describe("float", function() {
it("1", function() { // 1f
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f7000000000000f03f")), 1.0);
});
it("-1", function() { // -1f
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f7000000000000f0bf")), -1.0);
});
it("null", function() { // 0Nf
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f7000000000000f8ff")), null);
});
it("Infinity", function() { // 0wf
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f7000000000000f07f")), Infinity);
});
it("-Infinity", function() { // -0wf
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f7000000000000f0ff")), -Infinity);
});
});
describe("char", function() {
describe("emptyChar2null", function() {
describe("default", function() {
it("a", function() { // "a"
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000f661")), "a");
});
it("null", function() { // " "
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000f620")), null);
});
});
describe("true", function() {
it("a", function() { // "a"
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000f661"), undefined, undefined, true), "a");
});
it("null", function() { // " "
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000f620"), undefined, undefined, true), null);
});
});
describe("false", function() {
it("a", function() { // "a"
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000f661"), undefined, undefined, false), "a");
});
it("null", function() { // " "
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000f620"), undefined, undefined, false), " ");
});
});
});
});
describe("symbol", function() {
it("length 1", function() { // `a
assert.equal(c.deserialize(hexstr_to_bin("010000000b000000f56100")), "a");
});
it("null", function() { // `
assert.equal(c.deserialize(hexstr_to_bin("010000000a000000f500")), null);
});
it("length 2", function() { // `ab
assert.equal(c.deserialize(hexstr_to_bin("010000000c000000f5616200")), "ab");
});
it("length 3", function() { // `abc
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f561626300")), "abc");
});
it("length 4", function() { // `abcd
assert.equal(c.deserialize(hexstr_to_bin("010000000e000000f56162636400")), "abcd");
});
it("lenth 5", function() { // `abcde
assert.equal(c.deserialize(hexstr_to_bin("010000000f000000f5616263646500")), "abcde");
});
it("unicode length 1", function() { // `$"你"
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f5e4bda000")), "你");
});
it("unicode length 2", function() { // `$"你好"
assert.equal(c.deserialize(hexstr_to_bin("0100000010000000f5e4bda0e5a5bd00")), "你好");
});
});
describe("nanos2date", function() {
describe("default", function() {
it("deserialize_timestamp_little_test", function() { // 2014.06.23D11:34:39.412547000
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f4b84d1d352d045706")).getTime(), moment.utc("2014.06.23 11:34:39.412547000", "YYYY.MM.DD HH:mm:ss.SSS").toDate().getTime());
});
it("deserialize_timestamp_null_little_test", function() { // 0Np
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f40000000000000080")), null);
});
it("deserialize_timespan_little_test", function() { // 00:01:00.000000000
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f0005847f80d000000")).getTime(), moment.utc("2000.01.01 00:01:00.000", "YYYY.MM.DD HH:mm:ss.SSS").toDate().getTime());
});
it("deserialize_timespan_null_little_test", function() { // 0Nn
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f00000000000000080")), null);
});
});
describe("true", function() {
it("deserialize_timestamp_little_test", function() { // 2014.06.23D11:34:39.412547000
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f4b84d1d352d045706"), true).getTime(), moment.utc("2014.06.23 11:34:39.412547000", "YYYY.MM.DD HH:mm:ss.SSS").toDate().getTime());
});
it("deserialize_timestamp_null_little_test", function() { // 0Np
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f40000000000000080"), true), null);
});
it("deserialize_timespan_little_test", function() { // 00:01:00.000000000
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f0005847f80d000000"), true).getTime(), moment.utc("2000.01.01 00:01:00.000", "YYYY.MM.DD HH:mm:ss.SSS").toDate().getTime());
});
it("deserialize_timespan_null_little_test", function() { // 0Nn
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f00000000000000080"), true), null);
});
});
describe("false", function() {
it("deserialize_timestamp_little_test", function() { // 2014.06.23D11:34:39.412547000
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f4b84d1d352d045706"), false), 1403523279412547000);
});
it("deserialize_timestamp_null_little_test", function() { // 0Np
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f40000000000000080"), false), null);
});
it("deserialize_timespan_little_test", function() { // 00:01:00.000000000
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f0005847f80d000000"), false), 60000000000);
});
it("deserialize_timespan_null_little_test", function() { // 0Nn
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f00000000000000080"), false), null);
});
});
});
describe("month", function() {
it("201401", function() { // 2014.01m
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f3a8000000")).getTime(), moment.utc("2014.01", "YYYY.MM").toDate().getTime());
});
it("null", function() { // 0Nm
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f300000080")), null);
});
it("199501", function() { // 1995.01m
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f3c4ffffff")).getTime(), moment.utc("1995.01", "YYYY.MM").toDate().getTime());
});
});
describe("date", function() {
it("20140101", function() { // 2014.01.01
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f2fa130000")).getTime(), moment.utc("2014.01.91", "YYYY.MM").toDate().getTime());
});
it("null", function() { // 0Nd
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f200000080")), null);
});
it("19950101", function() { // 1995.01.01
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000f2def8ffff")).getTime(), moment.utc("1995.01.01", "YYYY.MM").toDate().getTime());
});
});
describe("datetime", function() {
it("datetime", function() { // 2014.06.23T11:49:31.533
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f1facf4b237ea7b440")).getTime(), moment.utc("2014.06.23 11:49:31.533", "YYYY.MM.DD HH:mm:ss.SSS").toDate().getTime());
});
it("null", function() { // 0Nz
assert.equal(c.deserialize(hexstr_to_bin("0100000011000000f1000000000000f8ff")), null);
});
});
describe("minute", function() {
it("00:01", function() { // 00:01
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000ef01000000")).getTime(), moment.utc("2000.01.01 00:01:00.000", "YYYY.MM.DD HH:mm:ss.SSS").toDate().getTime());
});
it("null", function() { // 0Nu
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000ef00000080")), null);
});
});
describe("second", function() {
it("00:00:01", function() { // 00:00:01
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000ee01000000")).getTime(), moment.utc("2000.01.01 00:00:01.000", "YYYY.MM.DD HH:mm:ss.SSS").toDate().getTime());
});
it("null", function() { // 0Nv
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000ee00000080")), null);
});
});
describe("time", function() {
it("00:00:00.001", function() { // 00:00:00.001
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000ed01000000")).getTime(), moment.utc("2000.01.01 00:00:00.001", "YYYY.MM.DD HH:mm:ss.SSS").toDate().getTime());
});
it("null", function() { // 0Nt
assert.equal(c.deserialize(hexstr_to_bin("010000000d000000ed00000080")), null);
});
});
});
describe("list", function() {
it("empty", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000000e000000000000000000")), []);
});
it("generic", function() { // (1j;1b;3h)
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001c000000000003000000f90100000000000000ff01fb0300")), [1, true, 3]);
});
it("null", function() { // (::;::;::)
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000014000000000003000000650065006500")), [null, null, null]);
});
describe("list of list", function() {
it("same types", function() { // enlist (1f;2f;3f)
assert.deepEqual(c.deserialize(hexstr_to_bin("010000002c000000000001000000090003000000000000000000f03f00000000000000400000000000000840")), [[1, 2, 3]]);
});
it("different types", function() { // enlist (1f;1b;3h)
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000022000000000001000000000003000000f7000000000000f03fff01fb0300")), [[1, true, 3]]);
});
});
describe("boolean", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000000f00000001000100000001")), [true]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000011000000010003000000010001")), [true, false, true]);
});
});
describe("guid", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001e000000020001000000daedb4cc85f44ba0e3083c62191c0865")), ["daedb4cc-85f4-4ba0-e308-3c62191c0865"]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000003e000000020003000000ca3b0039fc23f2892c3769d4a24fe17cc73d1b400fce85c1a78fb653c8c6d022f4f58976d8cad4c10db7d102c6f91025")), ["ca3b0039-fc23-f289-2c37-69d4a24fe17c", "c73d1b40-0fce-85c1-a78f-b653c8c6d022", "f4f58976-d8ca-d4c1-0db7-d102c6f91025"]);
});
});
describe("byte", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000000f00000004000100000001")), [1]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000011000000040003000000010203")), [1, 2, 3]);
});
});
describe("short", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000100000000500010000000100")), [1]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000014000000050003000000010002000300")), [1, 2, 3]);
});
});
describe("int", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001200000006000100000001000000")), [1]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001a000000060003000000010000000200000003000000")), [1, 2, 3]);
});
});
describe("long", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000160000000700010000000100000000000000")), [1]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000026000000070003000000010000000000000002000000000000000300000000000000")), [1, 2, 3]);
});
});
describe("real", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000120000000800010000000000803f")), [1]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001a0000000800030000000000803f0000004000004040")), [1, 2, 3]);
});
});
describe("float", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000016000000090001000000000000000000f03f")), [1]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000026000000090003000000000000000000f03f00000000000000400000000000000840")), [1, 2, 3]);
});
});
describe("char", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000000f0000000a000100000061")), "a");
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000100000000a00020000006162")), "ab");
});
it("unicode", function() { // "你好"
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000140000000a0006000000e4bda0e5a5bd")), "你好");
});
});
describe("symbol", function() {
it("single", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000100000000b00010000006100")), ["a"]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000170000000b0003000000610061620061626300")), ["a", "ab", "abc"]);
});
});
describe("timestamp", function() {
describe("nanos2date", function() {
describe("default", function() {
it("single", function() { // 2014.06.23D11:34:39.412547000
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000160000000c0001000000b84d1d352d045706")), [new Date("2014-06-23T11:34:39.412")]);
});
it("multi", function() { // 2014.06.23D11:34:39.412547000
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000260000000c0003000000b84d1d352d045706b84d5f3c96396006b84df0d493bd6906")), [new Date("2014-06-23T11:34:39.412"), new Date("2014-07-23T11:34:39.412"), new Date("2014-08-23T11:34:39.412")]);
});
});
describe("true", function() {
it("single", function() { // 2014.06.23D11:34:39.412547000
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000160000000c0001000000b84d1d352d045706"), true), [new Date("2014-06-23T11:34:39.412")]);
});
it("multi", function() { // 2014.06.23D11:34:39.412547000
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000260000000c0003000000b84d1d352d045706b84d5f3c96396006b84df0d493bd6906"), true), [new Date("2014-06-23T11:34:39.412"), new Date("2014-07-23T11:34:39.412"), new Date("2014-08-23T11:34:39.412")]);
});
});
describe("false", function() {
it("single", function() { // 2014.06.23D11:34:39.412547000
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000160000000c0001000000b84d1d352d045706"), false), [1403523279412547000]);
});
it("multi", function() { // 2014.06.23D11:34:39.412547000
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000260000000c0003000000b84d1d352d045706b84d5f3c96396006b84df0d493bd6906"), false), [1403523279412547000, 1406115279412547000, 1408793679412547000]);
});
});
});
});
describe("month", function() {
it("single", function() { // 1997.01m
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000120000000d0001000000dcffffff")), [new Date("1997-01-01T00:00:00.000")]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001a0000000d0003000000dcffffffe8fffffff4ffffff")), [new Date("1997-01-01T00:00:00.000"), new Date("1998-01-01T00:00:00.000"), new Date("1999-01-01T00:00:00.000")]);
});
});
describe("date", function() {
it("single", function() { // 1997.01.01
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000120000000e0001000000b9fbffff")), [new Date("1997-01-01T00:00:00.000")]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001a0000000e0003000000b9fbffff26fdffff93feffff")), [new Date("1997-01-01T00:00:00.000"), new Date("1998-01-01T00:00:00.000"), new Date("1999-01-01T00:00:00.000")]);
});
});
describe("datetime", function() {
it("single", function() { // 2001.01.01T00:00:00.000
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000160000000f00010000000000000000e07640")), [new Date("2001-01-01T00:00:00.000")]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000260000000f00030000000000000000e076400000000000d078400000000000907a40")), [new Date("2001-01-01T00:00:00.000"), new Date("2001-02-01T00:00:00.000"), new Date("2001-03-01T00:00:00.000")]);
});
});
describe("timespan", function() {
describe("nanos2date", function() {
describe("default", function() {
it("single", function() { // 00:01:00.000000000
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000016000000100001000000005847f80d000000")), [new Date("2000-01-01T00:01:00.000")]);
});
it("multi", function() { // 00:01:00.000000000
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000026000000100003000000005847f80d00000000b08ef01b0000000008d6e829000000")), [new Date("2000-01-01T00:01:00.000"), new Date("2000-01-01T00:02:00.000"), new Date("2000-01-01T00:03:00.000")]);
});
});
describe("true", function() {
it("single", function() { // 00:01:00.000000000
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000016000000100001000000005847f80d000000"), true), [new Date("2000-01-01T00:01:00.000")]);
});
it("multi", function() { // 00:01:00.000000000
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000026000000100003000000005847f80d00000000b08ef01b0000000008d6e829000000"), true), [new Date("2000-01-01T00:01:00.000"), new Date("2000-01-01T00:02:00.000"), new Date("2000-01-01T00:03:00.000")]);
});
});
describe("false", function() {
it("single", function() { // 00:01:00.000000000
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000016000000100001000000005847f80d000000"), false), [60000000000]);
});
it("multi", function() { // 00:01:00.000000000
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000026000000100003000000005847f80d00000000b08ef01b0000000008d6e829000000"), false), [60000000000, 120000000000, 180000000000]);
});
});
});
});
describe("minute", function() {
it("single", function() { // 00:01
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001200000011000100000001000000")), [new Date("2000-01-01T00:01:00.000")]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001a000000110003000000010000000200000003000000")), [new Date("2000-01-01T00:01:00.000"), new Date("2000-01-01T00:02:00.000"), new Date("2000-01-01T00:03:00.000")]);
});
});
describe("second", function() {
it("single", function() { // 00:00:01
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001200000012000100000001000000")), [new Date("2000-01-01T00:00:01.000")]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001a000000120003000000010000000200000003000000")), [new Date("2000-01-01T00:00:01.000"), new Date("2000-01-01T00:00:02.000"), new Date("2000-01-01T00:00:03.000")]);
});
});
describe("time", function() {
it("single", function() { // 00:00:00.001
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001200000013000100000001000000")), [new Date("2000-01-01T00:00:00.001")]);
});
it("multi", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001a000000130003000000010000000200000003000000")), [new Date("2000-01-01T00:00:00.001"), new Date("2000-01-01T00:00:00.002"), new Date("2000-01-01T00:00:00.003")]);
});
});
});
describe("dict", function() {
it("empty", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001500000063000000000000000000000000")), {});
});
it("single entry", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000001f000000630b000100000061000700010000000100000000000000")), {a: 1});
});
it("multiple entries same type", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000033000000630b0003000000610062006300070003000000010000000000000002000000000000000300000000000000")), {a: 1, b: 2, c: 3});
});
it("multiple entries different types", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000002f000000630b0003000000610062006300000003000000f90100000000000000ff01f70000000000000840")), {a: 1, b: true, c: 3});
});
it("multiple entries, null values", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("0100000021000000630b0003000000610062006300000003000000650065006500")), {a: null, b: null, c: null});
});
});
describe("table", function() {
describe("flipTables", function() {
describe("default", function() {
it("multiple rows", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000620000006200630b0003000000610062006300000003000000070003000000010000000000000002000000000000000300000000000000010003000000010001090003000000000000000000f03f00000000000000400000000000000840")), [{a: 1, b: true, c: 1}, {a: 2, b: false, c: 2}, {a: 3, b: true, c: 3}]);
});
it("no rows", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000002f0000006200630b0003000000610062006300000003000000070000000000010000000000090000000000")), []);
});
});
describe("true", function() {
it("multiple rows", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000620000006200630b0003000000610062006300000003000000070003000000010000000000000002000000000000000300000000000000010003000000010001090003000000000000000000f03f00000000000000400000000000000840"), undefined, true), [{a: 1, b: true, c: 1}, {a: 2, b: false, c: 2}, {a: 3, b: true, c: 3}]);
});
it("no rows", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000002f0000006200630b0003000000610062006300000003000000070000000000010000000000090000000000"), undefined, true), []);
});
});
describe("false", function() {
it("multiple rows", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("01000000620000006200630b0003000000610062006300000003000000070003000000010000000000000002000000000000000300000000000000010003000000010001090003000000000000000000f03f00000000000000400000000000000840"), undefined, false), {a: [1, 2, 3], b: [true, false, true], c: [1, 2, 3]});
});
it("no rows", function() {
assert.deepEqual(c.deserialize(hexstr_to_bin("010000002f0000006200630b0003000000610062006300000003000000070000000000010000000000090000000000"), undefined, false), {a: [], b: [], c: []});
});
});
});
});
});
});
describe("serialize", function() {
describe("infer type", function() {
describe("little", function() {
it("Boolean", function() {
assert.equal(bin_to_hexstr(c.serialize(true)), "010000000a000000ff01");
});
it("symbol length 1", function() {
assert.equal(bin_to_hexstr(c.serialize("`a")), "010000000b000000f56100");
});
it("symbol unicode length 1", function() {
assert.equal(bin_to_hexstr(c.serialize("`你")), "010000000d000000f5e4bda000");
});
it("symbol unicode length 2", function() {
assert.equal(bin_to_hexstr(c.serialize("`你好")), "0100000010000000f5e4bda0e5a5bd00");
});
it("symbol length 2", function() { // `ab
assert.equal(bin_to_hexstr(c.serialize("`ab")), "010000000c000000f5616200");
});
it("symbol length 3", function() { // `abc
assert.equal(bin_to_hexstr(c.serialize("`abc")), "010000000d000000f561626300");
});
it("symbol length 4", function() { // `abcd
assert.equal(bin_to_hexstr(c.serialize("`abcd")), "010000000e000000f56162636400");
});
it("symbol length 5", function() { // `abcde
assert.equal(bin_to_hexstr(c.serialize("`abcde")), "010000000f000000f5616263646500");
});
it("String", function() {
assert.equal(bin_to_hexstr(c.serialize("abc")), "01000000110000000a0003000000616263");
});
it("Number", function() {
assert.equal(bin_to_hexstr(c.serialize(1.0)), "0100000011000000f7000000000000f03f");
});
it("Date", function() {
assert.equal(bin_to_hexstr(c.serialize(new Date("2014-06-23T11:49:31.533"))), "0100000011000000f1facf4b237ea7b440");
});
describe("Object", function() {
it("one key", function() {
assert.equal(bin_to_hexstr(c.serialize({a: 1})), "010000001f000000630b00010000006100090001000000000000000000f03f");
});
it("one key, null value", function() {
assert.equal(bin_to_hexstr(c.serialize({a: null})), "0100000019000000630b000100000061000000010000006500");
});
it("multiple keys, same value type", function() {
assert.equal(bin_to_hexstr(c.serialize({a: 1, b: 2, c: 3})), "0100000033000000630b0003000000610062006300090003000000000000000000f03f00000000000000400000000000000840");
});
it("multiple keys, different value types", function() {
assert.equal(bin_to_hexstr(c.serialize({a: 1, b: true, c: 3})), "010000002f000000630b0003000000610062006300000003000000f7000000000000f03fff01f70000000000000840");
});
it("multiple keys, null value", function() {
assert.equal(bin_to_hexstr(c.serialize({a: null, b: null, c: null})), "0100000021000000630b0003000000610062006300000003000000650065006500");
});
});
describe("Array", function() {
it("empty", function() {
assert.equal(bin_to_hexstr(c.serialize([])), "010000000e000000000000000000");
});
it("one element", function() {
assert.equal(bin_to_hexstr(c.serialize([1])), "0100000016000000090001000000000000000000f03f");
});
it("multiple elements, same types", function() {
assert.equal(bin_to_hexstr(c.serialize([1, 2, 3])), "0100000026000000090003000000000000000000f03f00000000000000400000000000000840");
});
it("multiple elements, different types", function() {
assert.equal(bin_to_hexstr(c.serialize([1, true, 3])), "0100000022000000000003000000f7000000000000f03fff01f70000000000000840");
});
it("Array of Array same type", function() {
assert.equal(bin_to_hexstr(c.serialize([[1, 2, 3]])), "010000002c000000000001000000090003000000000000000000f03f00000000000000400000000000000840");
});
it("Array of Array different types", function() {
assert.equal(bin_to_hexstr(c.serialize([[1, true, 3]])), "0100000028000000000001000000000003000000f7000000000000f03fff01f70000000000000840");
});
it("one null", function() {
assert.equal(bin_to_hexstr(c.serialize([null])), "01000000100000000000010000006500");
});
it("three nulls", function() {
assert.equal(bin_to_hexstr(c.serialize([null, null, null])), "0100000014000000000003000000650065006500");
});
});
it("Null", function() {
assert.equal(bin_to_hexstr(c.serialize(null)), "010000000a0000006500");
});
it("Infinity", function() {
assert.equal(bin_to_hexstr(c.serialize(Infinity)), "0100000011000000f7000000000000f07f");
});
it("-Infinity", function() {
assert.equal(bin_to_hexstr(c.serialize(-Infinity)), "0100000011000000f7000000000000f0ff");
});
});
});
describe("typed", function() {
describe("little", function() {
describe("primitives", function() {
it("boolean", function() { // 1b
assert.equal(bin_to_hexstr(c.serialize(typed.boolean(true))), "010000000a000000ff01");
});
describe("guid", function() {
it("guid", function() { // 0a369037-75d3-b24d-6721-5a1d44d4bed5
assert.equal(bin_to_hexstr(c.serialize(typed.guid("0a369037-75d3-b24d-6721-5a1d44d4bed5"))), "0100000019000000fe0a36903775d3b24d67215a1d44d4bed5");
});
it("null", function() { // 0Ng
assert.equal(bin_to_hexstr(c.serialize(typed.guid(null))), "0100000019000000fe00000000000000000000000000000000");
});
});
it("byte", function() { // 0x01
assert.equal(bin_to_hexstr(c.serialize(typed.byte(1))), "010000000a000000fc01");
});
describe("short", function() {
it("1", function() { // 1h
assert.equal(bin_to_hexstr(c.serialize(typed.short(1))), "010000000b000000fb0100");
});
it("-1", function() { // -1h
assert.equal(bin_to_hexstr(c.serialize(typed.short(-1))), "010000000b000000fbffff");
});
it("null", function() { // 0Nh
assert.equal(bin_to_hexstr(c.serialize(typed.short(null))), "010000000b000000fb0080");
});
it("Infinity", function() { // 0wh
assert.equal(bin_to_hexstr(c.serialize(typed.short(Infinity))), "010000000b000000fbff7f");
});
it("-Infinity", function() { // -0wh
assert.equal(bin_to_hexstr(c.serialize(typed.short(-Infinity))), "010000000b000000fb0180");
});
});
describe("integer", function() {
it("1", function() { // 1i
assert.equal(bin_to_hexstr(c.serialize(typed.int(1))), "010000000d000000fa01000000");
});
it("-1", function() { // -1i
assert.equal(bin_to_hexstr(c.serialize(typed.int(-1))), "010000000d000000faffffffff");
});
it("null", function() { // 0Ni
assert.equal(bin_to_hexstr(c.serialize(typed.int(null))), "010000000d000000fa00000080");
});
it("Infinity", function() { // 0wi
assert.equal(bin_to_hexstr(c.serialize(typed.int(Infinity))), "010000000d000000faffffff7f");
});
it("-Infinity", function() { // -0wi
assert.equal(bin_to_hexstr(c.serialize(typed.int(-Infinity))), "010000000d000000fa01000080");
});
});
describe("long", function() {
it("1", function() { // 1j
assert.equal(bin_to_hexstr(c.serialize(typed.long(Long.fromString("1", false, 10)))), "0100000011000000f90100000000000000");
});
it("-1", function() { // -1j
assert.equal(bin_to_hexstr(c.serialize(typed.long(Long.fromString("-1", false, 10)))), "0100000011000000f9ffffffffffffffff");
});
it("2147483647", function() { // 2147483647j
assert.equal(bin_to_hexstr(c.serialize(typed.long(Long.fromString("2147483647", false, 10)))), "0100000011000000f9ffffff7f00000000");
});
it("2147483648", function() { // 2147483648j
assert.equal(bin_to_hexstr(c.serialize(typed.long(Long.fromString("2147483648", false, 10)))), "0100000011000000f90000008000000000");
});
it("2147483649", function() { // 2147483649j
assert.equal(bin_to_hexstr(c.serialize(typed.long(Long.fromString("2147483649", false, 10)))), "0100000011000000f90100008000000000");
});
it("4294967295", function() { // 4294967295j
assert.equal(bin_to_hexstr(c.serialize(typed.long(Long.fromString("4294967295", false, 10)))), "0100000011000000f9ffffffff00000000");
});
it("4294967296", function() { // 4294967296j
assert.equal(bin_to_hexstr(c.serialize(typed.long(Long.fromString("4294967296", false, 10)))), "0100000011000000f90000000001000000");
});
it("4294967297", function() { // 4294967297j
assert.equal(bin_to_hexstr(c.serialize(typed.long(Long.fromString("4294967297", false, 10)))), "0100000011000000f90100000001000000");
});
it("null", function() { // 0Nj
assert.equal(bin_to_hexstr(c.serialize(typed.long(null))), "0100000011000000f90000000000000080");
});
it("Infinity", function() { // 0wj
assert.equal(bin_to_hexstr(c.serialize(typed.long(Infinity))), "0100000011000000f9ffffffffffffff7f");
});
it("-Infinity", function() { // -0wj
assert.equal(bin_to_hexstr(c.serialize(typed.long(-Infinity))), "0100000011000000f90100000000000080");
});
});
describe("real", function() {
it("1", function() { // 1e
assert.equal(bin_to_hexstr(c.serialize(typed.real(1.0))), "010000000d000000f80000803f");
});
it("-1", function() { // -1e
assert.equal(bin_to_hexstr(c.serialize(typed.real(-1.0))), "010000000d000000f8000080bf");
});
it("null", function() { // 0Ne
assert.equal(bin_to_hexstr(c.serialize(typed.real(null))), "010000000d000000f80000c0ff");
});
it("Infinity", function() { // 0we
assert.equal(bin_to_hexstr(c.serialize(typed.real(Infinity))), "010000000d000000f80000807f");
});
it("-Infinity", function() { // -0we
assert.equal(bin_to_hexstr(c.serialize(typed.real(-Infinity))), "010000000d000000f8000080ff");
});
});
describe("float", function() {
it("1", function() { // 1f
assert.equal(bin_to_hexstr(c.serialize(typed.float(1.0))), "0100000011000000f7000000000000f03f");
});
it("-1", function() { // -1f
assert.equal(bin_to_hexstr(c.serialize(typed.float(-1.0))), "0100000011000000f7000000000000f0bf");
});
it("null", function() { // 0Nf
assert.equal(bin_to_hexstr(c.serialize(typed.float(null))), "0100000011000000f7000000000000f8ff");
});
it("Infinity", function() { // 0wf
assert.equal(bin_to_hexstr(c.serialize(typed.float(Infinity))), "0100000011000000f7000000000000f07f");
});
it("-Infinity", function() { // -0wf
assert.equal(bin_to_hexstr(c.serialize(typed.float(-Infinity))), "0100000011000000f7000000000000f0ff");
});
});
describe("char", function() {
it("a", function() { // "a"
assert.equal(bin_to_hexstr(c.serialize(typed.char("a"))), "010000000a000000f661");
});
it("null", function() { // " "
assert.equal(bin_to_hexstr(c.serialize(typed.char(null))), "010000000a000000f620");
});
});
describe("symbol", function() {
it("length 1", function() { // `a
assert.equal(bin_to_hexstr(c.serialize(typed.symbol("a"))), "010000000b000000f56100");
});
it("unicode", function() { // `你
assert.equal(bin_to_hexstr(c.serialize(typed.symbol("你"))), "010000000d000000f5e4bda000");
});
it("null", function() { // `
assert.equal(bin_to_hexstr(c.serialize(typed.symbol(null))), "010000000a000000f500");
});
it("length 2", function() { // `ab
assert.equal(bin_to_hexstr(c.serialize(typed.symbol("ab"))), "010000000c000000f5616200");
});
it("length 3", function() { // `abc
assert.equal(bin_to_hexstr(c.serialize(typed.symbol("abc"))), "010000000d000000f561626300");
});
it("length 4", function() { // `abcd
assert.equal(bin_to_hexstr(c.serialize(typed.symbol("abcd"))), "010000000e000000f56162636400");
});
it("length 5", function() { // `abcde
assert.equal(bin_to_hexstr(c.serialize(typed.symbol("abcde"))), "010000000f000000f5616263646500");
});
});
describe("timestamp", function() {
it("timestamp", function() { // 2014.06.23D11:34:39.412000000
assert.equal(bin_to_hexstr(c.serialize(typed.timestamp(new Date("2014-06-23T11:34:39.412000000")))), "0100000011000000f400f514352d045706");
});
it("null", function() { // 0Np
assert.equal(bin_to_hexstr(c.serialize(typed.timestamp(null))), "0100000011000000f40000000000000080");
});
});
describe("month", function() {
it("201401", function() { // 2014.01m
assert.equal(bin_to_hexstr(c.serialize(typed.month(new Date("2014-01-01")))), "010000000d000000f3a8000000");
});
it("null", function() { // 0Nm
assert.equal(bin_to_hexstr(c.serialize(typed.month(null))), "010000000d000000f300000080");
});
it("199501", function() { // 1995.01m
assert.equal(bin_to_hexstr(c.serialize(typed.month(new Date("1995-01-01")))), "010000000d000000f3c4ffffff");
});
});
describe("date", function() {
it("20140101", function() { // 2014.01.01
assert.equal(bin_to_hexstr(c.serialize(typed.date(new Date("2014-01-01")))), "010000000d000000f2fa130000");
});
it("null", function() { // 0Nd
assert.equal(bin_to_hexstr(c.serialize(typed.date(null))), "010000000d000000f200000080");
});
it("19950101", function() { // 1995.01.01
assert.equal(bin_to_hexstr(c.serialize(typed.date(new Date("1995-01-01")))), "010000000d000000f2def8ffff");
});
});
describe("datetime", function() {
it("datetime", function() { // 2014.06.23T11:49:31.533
assert.equal(bin_to_hexstr(c.serialize(typed.datetime(new Date("2014-06-23T11:49:31.533")))), "0100000011000000f1facf4b237ea7b440");
});
it("null", function() { // 0Nz
assert.equal(bin_to_hexstr(c.serialize(typed.datetime(null))), "0100000011000000f1000000000000f8ff");
});
});
describe("timespan", function() {
it("timespan", function() { // 00:01:00.000000000
assert.equal(bin_to_hexstr(c.serialize(typed.timespan(new Date("2000-01-01T00:01:00.000")))), "0100000011000000f0005847f80d000000");
});
it("null", function() { // 0Nn
assert.equal(bin_to_hexstr(c.serialize(typed.timespan(null))), "0100000011000000f00000000000000080");
});
});
describe("minute", function() {
it("minute", function() { // 00:01
assert.equal(bin_to_hexstr(c.serialize(typed.minute(new Date("2000-01-01T00:01:00.000")))), "010000000d000000ef01000000");
});
it("null", function() { // 0Nu
assert.equal(bin_to_hexstr(c.serialize(typed.minute(null))), "010000000d000000ef00000080");
});
});
describe("second", function() {
it("second", function() { // 00:00:01
assert.equal(bin_to_hexstr(c.serialize(typed.second(new Date("2000-01-01T00:00:01.000")))), "010000000d000000ee01000000");
});
it("null", function() { // 0Nv
assert.equal(bin_to_hexstr(c.serialize(typed.second(null))), "010000000d000000ee00000080");
});
});
describe("time", function() {
it("time", function() { // 00:00:00.001
assert.equal(bin_to_hexstr(c.serialize(typed.time(new Date("2000-01-01T00:00:00.001")))), "010000000d000000ed01000000");
});
it("null", function() { // 0Nt
assert.equal(bin_to_hexstr(c.serialize(typed.time(null))), "010000000d000000ed00000080");
});
});
});
describe("list", function() {
describe("generic", function() {
it("two values", function() {
assert.equal(bin_to_hexstr(c.serialize([typed.boolean(true), typed.float(1)])), "0100000019000000000002000000ff01f7000000000000f03f");
});
it("three values", function() { // (1l;1b;`a)
assert.equal(bin_to_hexstr(c.serialize([typed.long(Long.fromString("1", false, 10)), typed.boolean(true), typed.symbol("a")])), "010000001c000000000003000000f90100000000000000ff01f56100");
});
it("list of list", function() {
assert.equal(bin_to_hexstr(c.serialize([typed.bytes([0, 1, 2, 3, 4])])), "01000000190000000000010000000400050000000001020304");
});
});
describe("typed", function() {
it("boolean", function() {
assert.equal(bin_to_hexstr(c.serialize(typed.booleans([true, false]))), "01000000100000000100020000000100");
});
it("guid", function() {
assert.equal(bin_to_hexstr(c.serialize(typed.guids(["0a369037-75d3-b24d-6721-5a1d44d4bed5", "0a369037-75d3-b24d-6721-5a1d44d4bed5"]))), "010000002e0000000200020000000a36903775d3b24d67215a1d44d4bed50a36903775d3b24d67215a1d44d4bed5");
});
it("byte", function() {
assert.equal(bin_to_hexstr(c.serialize(typed.bytes([0, 1, 2, 3, 4]))), "01000000130000000400050000000001020304");
});
it("short", function() {
assert.equal(bin_to_hexstr(c.serialize(typed.shorts([1, 2, 3]))), "0100000014000000050003000000010002000300");
});
it("1 integer", function() {
assert.equal(bin_to_hexstr(c.serialize(typed.ints([1]))), "010000001200000006000100000001000000");
});
it("3 integers", function() {
assert.equal(bin_to_hexstr(c.serialize(typed.ints([1, 2, 3]))), "010000001a000000060003000000010000000200000003000000");
});
it("long", function() { //
assert.equal(