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/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
- }
@@ -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
- }
@@ -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
- });