These buffers may have NULL as their address, which slice::from_raw_parts does not allow.
175 lines
6.5 KiB
JavaScript
175 lines
6.5 KiB
JavaScript
var addon = require('../native');
|
|
var assert = require('chai').assert;
|
|
|
|
describe('JsObject', function() {
|
|
it('return the v8::Global object', function () {
|
|
assert(global === addon.return_js_global_object());
|
|
});
|
|
|
|
it('return a JsObject built in Rust', function () {
|
|
assert.deepEqual({}, addon.return_js_object());
|
|
});
|
|
|
|
it('return a JsObject with a number key value pair', function () {
|
|
assert.deepEqual({number: 9000}, addon.return_js_object_with_number());
|
|
});
|
|
|
|
it('return a JsObject with an string key value pair', function () {
|
|
assert.deepEqual({string: "hello node"}, addon.return_js_object_with_string());
|
|
});
|
|
|
|
it('return a JsObject with mixed content key value pairs', function () {
|
|
assert.deepEqual({number: 9000, string: 'hello node'}, addon.return_js_object_with_mixed_content());
|
|
});
|
|
|
|
it('gets a 16-byte, zeroed ArrayBuffer', function() {
|
|
var b = addon.return_array_buffer();
|
|
assert.equal(b.byteLength, 16);
|
|
assert.equal((new Uint32Array(b))[0], 0);
|
|
assert.equal((new Uint32Array(b))[1], 0);
|
|
assert.equal((new Uint32Array(b))[2], 0);
|
|
assert.equal((new Uint32Array(b))[3], 0);
|
|
});
|
|
|
|
it('correctly reads an ArrayBuffer using the lock API', function() {
|
|
var b = new ArrayBuffer(16);
|
|
var a = new Uint32Array(b);
|
|
a[0] = 47;
|
|
a[1] = 133;
|
|
a[2] = 9;
|
|
a[3] = 88888888;
|
|
assert.equal(addon.read_array_buffer_with_lock(b, 0), 47);
|
|
assert.equal(addon.read_array_buffer_with_lock(b, 1), 133);
|
|
assert.equal(addon.read_array_buffer_with_lock(b, 2), 9);
|
|
assert.equal(addon.read_array_buffer_with_lock(b, 3), 88888888);
|
|
});
|
|
|
|
it('correctly reads an ArrayBuffer using the borrow API', function() {
|
|
var b = new ArrayBuffer(16);
|
|
var a = new Uint32Array(b);
|
|
a[0] = 49;
|
|
a[1] = 135;
|
|
a[2] = 11;
|
|
a[3] = 89898989;
|
|
assert.equal(addon.read_array_buffer_with_borrow(b, 0), 49);
|
|
assert.equal(addon.read_array_buffer_with_borrow(b, 1), 135);
|
|
assert.equal(addon.read_array_buffer_with_borrow(b, 2), 11);
|
|
assert.equal(addon.read_array_buffer_with_borrow(b, 3), 89898989);
|
|
});
|
|
|
|
it('correctly reads an empty ArrayBuffer using the borrow API', function() {
|
|
let nonempty = Uint8Array.from([1, 2, 3]);
|
|
assert.equal(addon.sum_array_buffer_with_borrow(nonempty.buffer), 6);
|
|
|
|
let empty = Uint8Array.from([]);
|
|
assert.equal(addon.sum_array_buffer_with_borrow(empty.buffer), 0);
|
|
});
|
|
|
|
it('correctly writes to an ArrayBuffer using the lock API', function() {
|
|
var b = new ArrayBuffer(16);
|
|
addon.write_array_buffer_with_lock(b, 0, 999);
|
|
assert.equal((new Uint32Array(b))[0], 999);
|
|
addon.write_array_buffer_with_lock(b, 1, 111);
|
|
assert.equal((new Uint32Array(b))[1], 111);
|
|
addon.write_array_buffer_with_lock(b, 2, 121212);
|
|
assert.equal((new Uint32Array(b))[2], 121212);
|
|
addon.write_array_buffer_with_lock(b, 3, 99991111);
|
|
assert.equal((new Uint32Array(b))[3], 99991111);
|
|
});
|
|
|
|
it('correctly writes to an ArrayBuffer using the borrow_mut API', function() {
|
|
var b = new ArrayBuffer(16);
|
|
addon.write_array_buffer_with_borrow_mut(b, 0, 434);
|
|
assert.equal((new Uint32Array(b))[0], 434);
|
|
addon.write_array_buffer_with_borrow_mut(b, 1, 100);
|
|
assert.equal((new Uint32Array(b))[1], 100);
|
|
addon.write_array_buffer_with_borrow_mut(b, 2, 22);
|
|
assert.equal((new Uint32Array(b))[2], 22);
|
|
addon.write_array_buffer_with_borrow_mut(b, 3, 400100);
|
|
assert.equal((new Uint32Array(b))[3], 400100);
|
|
});
|
|
|
|
it('correctly writes to an empty ArrayBuffer using the borrow API', function() {
|
|
let nonempty = Uint8Array.from([1, 2, 3]);
|
|
addon.increment_array_buffer_with_borrow_mut(nonempty.buffer);
|
|
assert.deepEqual(Array.from(nonempty), [2, 3, 4]);
|
|
|
|
let empty = Uint8Array.from([]);
|
|
addon.increment_array_buffer_with_borrow_mut(empty.buffer);
|
|
assert.deepEqual(Array.from(empty), []);
|
|
});
|
|
|
|
it('gets a 16-byte, zeroed Buffer', function() {
|
|
var b = addon.return_buffer();
|
|
assert.ok(b.equals(Buffer.alloc(16)));
|
|
});
|
|
|
|
it('correctly reads a Buffer using the lock API', function() {
|
|
var b = Buffer.allocUnsafe(16);
|
|
b.writeUInt32LE(147, 0);
|
|
b.writeUInt32LE(1133, 4);
|
|
b.writeUInt32LE(109, 8);
|
|
b.writeUInt32LE(189189, 12);
|
|
assert.equal(addon.read_buffer_with_lock(b, 0), 147);
|
|
assert.equal(addon.read_buffer_with_lock(b, 1), 1133);
|
|
assert.equal(addon.read_buffer_with_lock(b, 2), 109);
|
|
assert.equal(addon.read_buffer_with_lock(b, 3), 189189);
|
|
});
|
|
|
|
it('correctly reads a Buffer using the borrow API', function() {
|
|
var b = Buffer.allocUnsafe(16);
|
|
b.writeUInt32LE(149, 0);
|
|
b.writeUInt32LE(2244, 4);
|
|
b.writeUInt32LE(707, 8);
|
|
b.writeUInt32LE(22914478, 12);
|
|
assert.equal(addon.read_buffer_with_borrow(b, 0), 149);
|
|
assert.equal(addon.read_buffer_with_borrow(b, 1), 2244);
|
|
assert.equal(addon.read_buffer_with_borrow(b, 2), 707);
|
|
assert.equal(addon.read_buffer_with_borrow(b, 3), 22914478);
|
|
});
|
|
|
|
it('correctly reads an empty Buffer using the borrow API', function() {
|
|
let nonempty = Buffer.from([1, 2, 3]);
|
|
assert.equal(addon.sum_buffer_with_borrow(nonempty), 6);
|
|
|
|
let empty = Buffer.from([]);
|
|
assert.equal(addon.sum_buffer_with_borrow(empty), 0);
|
|
});
|
|
|
|
it('correctly writes to a Buffer using the lock API', function() {
|
|
var b = Buffer.allocUnsafe(16);
|
|
b.fill(0);
|
|
addon.write_buffer_with_lock(b, 0, 6);
|
|
assert.equal(b.readUInt32LE(0), 6);
|
|
addon.write_buffer_with_lock(b, 1, 6000001);
|
|
assert.equal(b.readUInt32LE(4), 6000001);
|
|
addon.write_buffer_with_lock(b, 2, 4500);
|
|
assert.equal(b.readUInt32LE(8), 4500);
|
|
addon.write_buffer_with_lock(b, 3, 421600);
|
|
assert.equal(b.readUInt32LE(12), 421600);
|
|
});
|
|
|
|
it('correctly writes to a Buffer using the borrow_mut API', function() {
|
|
var b = Buffer.allocUnsafe(16);
|
|
b.fill(0);
|
|
addon.write_buffer_with_borrow_mut(b, 0, 16);
|
|
assert.equal(b.readUInt32LE(0), 16);
|
|
addon.write_buffer_with_borrow_mut(b, 1, 16000001);
|
|
assert.equal(b.readUInt32LE(4), 16000001);
|
|
addon.write_buffer_with_borrow_mut(b, 2, 232);
|
|
assert.equal(b.readUInt32LE(8), 232);
|
|
addon.write_buffer_with_borrow_mut(b, 3, 66012);
|
|
assert.equal(b.readUInt32LE(12), 66012);
|
|
});
|
|
|
|
it('correctly writes to an empty Buffer using the borrow API', function() {
|
|
let nonempty = Buffer.from([1, 2, 3]);
|
|
addon.increment_buffer_with_borrow_mut(nonempty);
|
|
assert.deepEqual(Array.from(nonempty), [2, 3, 4]);
|
|
|
|
let empty = Buffer.from([]);
|
|
addon.increment_buffer_with_borrow_mut(empty);
|
|
assert.deepEqual(Array.from(empty), []);
|
|
});
|
|
});
|