UNPKG

2.68 kBJavaScriptView Raw
1#!/usr/bin/env mocha -R spec
2
3/*jshint -W053 */
4
5var assert = require("assert");
6var msgpackJS = "../index";
7var isBrowser = ("undefined" !== typeof window);
8var msgpack = isBrowser && window.msgpack || require(msgpackJS);
9var TITLE = __filename.replace(/^.*\//, "");
10
11var 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
23var ARRAY_BUFFER = {
24 "ArrayBuffer": [0, 1, 2, 253, 254, 255]
25};
26
27var DATA_VIEW = {
28 "DataView": [0, 1, 2, 253, 254, 255]
29};
30
31describe(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});