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 | var TYPED_ARRAY = {
|
12 | "Int8Array": [0, 1, 2, 126, 127, -128, -127, -2, -1],
|
13 | "Uint8Array": [0, 1, 2, 253, 254, 255],
|
14 | "Uint8ClampedArray": [0, 1, 2, 253, 254, 255],
|
15 | "Int16Array": [0, 1, 2, 32766, 32767, -32768, -32767, -2, -1],
|
16 | "Uint16Array": [0, 1, 2, 65534, 65535],
|
17 | "Int32Array": [0, 1, 2, 2147483646, 2147483647],
|
18 | "Uint32Array": [0, 1, 2, 4294967294, 4294967295],
|
19 | "Float32Array": [0, 1, 0.5, 0.25, -0.25, -0.5, -1],
|
20 | "Float64Array": [0, 1, 0.5, 0.25, -0.25, -0.5, -1]
|
21 | };
|
22 |
|
23 | var ARRAY_BUFFER = {
|
24 | "ArrayBuffer": [0, 1, 2, 253, 254, 255]
|
25 | };
|
26 |
|
27 | var DATA_VIEW = {
|
28 | "DataView": [0, 1, 2, 253, 254, 255]
|
29 | };
|
30 |
|
31 | describe(TITLE, function() {
|
32 | Object.keys(TYPED_ARRAY).forEach(function(name) {
|
33 | var Class = global[name];
|
34 | var skip = Class ? it : it.skip;
|
35 | skip(name, function() {
|
36 | var sample = TYPED_ARRAY[name];
|
37 | var source = new Class(sample);
|
38 | assert.ok(source instanceof Class);
|
39 | assert.equal(source.length, sample.length);
|
40 | var encoded = msgpack.encode(source);
|
41 | var decoded = msgpack.decode(encoded);
|
42 | var actual = Array.prototype.slice.call(decoded);
|
43 | assert.deepEqual(actual, sample);
|
44 | assert.ok(decoded instanceof Class);
|
45 | });
|
46 | });
|
47 |
|
48 | Object.keys(ARRAY_BUFFER).forEach(function(name) {
|
49 | var Class = global[name];
|
50 | var skip = Class ? it : it.skip;
|
51 | skip(name, function() {
|
52 | var sample = ARRAY_BUFFER[name];
|
53 | var source = (new Uint8Array(sample)).buffer;
|
54 | assert.ok(source instanceof Class);
|
55 | assert.equal(source.byteLength, sample.length);
|
56 | var encoded = msgpack.encode(source);
|
57 | var decoded = msgpack.decode(encoded);
|
58 | var actual = Array.prototype.slice.call(new Uint8Array(decoded));
|
59 | assert.deepEqual(actual, sample);
|
60 | assert.ok(decoded instanceof Class);
|
61 | });
|
62 | });
|
63 |
|
64 | Object.keys(DATA_VIEW).forEach(function(name) {
|
65 | var Class = global[name];
|
66 | var skip = Class ? it : it.skip;
|
67 | skip(name, function() {
|
68 | var sample = DATA_VIEW[name];
|
69 | var source = new DataView((new Uint8Array(sample)).buffer);
|
70 | assert.ok(source instanceof Class);
|
71 | assert.equal(source.byteLength, sample.length);
|
72 | var encoded = msgpack.encode(source);
|
73 | var decoded = msgpack.decode(encoded);
|
74 | var actual = Array.prototype.slice.call(new Uint8Array(decoded.buffer));
|
75 | assert.deepEqual(actual, sample);
|
76 | assert.ok(decoded instanceof Class);
|
77 | });
|
78 | });
|
79 | });
|