1 | #!/usr/bin/env mocha -R spec
|
2 |
|
3 |
|
4 |
|
5 | var assert = require("assert");
|
6 |
|
7 | var msgpackJS = "../index";
|
8 | var isBrowser = ("undefined" !== typeof window);
|
9 | var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
10 | var TITLE = __filename.replace(/^.*\//, "") + ":";
|
11 |
|
12 | var TYPED_ARRAY = {
|
13 | "Int8Array": [0, 1, 2, 126, 127, -128, -127, -2, -1],
|
14 | "Uint8Array": [0, 1, 2, 253, 254, 255],
|
15 | "Uint8ClampedArray": [0, 1, 2, 253, 254, 255],
|
16 | "Int16Array": [0, 1, 2, 32766, 32767, -32768, -32767, -2, -1],
|
17 | "Uint16Array": [0, 1, 2, 65534, 65535],
|
18 | "Int32Array": [0, 1, 2, 2147483646, 2147483647],
|
19 | "Uint32Array": [0, 1, 2, 4294967294, 4294967295],
|
20 | "Float32Array": [0, 1, 0.5, 0.25, -0.25, -0.5, -1],
|
21 | "Float64Array": [0, 1, 0.5, 0.25, -0.25, -0.5, -1]
|
22 | };
|
23 |
|
24 | var ARRAY_BUFFER = {
|
25 | "ArrayBuffer": [0, 1, 2, 253, 254, 255]
|
26 | };
|
27 |
|
28 | var DATA_VIEW = {
|
29 | "DataView": [0, 1, 2, 253, 254, 255]
|
30 | };
|
31 |
|
32 | describe(TITLE, function() {
|
33 | Object.keys(TYPED_ARRAY).forEach(function(name) {
|
34 | var Class = global[name];
|
35 | var skip = Class ? it : it.skip;
|
36 | skip(name, function() {
|
37 | var sample = TYPED_ARRAY[name];
|
38 | var source = new Class(sample);
|
39 | var encoded = msgpack.encode(source);
|
40 | var decoded = msgpack.decode(encoded);
|
41 | var actual = Array.prototype.slice.call(decoded);
|
42 | assert.deepEqual(actual, sample);
|
43 | assert.ok(decoded instanceof Class);
|
44 | });
|
45 | });
|
46 |
|
47 | Object.keys(ARRAY_BUFFER).forEach(function(name) {
|
48 | var Class = global[name];
|
49 | var skip = Class ? it : it.skip;
|
50 | skip(name, function() {
|
51 | var sample = ARRAY_BUFFER[name];
|
52 | var source = (new Uint8Array(sample)).buffer;
|
53 | var encoded = msgpack.encode(source);
|
54 | var decoded = msgpack.decode(encoded);
|
55 | var actual = Array.prototype.slice.call(new Uint8Array(decoded));
|
56 | assert.deepEqual(actual, sample);
|
57 | assert.ok(decoded instanceof Class);
|
58 | });
|
59 | });
|
60 |
|
61 | Object.keys(DATA_VIEW).forEach(function(name) {
|
62 | var Class = global[name];
|
63 | var skip = Class ? it : it.skip;
|
64 | skip(name, function() {
|
65 | var sample = DATA_VIEW[name];
|
66 | var source = new DataView((new Uint8Array(sample)).buffer);
|
67 | var encoded = msgpack.encode(source);
|
68 | var decoded = msgpack.decode(encoded);
|
69 | var actual = Array.prototype.slice.call(new Uint8Array(decoded.buffer));
|
70 | assert.deepEqual(actual, sample);
|
71 | assert.ok(decoded instanceof Class);
|
72 | });
|
73 | });
|
74 | });
|