UNPKG

3.06 kBJavaScriptView Raw
1#!/usr/bin/env mocha -R spec
2
3/*jshint -W053 */
4
5var assert = require("assert");
6
7var msgpackJS = "../index";
8var isBrowser = ("undefined" !== typeof window);
9var msgpack = isBrowser && window.msgpack || require(msgpackJS);
10var TITLE = __filename.replace(/^.*\//, "") + ":";
11var FUNCTION_HAS_NAME = NOP.name;
12
13describe(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 // fixext 8 -- 0xd7
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
98function NOP() {
99}
\No newline at end of file