1 | #!/usr/bin/env mocha -R spec
|
2 |
|
3 |
|
4 |
|
5 | var assert = require("assert");
|
6 | var msgpackJS = "../index";
|
7 | var isBrowser = ("undefined" !== typeof window);
|
8 | var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
9 | var TITLE = __filename.replace(/^.*\//, "");
|
10 |
|
11 | describe(TITLE, function() {
|
12 | it("Boolean", function() {
|
13 | [true, false].forEach(function(value) {
|
14 | var source = new Boolean(value);
|
15 | assert.equal(source - 0, value - 0);
|
16 | var encoded = msgpack.encode(source);
|
17 | assert.equal(encoded[0], 0xD4);
|
18 | assert.equal(encoded[1], 0x0B);
|
19 | var decoded = msgpack.decode(encoded);
|
20 | assert.equal(decoded - 0, source - 0);
|
21 | assert.ok(decoded instanceof Boolean);
|
22 | });
|
23 | });
|
24 |
|
25 | it("Date", function() {
|
26 | var source = new Date();
|
27 | var encoded = msgpack.encode(source);
|
28 | assert.equal(encoded[0], 0xC7);
|
29 | assert.equal(encoded[1], 0x09);
|
30 | assert.equal(encoded[2], 0x0D);
|
31 | var decoded = msgpack.decode(encoded);
|
32 | assert.equal(decoded - 0, source - 0);
|
33 | assert.ok(decoded instanceof Date);
|
34 | });
|
35 |
|
36 | var ERROR_TYPES = ["Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError"];
|
37 | ERROR_TYPES.forEach(function(name, idx) {
|
38 | var Class = global[name];
|
39 | it(name, function() {
|
40 | var message = "foo:" + idx;
|
41 | var source = new Class(message);
|
42 | var encoded = msgpack.encode(source);
|
43 | var decoded = msgpack.decode(encoded);
|
44 | assert.equal(decoded + "", source + "");
|
45 | assert.equal(decoded.name, name);
|
46 | assert.equal(decoded.message, message);
|
47 | assert.ok(decoded instanceof Class);
|
48 | });
|
49 | });
|
50 |
|
51 | it("RegExp", function() {
|
52 | var source = new RegExp("foo");
|
53 | var encoded = msgpack.encode(source);
|
54 | var decoded = msgpack.decode(encoded);
|
55 | assert.equal(decoded + "", source + "");
|
56 | assert.ok(decoded instanceof RegExp);
|
57 | });
|
58 |
|
59 | it("RegExp //g", function() {
|
60 | var source = /foo\/bar/g;
|
61 | var encoded = msgpack.encode(source);
|
62 | var decoded = msgpack.decode(encoded);
|
63 | assert.equal(decoded + "", source + "");
|
64 | assert.ok(decoded instanceof RegExp);
|
65 | });
|
66 |
|
67 | it("Number", function() {
|
68 | var source = new Number(123.456);
|
69 | var encoded = msgpack.encode(source);
|
70 | assert.equal(encoded[0], 0xC7);
|
71 | assert.equal(encoded[1], 0x09);
|
72 | assert.equal(encoded[2], 0x0F);
|
73 | var decoded = msgpack.decode(encoded);
|
74 | assert.equal(decoded - 0, source - 0);
|
75 | assert.ok(decoded instanceof Number);
|
76 | });
|
77 |
|
78 | it("String", function() {
|
79 | var source = new String("qux");
|
80 | var encoded = msgpack.encode(source);
|
81 | var decoded = msgpack.decode(encoded);
|
82 | assert.equal(decoded + "", source + "");
|
83 | assert.ok(decoded instanceof String);
|
84 | });
|
85 | });
|