1 | #!/usr/bin/env mocha -R spec
|
2 |
|
3 |
|
4 |
|
5 | var assert = require("assert");
|
6 |
|
7 | var msgpackJS = "../index";
|
8 | var isBrowser = ("undefined" !== typeof window);
|
9 | var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
10 | var TITLE = __filename.replace(/^.*\//, "") + ":";
|
11 | var FUNCTION_HAS_NAME = NOP.name;
|
12 |
|
13 | describe(TITLE, function() {
|
14 | var skip = FUNCTION_HAS_NAME ? it : it.skip;
|
15 | skip("Boolean", function() {
|
16 | [true, false].forEach(function(value) {
|
17 | var source = new Boolean(value);
|
18 | assert.equal(source - 0, value - 0);
|
19 | var encoded = msgpack.encode(source);
|
20 | var decoded = msgpack.decode(encoded);
|
21 | assert.equal(decoded - 0, source - 0);
|
22 | assert.ok(decoded instanceof Boolean);
|
23 | });
|
24 | });
|
25 |
|
26 | skip("Date", function() {
|
27 | var source = new Date();
|
28 | var encoded = msgpack.encode(source);
|
29 | var decoded = msgpack.decode(encoded);
|
30 | assert.equal(decoded - 0, source - 0);
|
31 | assert.ok(decoded instanceof Date);
|
32 | });
|
33 |
|
34 | var ERROR_TYPES = ["Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError"];
|
35 | ERROR_TYPES.forEach(function(name, idx) {
|
36 | var Class = global[name];
|
37 | var skip = FUNCTION_HAS_NAME && Class ? it : it.skip;
|
38 | skip(name, function() {
|
39 | var message = "foo:" + idx;
|
40 | var source = new Class(message);
|
41 | var encoded = msgpack.encode(source);
|
42 | var decoded = msgpack.decode(encoded);
|
43 | assert.equal(decoded + "", source + "");
|
44 | assert.equal(decoded.name, name);
|
45 | assert.equal(decoded.message, message);
|
46 | assert.ok(decoded instanceof Error);
|
47 | });
|
48 | });
|
49 |
|
50 | skip("RegExp", function() {
|
51 | var source = new RegExp("foo");
|
52 | var encoded = msgpack.encode(source);
|
53 | var decoded = msgpack.decode(encoded);
|
54 | assert.equal(decoded + "", source + "");
|
55 | assert.ok(decoded instanceof RegExp);
|
56 | });
|
57 |
|
58 | skip("RegExp //g", function() {
|
59 | var source = /bar/g;
|
60 | var encoded = msgpack.encode(source);
|
61 | var decoded = msgpack.decode(encoded);
|
62 | assert.equal(decoded + "", source + "");
|
63 | assert.ok(decoded instanceof RegExp);
|
64 | });
|
65 |
|
66 | skip("Number", function() {
|
67 | var source = new Number(123.456);
|
68 | var encoded = msgpack.encode(source);
|
69 | var decoded = msgpack.decode(encoded);
|
70 | assert.equal(decoded - 0, source - 0);
|
71 | assert.ok(decoded instanceof Number);
|
72 | });
|
73 |
|
74 | skip("String", function() {
|
75 | var source = new String("qux");
|
76 | var encoded = msgpack.encode(source);
|
77 | var decoded = msgpack.decode(encoded);
|
78 | assert.equal(decoded + "", source + "");
|
79 | assert.ok(decoded instanceof String);
|
80 | });
|
81 |
|
82 | it("ExtBuffer", function() {
|
83 | for (var type = 32; type < 256; type++) {
|
84 |
|
85 | var header = new Buffer([0xd7, type]);
|
86 | var content = new Buffer(8);
|
87 | for (var i = 0; i < 8; i++) {
|
88 | content[i] = (type + i) & 0x7F;
|
89 | }
|
90 | var source = Buffer.concat([header, content]);
|
91 | var decoded = msgpack.decode(source);
|
92 | var encoded = msgpack.encode(decoded);
|
93 | assert.deepEqual(encoded, source);
|
94 | }
|
95 | });
|
96 | });
|
97 |
|
98 | function NOP() {
|
99 | } |
\ | No newline at end of file |