You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.6 KiB

#!/usr/bin/env mocha -R spec
/*jshint -W053 */
var assert = require("assert");
var msgpackJS = "../index";
var isBrowser = ("undefined" !== typeof window);
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
var TITLE = __filename.replace(/^.*\//, "");
var TYPED_ARRAY = {
"Int8Array": [0, 1, 2, 126, 127, -128, -127, -2, -1],
"Uint8Array": [0, 1, 2, 253, 254, 255],
"Uint8ClampedArray": [0, 1, 2, 253, 254, 255],
"Int16Array": [0, 1, 2, 32766, 32767, -32768, -32767, -2, -1],
"Uint16Array": [0, 1, 2, 65534, 65535],
"Int32Array": [0, 1, 2, 2147483646, 2147483647],
"Uint32Array": [0, 1, 2, 4294967294, 4294967295],
"Float32Array": [0, 1, 0.5, 0.25, -0.25, -0.5, -1],
"Float64Array": [0, 1, 0.5, 0.25, -0.25, -0.5, -1]
};
var ARRAY_BUFFER = {
"ArrayBuffer": [0, 1, 2, 253, 254, 255]
};
var DATA_VIEW = {
"DataView": [0, 1, 2, 253, 254, 255]
};
describe(TITLE, function() {
Object.keys(TYPED_ARRAY).forEach(function(name) {
var Class = global[name];
var skip = Class ? it : it.skip;
skip(name, function() {
var sample = TYPED_ARRAY[name];
var source = new Class(sample);
assert.ok(source instanceof Class);
assert.equal(source.length, sample.length);
var encoded = msgpack.encode(source);
var decoded = msgpack.decode(encoded);
var actual = Array.prototype.slice.call(decoded);
assert.deepEqual(actual, sample);
assert.ok(decoded instanceof Class);
});
});
Object.keys(ARRAY_BUFFER).forEach(function(name) {
var Class = global[name];
var skip = Class ? it : it.skip;
skip(name, function() {
var sample = ARRAY_BUFFER[name];
var source = (new Uint8Array(sample)).buffer;
assert.ok(source instanceof Class);
assert.equal(source.byteLength, sample.length);
var encoded = msgpack.encode(source);
var decoded = msgpack.decode(encoded);
var actual = Array.prototype.slice.call(new Uint8Array(decoded));
assert.deepEqual(actual, sample);
assert.ok(decoded instanceof Class);
});
});
Object.keys(DATA_VIEW).forEach(function(name) {
var Class = global[name];
var skip = Class ? it : it.skip;
skip(name, function() {
var sample = DATA_VIEW[name];
var source = new DataView((new Uint8Array(sample)).buffer);
assert.ok(source instanceof Class);
assert.equal(source.byteLength, sample.length);
var encoded = msgpack.encode(source);
var decoded = msgpack.decode(encoded);
var actual = Array.prototype.slice.call(new Uint8Array(decoded.buffer));
assert.deepEqual(actual, sample);
assert.ok(decoded instanceof Class);
});
});
});