msgpack-lite 0.1.26 → 0.2.0
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/LICENSE +1 -1
- package/README.md +44 -164
- package/dist/msgpack.min.js +1 -2
- package/lib/bufferish-buffer.js +1 -1
- package/lib/decode-stream.js +7 -3
- package/lib/encode-stream.js +12 -4
- package/lib/ext-unpacker.js +1 -1
- package/lib/write-type.js +5 -0
- package/package.json +30 -19
- package/.npmignore +0 -8
- package/.travis.yml +0 -26
- package/.zuul.yml +0 -20
- package/Makefile +0 -48
- package/bower.json +0 -34
- 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 -371
- 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 -119
- 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/zuul/ie.html +0 -4
package/test/11.decode.js
DELETED
|
@@ -1,371 +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
|
-
ArrayBridge.concat = ArrayBridge_concat;
|
|
12
|
-
Uint8ArrayBridge.concat = Uint8ArrayBridge_concat;
|
|
13
|
-
|
|
14
|
-
describe(TITLE, function() {
|
|
15
|
-
describe("Buffer", function() {
|
|
16
|
-
run_tests(Buffer);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
describe("Array", function() {
|
|
20
|
-
run_tests(ArrayBridge);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
var describe_Uint8Array = HAS_UINT8ARRAY ? describe : describe.skip;
|
|
24
|
-
describe_Uint8Array("Uint8Array", function() {
|
|
25
|
-
run_tests(Uint8ArrayBridge);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
function run_tests(BUFFER) {
|
|
30
|
-
// positive fixint -- 0x00 - 0x7f
|
|
31
|
-
it("00-7f: positive fixint", function() {
|
|
32
|
-
for (var i = 0; i <= 0x7F; i++) {
|
|
33
|
-
assert.deepEqual(msgpack.decode(BUFFER([i])), i);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
// fixmap -- 0x80 - 0x8f
|
|
38
|
-
it("80-8f: fixmap", function() {
|
|
39
|
-
var map = {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10, k: 11, l: 12, m: 13, n: 14, o: 15, p: 16};
|
|
40
|
-
var src = [0x80];
|
|
41
|
-
var exp = {};
|
|
42
|
-
Object.keys(map).forEach(function(key) {
|
|
43
|
-
assert.deepEqual(msgpack.decode(BUFFER(src)), exp);
|
|
44
|
-
src[0]++;
|
|
45
|
-
src.push(0xa1);
|
|
46
|
-
src.push(key.charCodeAt(0));
|
|
47
|
-
src.push(map[key]);
|
|
48
|
-
exp[key] = map[key];
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// fixarray -- 0x90 - 0x9f
|
|
53
|
-
it("90-9f: fixarray", function() {
|
|
54
|
-
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
|
|
55
|
-
var src = [0x90];
|
|
56
|
-
var exp = [];
|
|
57
|
-
for (var i = 0; i < 16; i++) {
|
|
58
|
-
assert.deepEqual(msgpack.decode(BUFFER(src)), exp);
|
|
59
|
-
src[0]++;
|
|
60
|
-
src.push(array[i]);
|
|
61
|
-
exp.push(array[i]);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
// fixstr -- 0xa0 - 0xbf
|
|
66
|
-
it("a0-bf: fixstr", function() {
|
|
67
|
-
var str = "0123456789abcdefghijklmnopqrstu";
|
|
68
|
-
var src = [0xa0];
|
|
69
|
-
for (var i = 0; i < 32; i++) {
|
|
70
|
-
var exp = str.substr(0, i);
|
|
71
|
-
assert.deepEqual(msgpack.decode(BUFFER(src)), exp);
|
|
72
|
-
src[0]++;
|
|
73
|
-
src.push(str.charCodeAt(i));
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
// nil -- 0xc0
|
|
78
|
-
it("c0: nil", function() {
|
|
79
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xc0])), null);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
// (never used) -- 0xc1
|
|
83
|
-
it("c1: (never used)", function(done) {
|
|
84
|
-
try {
|
|
85
|
-
msgpack.decode(BUFFER([0xc1]));
|
|
86
|
-
done("should throw");
|
|
87
|
-
} catch (e) {
|
|
88
|
-
done();
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
// false -- 0xc2
|
|
93
|
-
// true -- 0xc3
|
|
94
|
-
it("c2-c3: boolean", function() {
|
|
95
|
-
assert.equal(msgpack.decode(BUFFER([0xc2])), false);
|
|
96
|
-
assert.equal(msgpack.decode(BUFFER([0xc3])), true);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
// bin 8 -- 0xc4
|
|
100
|
-
// bin 16 -- 0xc5
|
|
101
|
-
// bin 32 -- 0xc6
|
|
102
|
-
it("c4-c6: bin 8/16/32", function() {
|
|
103
|
-
this.timeout(30000);
|
|
104
|
-
var bin, buf, act;
|
|
105
|
-
|
|
106
|
-
bin = BUFFER(1);
|
|
107
|
-
buf = BUFFER.concat([BUFFER([0xc4, 1]), bin]);
|
|
108
|
-
act = msgpack.decode(buf);
|
|
109
|
-
assert.ok(Buffer.isBuffer(act));
|
|
110
|
-
assert.deepEqual(ArrayBridge(act), ArrayBridge(bin));
|
|
111
|
-
|
|
112
|
-
bin = BUFFER(256);
|
|
113
|
-
buf = BUFFER.concat([BUFFER([0xc5, 1, 0]), bin]);
|
|
114
|
-
act = msgpack.decode(buf);
|
|
115
|
-
assert.ok(Buffer.isBuffer(act));
|
|
116
|
-
assert.deepEqual(ArrayBridge(act), ArrayBridge(bin));
|
|
117
|
-
|
|
118
|
-
bin = BUFFER(65536);
|
|
119
|
-
buf = BUFFER.concat([BUFFER([0xc6, 0, 1, 0, 0]), bin]);
|
|
120
|
-
act = msgpack.decode(buf);
|
|
121
|
-
assert.ok(Buffer.isBuffer(act));
|
|
122
|
-
assert.deepEqual(ArrayBridge(act), ArrayBridge(bin));
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
// ext 8 -- 0xc7
|
|
126
|
-
// ext 16 -- 0xc8
|
|
127
|
-
// ext 32 -- 0xc9
|
|
128
|
-
it("c7-c9: ext 8/16/32", function() {
|
|
129
|
-
this.timeout(30000);
|
|
130
|
-
var ext, buf, act;
|
|
131
|
-
|
|
132
|
-
ext = BUFFER(1);
|
|
133
|
-
buf = BUFFER.concat([BUFFER([0xc7, 1, 0]), ext]);
|
|
134
|
-
act = msgpack.decode(buf);
|
|
135
|
-
assert.ok(Buffer.isBuffer(act.buffer));
|
|
136
|
-
assert.deepEqual(ArrayBridge(act.buffer), ArrayBridge(ext));
|
|
137
|
-
|
|
138
|
-
ext = BUFFER(256);
|
|
139
|
-
buf = BUFFER.concat([BUFFER([0xc8, 1, 0, 0]), ext]);
|
|
140
|
-
act = msgpack.decode(buf);
|
|
141
|
-
assert.ok(Buffer.isBuffer(act.buffer));
|
|
142
|
-
assert.deepEqual(ArrayBridge(act.buffer), ArrayBridge(ext));
|
|
143
|
-
|
|
144
|
-
ext = BUFFER(65536);
|
|
145
|
-
buf = BUFFER.concat([BUFFER([0xc9, 0, 1, 0, 0, 0]), ext]);
|
|
146
|
-
act = msgpack.decode(buf);
|
|
147
|
-
assert.ok(Buffer.isBuffer(act.buffer));
|
|
148
|
-
assert.deepEqual(ArrayBridge(act.buffer), ArrayBridge(ext));
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
// float 32 -- 0xca
|
|
152
|
-
// float 64 -- 0xcb
|
|
153
|
-
it("ca-cb: float 32/64", function() {
|
|
154
|
-
var buf;
|
|
155
|
-
|
|
156
|
-
buf = Buffer(5);
|
|
157
|
-
buf.writeUInt8(0xCA, 0);
|
|
158
|
-
buf.writeFloatBE(0.5, 1);
|
|
159
|
-
assert.deepEqual(msgpack.decode(BUFFER(buf)), 0.5);
|
|
160
|
-
|
|
161
|
-
buf = Buffer(9);
|
|
162
|
-
buf.writeUInt8(0xCB, 0);
|
|
163
|
-
buf.writeDoubleBE(0.5, 1);
|
|
164
|
-
assert.deepEqual(msgpack.decode(BUFFER(buf)), 0.5);
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
// uint 8 -- 0xcc
|
|
168
|
-
// uint 16 -- 0xcd
|
|
169
|
-
// uint 32 -- 0xce
|
|
170
|
-
// uint 64 -- 0xcf
|
|
171
|
-
it("cc-cf: uint 8/16/32/64", function() {
|
|
172
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xcc, 0x01])), 0x01);
|
|
173
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xcc, 0xFF])), 0xFF);
|
|
174
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xcd, 0x00, 0x01])), 0x0001);
|
|
175
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xcd, 0xFF, 0xFF])), 0xFFFF);
|
|
176
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xce, 0x00, 0x00, 0x00, 0x01])), 0x00000001);
|
|
177
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xce, 0x7F, 0xFF, 0xFF, 0xFF])), 0x7FFFFFFF);
|
|
178
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xce, 0xFF, 0xFF, 0xFF, 0xFF])), 0xFFFFFFFF);
|
|
179
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xce, 0x12, 0x34, 0x56, 0x78])), 0x12345678);
|
|
180
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xcf, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF])), 0x00000000FFFFFFFF);
|
|
181
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xcf, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0])), 0x0000FFFFFFFF0000);
|
|
182
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xcf, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0, 0, 0])), 0xFFFFFFFF00000000);
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
// int 8 -- 0xd0
|
|
186
|
-
// int 16 -- 0xd1
|
|
187
|
-
// int 32 -- 0xd2
|
|
188
|
-
// int 64 -- 0xd3
|
|
189
|
-
it("d0-d3: int 8/16/32/64", function() {
|
|
190
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd0, 0x7F])), 0x7F);
|
|
191
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd0, 0x80])), -0x80);
|
|
192
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd0, 0xFF])), -1);
|
|
193
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd1, 0x7F, 0xFF])), 0x7FFF);
|
|
194
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd1, 0x80, 0x00])), -0x8000);
|
|
195
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd1, 0xFF, 0xFF])), -1);
|
|
196
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd2, 0x7F, 0xFF, 0xFF, 0xFF])), 0x7FFFFFFF);
|
|
197
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd2, 0x80, 0x00, 0x00, 0x00])), -0x80000000);
|
|
198
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd2, 0xFF, 0xFF, 0xFF, 0xFF])), -1);
|
|
199
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd2, 0x12, 0x34, 0x56, 0x78])), 0x12345678);
|
|
200
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd3, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF])), 0x00000000FFFFFFFF);
|
|
201
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd3, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0])), 0x0000FFFFFFFF0000);
|
|
202
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd3, 0x7F, 0xFF, 0xFF, 0xFF, 0, 0, 0, 0])), 0x7FFFFFFF00000000);
|
|
203
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd3, 0x80, 0, 0, 0, 0, 0, 0, 0])), -0x8000000000000000);
|
|
204
|
-
assert.deepEqual(msgpack.decode(BUFFER([0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF])), -1);
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
// fixext 1 -- 0xd4
|
|
208
|
-
// fixext 2 -- 0xd5
|
|
209
|
-
// fixext 4 -- 0xd6
|
|
210
|
-
// fixext 8 -- 0xd7
|
|
211
|
-
// fixext 16 -- 0xd8
|
|
212
|
-
it("d4-d8: fixext 1/2/4/8/16", function() {
|
|
213
|
-
var ext, buf, act;
|
|
214
|
-
|
|
215
|
-
ext = BUFFER(1);
|
|
216
|
-
buf = BUFFER.concat([BUFFER([0xd4, 0]), ext]);
|
|
217
|
-
act = msgpack.decode(buf);
|
|
218
|
-
assert.ok(Buffer.isBuffer(act.buffer));
|
|
219
|
-
assert.deepEqual(ArrayBridge(act.buffer), ArrayBridge(ext));
|
|
220
|
-
|
|
221
|
-
ext = BUFFER(2);
|
|
222
|
-
buf = BUFFER.concat([BUFFER([0xd5, 0]), ext]);
|
|
223
|
-
act = msgpack.decode(buf);
|
|
224
|
-
assert.ok(Buffer.isBuffer(act.buffer));
|
|
225
|
-
assert.deepEqual(ArrayBridge(act.buffer), ArrayBridge(ext));
|
|
226
|
-
|
|
227
|
-
ext = BUFFER(4);
|
|
228
|
-
buf = BUFFER.concat([BUFFER([0xd6, 0]), ext]);
|
|
229
|
-
act = msgpack.decode(buf);
|
|
230
|
-
assert.ok(Buffer.isBuffer(act.buffer));
|
|
231
|
-
assert.deepEqual(ArrayBridge(act.buffer), ArrayBridge(ext));
|
|
232
|
-
|
|
233
|
-
ext = BUFFER(8);
|
|
234
|
-
buf = BUFFER.concat([BUFFER([0xd7, 0]), ext]);
|
|
235
|
-
act = msgpack.decode(buf);
|
|
236
|
-
assert.ok(Buffer.isBuffer(act.buffer));
|
|
237
|
-
assert.deepEqual(ArrayBridge(act.buffer), ArrayBridge(ext));
|
|
238
|
-
|
|
239
|
-
ext = BUFFER(16);
|
|
240
|
-
buf = BUFFER.concat([BUFFER([0xd8, 0]), ext]);
|
|
241
|
-
act = msgpack.decode(buf);
|
|
242
|
-
assert.ok(Buffer.isBuffer(act.buffer));
|
|
243
|
-
assert.deepEqual(ArrayBridge(act.buffer), ArrayBridge(ext));
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
// str 8 -- 0xd9
|
|
247
|
-
// str 16 -- 0xda
|
|
248
|
-
// str 32 -- 0xdb
|
|
249
|
-
it("d9-db: str 8/16/32", function() {
|
|
250
|
-
this.timeout(30000);
|
|
251
|
-
var str, buf, src = "a";
|
|
252
|
-
for (var i = 0; i < 17; i++) src += src;
|
|
253
|
-
|
|
254
|
-
str = src.substr(0, 0xFF);
|
|
255
|
-
buf = BUFFER.concat([BUFFER([0xd9, 0xFF]), BUFFER(str)]);
|
|
256
|
-
assert.deepEqual(msgpack.decode(buf), str);
|
|
257
|
-
|
|
258
|
-
str = src.substr(0, 0x0100);
|
|
259
|
-
buf = BUFFER.concat([BUFFER([0xda, 0x01, 0x00]), BUFFER(str)]);
|
|
260
|
-
assert.deepEqual(msgpack.decode(buf), str);
|
|
261
|
-
|
|
262
|
-
str = src.substr(0, 0xFFFF);
|
|
263
|
-
buf = BUFFER.concat([BUFFER([0xda, 0xFF, 0xFF]), BUFFER(str)]);
|
|
264
|
-
assert.deepEqual(msgpack.decode(buf), str);
|
|
265
|
-
|
|
266
|
-
str = src.substr(0, 0x010000);
|
|
267
|
-
buf = BUFFER.concat([BUFFER([0xdb, 0x00, 0x01, 0x00, 0x00]), BUFFER(str)]);
|
|
268
|
-
assert.deepEqual(msgpack.decode(buf), str);
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
// array 16 -- 0xdc
|
|
272
|
-
// array 32 -- 0xdd
|
|
273
|
-
it("dc-dd: array 16/32", function() {
|
|
274
|
-
this.timeout(30000);
|
|
275
|
-
var i, src;
|
|
276
|
-
var array = new Array(256);
|
|
277
|
-
for (i = 0; i < 256; i++) array[i] = i & 0x7F;
|
|
278
|
-
src = [0xdc, 0x01, 0x00].concat(array);
|
|
279
|
-
assert.deepEqual(msgpack.decode(BUFFER(src)), array);
|
|
280
|
-
|
|
281
|
-
for (i = 0; i < 8; i++) array = array.concat(array);
|
|
282
|
-
src = [0xdd, 0x00, 0x01, 0x00, 0x00].concat(array);
|
|
283
|
-
assert.deepEqual(msgpack.decode(BUFFER(src)), array);
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
// map 16 -- 0xde
|
|
287
|
-
// map 32 -- 0xdf
|
|
288
|
-
it("de-df: map 16/32", function() {
|
|
289
|
-
this.timeout(30000);
|
|
290
|
-
var i, src, key;
|
|
291
|
-
var map = {};
|
|
292
|
-
var array = [];
|
|
293
|
-
for (i = 0; i < 256; i++) {
|
|
294
|
-
key = i.toString(16);
|
|
295
|
-
if (i < 16) key = "0" + key;
|
|
296
|
-
map[key] = i & 0x7F;
|
|
297
|
-
array.push(0xa2);
|
|
298
|
-
array.push(key.charCodeAt(0));
|
|
299
|
-
array.push(key.charCodeAt(1));
|
|
300
|
-
array.push(i & 0x7F);
|
|
301
|
-
}
|
|
302
|
-
src = [0xde, 0x01, 0x00].concat(array);
|
|
303
|
-
assert.deepEqual(msgpack.decode(BUFFER(src)), map);
|
|
304
|
-
|
|
305
|
-
for (i = 0; i < 8; i++) array = array.concat(array);
|
|
306
|
-
src = [0xdf, 0x00, 0x01, 0x00, 0x00].concat(array);
|
|
307
|
-
assert.deepEqual(msgpack.decode(BUFFER(src)), map);
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
// negative fixint -- 0xe0 - 0xff
|
|
311
|
-
it("e0-ff: negative fixint", function() {
|
|
312
|
-
for (var i = -32; i <= -1; i++) {
|
|
313
|
-
assert.deepEqual(msgpack.decode(BUFFER([i & 0xFF])), i);
|
|
314
|
-
}
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
function ArrayBridge(array) {
|
|
319
|
-
if ("number" === typeof array) {
|
|
320
|
-
array = init_seq([], array);
|
|
321
|
-
} else if ("string" === typeof array) {
|
|
322
|
-
array = copy_string([], array);
|
|
323
|
-
} else if (Buffer.isBuffer(array) || (HAS_UINT8ARRAY && (array instanceof Uint8Array))) {
|
|
324
|
-
array = copy_array([], array);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
return array;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
function init_seq(array, length) {
|
|
331
|
-
for (var i = 0; i < length; i++) {
|
|
332
|
-
array[i] = i & 255;
|
|
333
|
-
}
|
|
334
|
-
return array;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
function copy_string(array, src) {
|
|
338
|
-
for (var i = 0; i < src.length; i++) {
|
|
339
|
-
array[i] = src.charCodeAt(i);
|
|
340
|
-
}
|
|
341
|
-
return array;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
function copy_array(array, src) {
|
|
345
|
-
for (var i = 0; i < src.length; i++) {
|
|
346
|
-
array[i] = src[i];
|
|
347
|
-
}
|
|
348
|
-
return array;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
function ArrayBridge_concat(pair) {
|
|
352
|
-
return Array.prototype.concat.apply([], pair);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
function Uint8ArrayBridge(array) {
|
|
356
|
-
if ("number" === typeof array) {
|
|
357
|
-
array = init_seq(new Uint8Array(array), array);
|
|
358
|
-
} else if ("string" === typeof array) {
|
|
359
|
-
array = copy_string(new Uint8Array(array.length), array);
|
|
360
|
-
} else if (Buffer.isBuffer(array)) {
|
|
361
|
-
array = copy_array(new Uint8Array(array.length), array);
|
|
362
|
-
} else {
|
|
363
|
-
array = new Uint8Array(array);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
return array;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
function Uint8ArrayBridge_concat(pair) {
|
|
370
|
-
return Uint8ArrayBridge(ArrayBridge_concat(pair.map(ArrayBridge)));
|
|
371
|
-
}
|
package/test/12.encoder.js
DELETED
|
@@ -1,36 +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 source = {"foo": "bar"};
|
|
10
|
-
var packed = toArray(msgpack.encode(source));
|
|
11
|
-
|
|
12
|
-
describe(TITLE, function() {
|
|
13
|
-
|
|
14
|
-
it("Encoder().encode(obj)", function(done) {
|
|
15
|
-
var encoder = new msgpack.Encoder();
|
|
16
|
-
encoder.on("data", function(data) {
|
|
17
|
-
assert.deepEqual(toArray(data), packed);
|
|
18
|
-
});
|
|
19
|
-
encoder.on("end", done);
|
|
20
|
-
encoder.encode(source);
|
|
21
|
-
encoder.end();
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("Encoder().end(obj)", function(done) {
|
|
25
|
-
var encoder = new msgpack.Encoder();
|
|
26
|
-
encoder.on("data", function(data) {
|
|
27
|
-
assert.deepEqual(toArray(data), packed);
|
|
28
|
-
});
|
|
29
|
-
encoder.on("end", done);
|
|
30
|
-
encoder.end(source);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
function toArray(buffer) {
|
|
35
|
-
return Array.prototype.slice.call(buffer);
|
|
36
|
-
}
|
package/test/13.decoder.js
DELETED
|
@@ -1,32 +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 source = {"foo": "bar"};
|
|
10
|
-
var packed = msgpack.encode(source);
|
|
11
|
-
|
|
12
|
-
describe(TITLE, function() {
|
|
13
|
-
|
|
14
|
-
it("Decoder().decode(obj)", function(done) {
|
|
15
|
-
var decoder = new msgpack.Decoder();
|
|
16
|
-
decoder.on("data", function(data) {
|
|
17
|
-
assert.deepEqual(data, source);
|
|
18
|
-
});
|
|
19
|
-
decoder.on("end", done);
|
|
20
|
-
decoder.decode(packed);
|
|
21
|
-
decoder.end();
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("Decoder().end(obj)", function(done) {
|
|
25
|
-
var decoder = new msgpack.Decoder();
|
|
26
|
-
decoder.on("data", function(data) {
|
|
27
|
-
assert.deepEqual(data, source);
|
|
28
|
-
});
|
|
29
|
-
decoder.on("end", done);
|
|
30
|
-
decoder.end(packed);
|
|
31
|
-
});
|
|
32
|
-
});
|
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 = new Buffer([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 new Buffer([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(new Buffer([0xa1, 65]), options)), [65]);
|
|
23
|
-
|
|
24
|
-
// str
|
|
25
|
-
assert.equal(msgpack.decode(new Buffer([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(new Buffer([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 = new Buffer(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
|
-
});
|