msgpack-lite 0.1.27 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -78
- package/dist/msgpack.min.js +1 -2
- package/lib/read-format.js +10 -0
- package/lib/write-type.js +5 -0
- package/package.json +28 -16
- package/.github/workflows/nodejs.yml +0 -23
- package/.github/workflows/publish.yml +0 -64
- package/Makefile +0 -43
- package/lib/benchmark-stream.js +0 -247
- package/lib/benchmark.js +0 -157
- package/test/10.encode.js +0 -218
- package/test/11.decode.js +0 -382
- package/test/12.encoder.js +0 -36
- package/test/13.decoder.js +0 -32
- package/test/14.codec.js +0 -95
- package/test/15.useraw.js +0 -92
- package/test/16.binarraybuffer.js +0 -91
- package/test/17.uint8array.js +0 -43
- package/test/18.utf8.js +0 -59
- package/test/20.roundtrip.js +0 -220
- package/test/21.ext.js +0 -85
- package/test/22.typedarray.js +0 -79
- package/test/23.extbuffer.js +0 -79
- package/test/24.int64.js +0 -76
- package/test/26.es6.js +0 -20
- package/test/27.usemap.js +0 -66
- package/test/30.stream.js +0 -167
- package/test/50.compat.js +0 -58
- package/test/61.encode-only.js +0 -26
- package/test/62.decode-only.js +0 -23
- package/test/63.module-deps.js +0 -77
- package/test/example.json +0 -52
package/test/14.codec.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env mocha -R spec
|
|
2
|
-
|
|
3
|
-
var assert = require("assert");
|
|
4
|
-
var msgpackJS = "../index";
|
|
5
|
-
var isBrowser = ("undefined" !== typeof window);
|
|
6
|
-
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
|
7
|
-
var TITLE = __filename.replace(/^.*\//, "");
|
|
8
|
-
|
|
9
|
-
var HAS_UINT8ARRAY = ("undefined" !== typeof Uint8Array);
|
|
10
|
-
|
|
11
|
-
describe(TITLE, function() {
|
|
12
|
-
it("createCodec()", function() {
|
|
13
|
-
var codec = msgpack.createCodec();
|
|
14
|
-
var options = {codec: codec};
|
|
15
|
-
assert.ok(codec);
|
|
16
|
-
|
|
17
|
-
// this codec does not have preset codec
|
|
18
|
-
for (var i = 0; i < 256; i++) {
|
|
19
|
-
test(i);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function test(type) {
|
|
23
|
-
// fixext 1 -- 0xd4
|
|
24
|
-
var source = Buffer.from([0xd4, type, type]);
|
|
25
|
-
var decoded = msgpack.decode(source, options);
|
|
26
|
-
assert.equal(decoded.type, type);
|
|
27
|
-
assert.equal(decoded.buffer.length, 1);
|
|
28
|
-
var encoded = msgpack.encode(decoded, options);
|
|
29
|
-
assert.deepEqual(toArray(encoded), toArray(source));
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it("addExtPacker()", function() {
|
|
34
|
-
var codec = msgpack.createCodec();
|
|
35
|
-
codec.addExtPacker(0, MyClass, myClassPacker);
|
|
36
|
-
codec.addExtUnpacker(0, myClassUnpacker);
|
|
37
|
-
var options = {codec: codec};
|
|
38
|
-
[0, 1, 127, 255].forEach(test);
|
|
39
|
-
|
|
40
|
-
function test(type) {
|
|
41
|
-
var source = new MyClass(type);
|
|
42
|
-
var encoded = msgpack.encode(source, options);
|
|
43
|
-
var decoded = msgpack.decode(encoded, options);
|
|
44
|
-
assert.ok(decoded instanceof MyClass);
|
|
45
|
-
assert.equal(decoded.value, type);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
// The safe mode works as same as the default mode. It'd be hard for test it.
|
|
50
|
-
it("createCodec({safe: true})", function() {
|
|
51
|
-
var options = {codec: msgpack.createCodec({safe: true})};
|
|
52
|
-
var source = 1;
|
|
53
|
-
var encoded = msgpack.encode(source, options);
|
|
54
|
-
var decoded = msgpack.decode(encoded, options);
|
|
55
|
-
assert.equal(decoded, source);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it("createCodec({preset: true})", function() {
|
|
59
|
-
var options1 = {codec: msgpack.createCodec({preset: true})};
|
|
60
|
-
var options2 = {codec: msgpack.createCodec({preset: false})};
|
|
61
|
-
|
|
62
|
-
var source = new Date();
|
|
63
|
-
var encoded = msgpack.encode(source, options1);
|
|
64
|
-
assert.equal(encoded[0], 0xC7, "preset ext format failure. (128 means map format)"); // ext 8
|
|
65
|
-
assert.equal(encoded[1], 0x09); // 1+8
|
|
66
|
-
assert.equal(encoded[2], 0x0D); // Date
|
|
67
|
-
|
|
68
|
-
// decode as Boolean instance
|
|
69
|
-
var decoded = msgpack.decode(encoded, options1);
|
|
70
|
-
assert.equal(decoded - 0, source - 0);
|
|
71
|
-
assert.ok(decoded instanceof Date);
|
|
72
|
-
|
|
73
|
-
// decode as ExtBuffer
|
|
74
|
-
decoded = msgpack.decode(encoded, options2);
|
|
75
|
-
assert.ok(!(decoded instanceof Date));
|
|
76
|
-
assert.equal(decoded.type, 0x0D);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
function MyClass(value) {
|
|
81
|
-
this.value = value & 0xFF;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function myClassPacker(obj) {
|
|
85
|
-
return Buffer.from([obj.value]);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
function myClassUnpacker(buffer) {
|
|
89
|
-
return new MyClass(buffer[0]);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function toArray(array) {
|
|
93
|
-
if (HAS_UINT8ARRAY && array instanceof ArrayBuffer) array = new Uint8Array(array);
|
|
94
|
-
return Array.prototype.slice.call(array);
|
|
95
|
-
}
|
package/test/15.useraw.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env mocha -R spec
|
|
2
|
-
|
|
3
|
-
var assert = require("assert");
|
|
4
|
-
var msgpackJS = "../index";
|
|
5
|
-
var isBrowser = ("undefined" !== typeof window);
|
|
6
|
-
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
|
7
|
-
var TITLE = __filename.replace(/^.*\//, "");
|
|
8
|
-
|
|
9
|
-
var TESTS = [0, 1, 31, 32, 255, 256, 65535, 65536];
|
|
10
|
-
|
|
11
|
-
function toArray(array) {
|
|
12
|
-
return Array.prototype.slice.call(array);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
describe(TITLE, function() {
|
|
16
|
-
var options;
|
|
17
|
-
|
|
18
|
-
it("useraw (decode)", function() {
|
|
19
|
-
options = {codec: msgpack.createCodec({useraw: true})};
|
|
20
|
-
|
|
21
|
-
// raw
|
|
22
|
-
assert.deepEqual(toArray(msgpack.decode(Buffer.from([0xa1, 65]), options)), [65]);
|
|
23
|
-
|
|
24
|
-
// str
|
|
25
|
-
assert.equal(msgpack.decode(Buffer.from([0xa1, 65])), "A");
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("useraw (encode)", function() {
|
|
29
|
-
// raw (String)
|
|
30
|
-
assert.deepEqual(toArray(msgpack.encode("A", options)), [0xa1, 65]);
|
|
31
|
-
|
|
32
|
-
// raw (Buffer)
|
|
33
|
-
assert.deepEqual(toArray(msgpack.encode(Buffer.from([65]), options)), [0xa1, 65]);
|
|
34
|
-
|
|
35
|
-
// str
|
|
36
|
-
assert.deepEqual(toArray(msgpack.encode("A")), [0xa1, 65]);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it("useraw (String)", function() {
|
|
40
|
-
TESTS.forEach(test);
|
|
41
|
-
|
|
42
|
-
function test(length) {
|
|
43
|
-
var source = "";
|
|
44
|
-
for (var i = 0; i < length; i++) {
|
|
45
|
-
source += "a";
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// encode as raw
|
|
49
|
-
var encoded = msgpack.encode(source, options);
|
|
50
|
-
assert.ok(encoded.length);
|
|
51
|
-
|
|
52
|
-
// decode as raw (Buffer)
|
|
53
|
-
var buffer = msgpack.decode(encoded, options);
|
|
54
|
-
assert.ok(Buffer.isBuffer(buffer));
|
|
55
|
-
assert.equal(buffer.length, length);
|
|
56
|
-
if (length) assert.equal(buffer[0], 97);
|
|
57
|
-
|
|
58
|
-
// decode as str (String)
|
|
59
|
-
var string = msgpack.decode(encoded);
|
|
60
|
-
assert.equal(typeof string, "string");
|
|
61
|
-
assert.equal(string.length, length);
|
|
62
|
-
assert.equal(string, source);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("useraw (Buffer)", function() {
|
|
67
|
-
TESTS.forEach(test);
|
|
68
|
-
|
|
69
|
-
function test(length) {
|
|
70
|
-
var source = Buffer.alloc(length);
|
|
71
|
-
for (var i = 0; i < length; i++) {
|
|
72
|
-
source[i] = 65; // "A"
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// encode as raw
|
|
76
|
-
var encoded = msgpack.encode(source, options);
|
|
77
|
-
assert.ok(encoded.length);
|
|
78
|
-
|
|
79
|
-
// decode as raw (Buffer)
|
|
80
|
-
var buffer = msgpack.decode(encoded, options);
|
|
81
|
-
assert.ok(Buffer.isBuffer(buffer));
|
|
82
|
-
assert.equal(buffer.length, length);
|
|
83
|
-
if (length) assert.equal(buffer[0], 65);
|
|
84
|
-
|
|
85
|
-
// decode as str (String)
|
|
86
|
-
var string = msgpack.decode(encoded);
|
|
87
|
-
assert.equal(typeof string, "string");
|
|
88
|
-
assert.equal(string.length, length);
|
|
89
|
-
if (length) assert.equal(string[0], "A");
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env mocha -R spec
|
|
2
|
-
|
|
3
|
-
var assert = require("assert");
|
|
4
|
-
var msgpackJS = "../index";
|
|
5
|
-
var isBrowser = ("undefined" !== typeof window);
|
|
6
|
-
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
|
7
|
-
var TITLE = __filename.replace(/^.*\//, "");
|
|
8
|
-
var HAS_UINT8ARRAY = ("undefined" !== typeof Uint8Array);
|
|
9
|
-
|
|
10
|
-
var TESTS = [0, 1, 31, 32, 255, 256, 65535, 65536];
|
|
11
|
-
|
|
12
|
-
function toArray(array) {
|
|
13
|
-
if (array instanceof ArrayBuffer) array = new Uint8Array(array);
|
|
14
|
-
return Array.prototype.slice.call(array);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// run this test when Uint8Array is available
|
|
18
|
-
var describeSkip = HAS_UINT8ARRAY ? describe : describe.skip;
|
|
19
|
-
|
|
20
|
-
describeSkip(TITLE, function() {
|
|
21
|
-
var options;
|
|
22
|
-
|
|
23
|
-
it("binarraybuffer (decode)", function() {
|
|
24
|
-
var decoded;
|
|
25
|
-
options = {codec: msgpack.createCodec({binarraybuffer: true, preset: true})};
|
|
26
|
-
|
|
27
|
-
// bin (Buffer)
|
|
28
|
-
decoded = msgpack.decode(Buffer.from([0xc4, 2, 65, 66]), options);
|
|
29
|
-
assert.ok(decoded instanceof ArrayBuffer);
|
|
30
|
-
assert.ok(!Buffer.isBuffer(decoded));
|
|
31
|
-
assert.deepEqual(toArray(decoded), [65, 66]);
|
|
32
|
-
|
|
33
|
-
// bin (Uint8Array)
|
|
34
|
-
decoded = msgpack.decode(new Uint8Array([0xc4, 2, 97, 98]), options);
|
|
35
|
-
assert.ok(decoded instanceof ArrayBuffer);
|
|
36
|
-
assert.ok(!Buffer.isBuffer(decoded));
|
|
37
|
-
assert.deepEqual(toArray(decoded), [97, 98]);
|
|
38
|
-
|
|
39
|
-
// bin (Array)
|
|
40
|
-
decoded = msgpack.decode([0xc4, 2, 65, 66], options);
|
|
41
|
-
assert.ok(decoded instanceof ArrayBuffer);
|
|
42
|
-
assert.ok(!Buffer.isBuffer(decoded));
|
|
43
|
-
assert.deepEqual(toArray(decoded), [65, 66]);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it("binarraybuffer (encode)", function() {
|
|
47
|
-
// bin (ArrayBuffer)
|
|
48
|
-
var encoded = msgpack.encode(new Uint8Array([65, 66]).buffer, options);
|
|
49
|
-
assert.deepEqual(toArray(encoded), [0xc4, 2, 65, 66]);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("binarraybuffer (large)", function() {
|
|
53
|
-
TESTS.forEach(test);
|
|
54
|
-
|
|
55
|
-
function test(length) {
|
|
56
|
-
var source = new Uint8Array(length);
|
|
57
|
-
for (var i = 0; i < length; i++) {
|
|
58
|
-
source[i] = 65; // "A"
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
var encoded = msgpack.encode(source.buffer, options);
|
|
62
|
-
assert.ok(encoded.length);
|
|
63
|
-
|
|
64
|
-
var decoded = msgpack.decode(encoded, options);
|
|
65
|
-
assert.ok(decoded instanceof ArrayBuffer);
|
|
66
|
-
assert.ok(!Buffer.isBuffer(decoded));
|
|
67
|
-
decoded = new Uint8Array(decoded);
|
|
68
|
-
assert.equal(decoded.length, length);
|
|
69
|
-
if (length) assert.equal(decoded[0], 65);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
// addExtPacker() and getExtPacker() methods need a valid constructor name.
|
|
74
|
-
// IE10 and iOS7 Safari may give another constructor name than Buffer.
|
|
75
|
-
// At those cases, below will be encoded as Uint8Array: [0xd5, 0x12, 97, 98]
|
|
76
|
-
var b = Buffer.alloc(1);
|
|
77
|
-
var c = b.constructor;
|
|
78
|
-
var d = (c && c.name === "Buffer") ? it : it.skip;
|
|
79
|
-
d("encode Buffer ext format 0x1B", function() {
|
|
80
|
-
// fixext 2 (Buffer)
|
|
81
|
-
var encoded = msgpack.encode(Buffer.from([97, 98]), options);
|
|
82
|
-
assert.deepEqual(toArray(encoded), [0xd5, 0x1b, 97, 98]);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("decode Buffer ext format 0x1B", function() {
|
|
86
|
-
// fixext 2 (Buffer)
|
|
87
|
-
var decoded = msgpack.decode([0xd5, 0x1b, 65, 66], options);
|
|
88
|
-
assert.ok(Buffer.isBuffer(decoded));
|
|
89
|
-
assert.deepEqual(toArray(decoded), [65, 66]);
|
|
90
|
-
});
|
|
91
|
-
});
|
package/test/17.uint8array.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env mocha -R spec
|
|
2
|
-
|
|
3
|
-
var assert = require("assert");
|
|
4
|
-
var Bufferish = require("../lib/bufferish");
|
|
5
|
-
var msgpackJS = "../index";
|
|
6
|
-
var isBrowser = ("undefined" !== typeof window);
|
|
7
|
-
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
|
8
|
-
var TITLE = __filename.replace(/^.*\//, "");
|
|
9
|
-
|
|
10
|
-
var HAS_UINT8ARRAY = ("undefined" !== typeof Uint8Array);
|
|
11
|
-
|
|
12
|
-
describe(TITLE, function() {
|
|
13
|
-
it("{}", function() {
|
|
14
|
-
var encoded = msgpack.encode(1);
|
|
15
|
-
assert.ok(Buffer.isBuffer(encoded));
|
|
16
|
-
// assert.ok(!ArrayBuffer.isView(encoded));
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
var it_Uint8Array = HAS_UINT8ARRAY ? it : it.skip;
|
|
20
|
-
var codecopt = {uint8array: true};
|
|
21
|
-
|
|
22
|
-
it_Uint8Array(JSON.stringify(codecopt), function() {
|
|
23
|
-
var codec = msgpack.createCodec(codecopt);
|
|
24
|
-
assert.ok(codec);
|
|
25
|
-
var options = {codec: codec};
|
|
26
|
-
|
|
27
|
-
// small data
|
|
28
|
-
var encoded = msgpack.encode(1, options);
|
|
29
|
-
if (ArrayBuffer.isView) assert.ok(ArrayBuffer.isView(encoded));
|
|
30
|
-
assert.ok(Bufferish.isView(encoded));
|
|
31
|
-
assert.ok(!Buffer.isBuffer(encoded));
|
|
32
|
-
|
|
33
|
-
// bigger data
|
|
34
|
-
var big = Buffer.alloc(8192); // 8KB
|
|
35
|
-
big[big.length - 1] = 99;
|
|
36
|
-
var source = [big, big, big, big, big, big, big, big]; // 64KB
|
|
37
|
-
encoded = msgpack.encode(source, options);
|
|
38
|
-
if (ArrayBuffer.isView) assert.ok(ArrayBuffer.isView(encoded));
|
|
39
|
-
assert.ok(Bufferish.isView(encoded));
|
|
40
|
-
assert.ok(!Buffer.isBuffer(encoded));
|
|
41
|
-
assert.equal(encoded[encoded.length - 1], 99); // last byte
|
|
42
|
-
});
|
|
43
|
-
});
|
package/test/18.utf8.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env mocha -R spec
|
|
2
|
-
|
|
3
|
-
var assert = require("assert");
|
|
4
|
-
var msgpackJS = "../index";
|
|
5
|
-
var isBrowser = ("undefined" !== typeof window);
|
|
6
|
-
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
|
7
|
-
var TITLE = __filename.replace(/^.*\//, "");
|
|
8
|
-
|
|
9
|
-
var OPTIONS = [{}, {safe: true}];
|
|
10
|
-
|
|
11
|
-
describe(TITLE, function() {
|
|
12
|
-
OPTIONS.forEach(function(options) {
|
|
13
|
-
var suffix = " " + JSON.stringify(options);
|
|
14
|
-
it("string (ASCII)" + suffix, function() {
|
|
15
|
-
var string = "a";
|
|
16
|
-
var array = [0xa1, 0x61];
|
|
17
|
-
var encoded = msgpack.encode(string, options);
|
|
18
|
-
var decoded = msgpack.decode(array, options);
|
|
19
|
-
assert.deepEqual(toArray(encoded), array);
|
|
20
|
-
assert.equal(decoded, string);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("string (Greek)" + suffix, function() {
|
|
24
|
-
var string = "α";
|
|
25
|
-
var array = [0xa2, 0xce, 0xb1];
|
|
26
|
-
var encoded = msgpack.encode(string, options);
|
|
27
|
-
var decoded = msgpack.decode(array, options);
|
|
28
|
-
assert.deepEqual(toArray(encoded), array);
|
|
29
|
-
assert.equal(decoded, string);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it("string (Asian)" + suffix, function() {
|
|
33
|
-
var string = "亜";
|
|
34
|
-
var array = [0xa3, 0xe4, 0xba, 0x9c];
|
|
35
|
-
var encoded = msgpack.encode(string, options);
|
|
36
|
-
var decoded = msgpack.decode(array, options);
|
|
37
|
-
assert.deepEqual(toArray(encoded), array);
|
|
38
|
-
assert.equal(decoded, string);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
// U+1F426 "🐦" bird
|
|
42
|
-
// http://unicode.org/emoji/charts/full-emoji-list.html#1f426
|
|
43
|
-
it("string (Emoji)" + suffix, function() {
|
|
44
|
-
var string = "\uD83D\uDC26"; // surrogate pair
|
|
45
|
-
var array_utf8 = [0xa4, 0xf0, 0x9f, 0x90, 0xa6]; // UTF-8
|
|
46
|
-
var array_cesu8 = [0xa6, 0xed, 0xa0, 0xbd, 0xed, 0xb0, 0xa6]; // CESU-8
|
|
47
|
-
var encoded = msgpack.encode(string, options);
|
|
48
|
-
var decoded_utf8 = msgpack.decode(array_utf8, options);
|
|
49
|
-
var decoded_cesu8 = msgpack.decode(array_cesu8, options);
|
|
50
|
-
assert.deepEqual(toArray(encoded), array_utf8);
|
|
51
|
-
assert.equal(decoded_utf8, string);
|
|
52
|
-
assert.equal(decoded_cesu8, string);
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
function toArray(buffer) {
|
|
58
|
-
return Array.prototype.slice.call(buffer);
|
|
59
|
-
}
|
package/test/20.roundtrip.js
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env mocha -R spec
|
|
2
|
-
|
|
3
|
-
var assert = require("assert");
|
|
4
|
-
var msgpackJS = "../index";
|
|
5
|
-
var isBrowser = ("undefined" !== typeof window);
|
|
6
|
-
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
|
7
|
-
var TITLE = __filename.replace(/^.*\//, "");
|
|
8
|
-
|
|
9
|
-
var STRING_ASCII = "a";
|
|
10
|
-
var STRING_GREEK = "α";
|
|
11
|
-
var STRING_ASIAN = "亜";
|
|
12
|
-
|
|
13
|
-
// 128K characters
|
|
14
|
-
for (var i = 0; i < 17; i++) {
|
|
15
|
-
STRING_ASCII = STRING_ASCII + STRING_ASCII;
|
|
16
|
-
STRING_GREEK = STRING_GREEK + STRING_GREEK;
|
|
17
|
-
STRING_ASIAN = STRING_ASIAN + STRING_ASIAN;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function pattern(min, max, offset) {
|
|
21
|
-
var array = [];
|
|
22
|
-
var check = {};
|
|
23
|
-
var val = min - 1;
|
|
24
|
-
while (val <= max) {
|
|
25
|
-
if (min <= val && !check[val]) array.push(val);
|
|
26
|
-
check[val++] = 1;
|
|
27
|
-
if (val <= max && !check[val]) array.push(val);
|
|
28
|
-
check[val++] = 1;
|
|
29
|
-
if (val <= max && !check[val]) array.push(val);
|
|
30
|
-
check[val--] = 1;
|
|
31
|
-
val = val ? val * 2 - 1 : 1;
|
|
32
|
-
}
|
|
33
|
-
return array;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
var HAS_UINT8ARRAY = ("undefined" !== typeof Uint8Array);
|
|
37
|
-
|
|
38
|
-
describe(TITLE, function() {
|
|
39
|
-
describe("Buffer", function() {
|
|
40
|
-
run_tests();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
var describe_Uint8Array = HAS_UINT8ARRAY ? describe : describe.skip;
|
|
44
|
-
describe_Uint8Array("Uint8Array", function() {
|
|
45
|
-
run_tests({uint8array: true});
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
function run_tests(codecopt) {
|
|
50
|
-
var options;
|
|
51
|
-
|
|
52
|
-
if (codecopt) it(JSON.stringify(codecopt), function() {
|
|
53
|
-
var codec = msgpack.createCodec(codecopt);
|
|
54
|
-
assert.ok(codec);
|
|
55
|
-
options = {codec: codec};
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it("null", function() {
|
|
59
|
-
[null, undefined].forEach(function(value) {
|
|
60
|
-
var encoded = msgpack.encode(value, options);
|
|
61
|
-
var decoded = msgpack.decode(encoded, options);
|
|
62
|
-
assert.equal(decoded, value);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("boolean", function() {
|
|
67
|
-
[true, false].forEach(function(value) {
|
|
68
|
-
var encoded = msgpack.encode(value, options);
|
|
69
|
-
var decoded = msgpack.decode(encoded, options);
|
|
70
|
-
assert.equal(decoded, value);
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it("positive int (small)", function() {
|
|
75
|
-
pattern(0, 0x40000000).forEach(function(value) {
|
|
76
|
-
value = value | 0; // integer
|
|
77
|
-
var encoded = msgpack.encode(value, options);
|
|
78
|
-
var decoded = msgpack.decode(encoded, options);
|
|
79
|
-
assert.equal(decoded, value);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it("positive int (large)", function() {
|
|
84
|
-
pattern(0x40000000, 0xFFFFFFFF).forEach(function(value) {
|
|
85
|
-
var encoded = msgpack.encode(value, options);
|
|
86
|
-
var decoded = msgpack.decode(encoded, options);
|
|
87
|
-
assert.equal(decoded, value);
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it("negative int (small)", function() {
|
|
92
|
-
pattern(0, 0x40000000).forEach(function(value) {
|
|
93
|
-
value = -value | 0; // integer
|
|
94
|
-
var encoded = msgpack.encode(value, options);
|
|
95
|
-
var decoded = msgpack.decode(encoded, options);
|
|
96
|
-
assert.equal(decoded, value);
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
it("negative int (large)", function() {
|
|
101
|
-
pattern(0x40000000, 0xFFFFFFFF).forEach(function(value) {
|
|
102
|
-
value = -value;
|
|
103
|
-
var encoded = msgpack.encode(value, options);
|
|
104
|
-
var decoded = msgpack.decode(encoded, options);
|
|
105
|
-
assert.equal(decoded, value);
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it("float", function() {
|
|
110
|
-
[1.1, 10.01, 100.001, 1000.0001, 10000.00001, 100000.000001, 1000000.0000001].forEach(function(value) {
|
|
111
|
-
var encoded = msgpack.encode(value, options);
|
|
112
|
-
var decoded = msgpack.decode(encoded, options);
|
|
113
|
-
assert.equal(decoded, value);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it("string (ASCII)", function() {
|
|
118
|
-
this.timeout(30000);
|
|
119
|
-
pattern(0, 65537).forEach(function(length) {
|
|
120
|
-
var value = STRING_ASCII.substr(0, length);
|
|
121
|
-
var encoded = msgpack.encode(value, options);
|
|
122
|
-
var decoded = msgpack.decode(encoded, options);
|
|
123
|
-
assert.equal(decoded, value);
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it("string (GREEK)", function() {
|
|
128
|
-
this.timeout(30000);
|
|
129
|
-
pattern(0, 65537).forEach(function(length) {
|
|
130
|
-
var value = STRING_GREEK.substr(0, length);
|
|
131
|
-
var encoded = msgpack.encode(value, options);
|
|
132
|
-
var decoded = msgpack.decode(encoded, options);
|
|
133
|
-
assert.equal(decoded, value);
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
it("string (ASIAN)", function() {
|
|
138
|
-
this.timeout(30000);
|
|
139
|
-
pattern(0, 65537).forEach(function(length) {
|
|
140
|
-
var value = STRING_ASIAN.substr(0, length);
|
|
141
|
-
var encoded = msgpack.encode(value, options);
|
|
142
|
-
var decoded = msgpack.decode(encoded, options);
|
|
143
|
-
assert.equal(decoded, value);
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
it("array (small)", function() {
|
|
148
|
-
pattern(0, 257).forEach(function(length, idx) {
|
|
149
|
-
var value = new Array(length);
|
|
150
|
-
for (var i = 0; i < length; i++) {
|
|
151
|
-
value[i] = String.fromCharCode(i);
|
|
152
|
-
}
|
|
153
|
-
assert.equal(value.length, length);
|
|
154
|
-
var encoded = msgpack.encode(value, options);
|
|
155
|
-
var decoded = msgpack.decode(encoded, options);
|
|
156
|
-
assert.equal(decoded.length, length);
|
|
157
|
-
assert.equal(decoded[0], value[0]);
|
|
158
|
-
assert.equal(decoded[length - 1], value[length - 1]);
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
it("array (large)", function() {
|
|
163
|
-
this.timeout(30000);
|
|
164
|
-
pattern(0, 65537).forEach(function(length) {
|
|
165
|
-
var value = new Array(length);
|
|
166
|
-
assert.equal(value.length, length);
|
|
167
|
-
var encoded = msgpack.encode(value, options);
|
|
168
|
-
var decoded = msgpack.decode(encoded, options);
|
|
169
|
-
assert.equal(decoded.length, length);
|
|
170
|
-
assert.equal(decoded[0], value[0]);
|
|
171
|
-
assert.equal(decoded[length - 1], value[length - 1]);
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
it("object map (small)", function() {
|
|
176
|
-
pattern(0, 257).forEach(function(length) {
|
|
177
|
-
var value = {};
|
|
178
|
-
for (var i = 0; i < length; i++) {
|
|
179
|
-
var key = String.fromCharCode(i);
|
|
180
|
-
value[key] = length;
|
|
181
|
-
}
|
|
182
|
-
assert.equal(Object.keys(value).length, length);
|
|
183
|
-
var encoded = msgpack.encode(value, options);
|
|
184
|
-
var decoded = msgpack.decode(encoded, options);
|
|
185
|
-
assert.equal(Object.keys(decoded).length, length);
|
|
186
|
-
assert.equal(decoded[0], value[0]);
|
|
187
|
-
assert.equal(decoded[length - 1], value[length - 1]);
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
it("object map (large)", function() {
|
|
192
|
-
this.timeout(30000);
|
|
193
|
-
pattern(65536, 65537).forEach(function(length) {
|
|
194
|
-
var value = {};
|
|
195
|
-
for (var i = 0; i < length; i++) {
|
|
196
|
-
value[i] = length;
|
|
197
|
-
}
|
|
198
|
-
assert.equal(Object.keys(value).length, length);
|
|
199
|
-
var encoded = msgpack.encode(value, options);
|
|
200
|
-
var decoded = msgpack.decode(encoded, options);
|
|
201
|
-
assert.equal(Object.keys(decoded).length, length);
|
|
202
|
-
assert.equal(decoded[0], value[0]);
|
|
203
|
-
assert.equal(decoded[length - 1], value[length - 1]);
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
it("buffer", function() {
|
|
208
|
-
this.timeout(30000);
|
|
209
|
-
pattern(2, 65537).forEach(function(length, idx) {
|
|
210
|
-
var value = Buffer.alloc(length);
|
|
211
|
-
value.fill(idx);
|
|
212
|
-
assert.equal(value.length, length);
|
|
213
|
-
var encoded = msgpack.encode(value, options);
|
|
214
|
-
var decoded = msgpack.decode(encoded, options);
|
|
215
|
-
assert.equal(decoded.length, length);
|
|
216
|
-
assert.equal(decoded[0], value[0]);
|
|
217
|
-
assert.equal(decoded[length - 1], value[length - 1]);
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
}
|
package/test/21.ext.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env mocha -R spec
|
|
2
|
-
|
|
3
|
-
/*jshint -W053 */
|
|
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, "preset ext format failure. (128 means map format)"); // fixext 1
|
|
18
|
-
assert.equal(encoded[1], 0x0B); // Boolean
|
|
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, "preset ext format failure. (128 means map format)"); // ext 8
|
|
29
|
-
assert.equal(encoded[1], 0x09); // 1+8
|
|
30
|
-
assert.equal(encoded[2], 0x0D); // Date
|
|
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); // ext 8
|
|
71
|
-
assert.equal(encoded[1], 0x09); // 1+8
|
|
72
|
-
assert.equal(encoded[2], 0x0F); // Number
|
|
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
|
-
});
|