forked from pgriess/node-msgpack
/
test.js
48 lines (41 loc) · 1.08 KB
/
test.js
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
var assert = require('assert');
var msgpack = require('msgpack');
var testEqual = function(v) {
var vv = msgpack.unpack(msgpack.pack(v));
assert.deepEqual(vv, v);
};
var testCircular = function(v) {
try {
msgpack.pack(v);
assert.ok(false, 'expected exception');
} catch (e) {
assert.equal(
e.message,
'Cowardly refusing to pack object with circular reference'
);
}
}
testEqual('abcdef');
testEqual(123);
testEqual(null);
testEqual(-1243.111);
testEqual(-123);
testEqual(true);
testEqual(false);
testEqual([1, 2, 3]);
testEqual([1, 'abc', false, null]);
testEqual({'a' : [1, 2, 3], 'b' : 'cdef', 'c' : {'nuts' : 'qqq'}});
// Make sure we're catching circular references for arrays
var a = [1, 2, 3, 4];
a.push(a);
testCircular(a);
// Make sure we're catching circular references in objects
var d = {}
d.qqq = d;
testCircular(d);
// Make sure we can serialize the same object repeatedly and that our circular
// reference marking algorithm doesn't get in the way
var d = {};
for (var i = 0; i < 10; i++) {
msgpack.pack(d);
}