110 lines
3.5 KiB
JavaScript
110 lines
3.5 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('node:assert').strict;
|
|
const { describe, it } = require('node:test');
|
|
|
|
const test = require('./build/Release/test.node');
|
|
|
|
|
|
const objArgMsg = { message: 'Argument 0 must be of type `Object`' };
|
|
const objArgLetMsg = { message: 'Argument 0 must be of type `Object` or be `null`/`undefined`' };
|
|
|
|
describe('AT / HPP / REQ_OBJ_ARG', () => {
|
|
it('exports reqObjArg', () => {
|
|
assert.strictEqual(typeof test.reqObjArg, 'function');
|
|
});
|
|
it('throws if arg was not passed', () => {
|
|
assert.throws(() => test.reqObjArg(), objArgMsg);
|
|
});
|
|
it('throws if arg was passed undefined', () => {
|
|
assert.throws(() => test.reqObjArg(undefined), objArgMsg);
|
|
});
|
|
it('throws if arg was passed null', () => {
|
|
assert.throws(() => test.reqObjArg(null), objArgMsg);
|
|
});
|
|
it('throws if arg was passed a string', () => {
|
|
assert.throws(() => test.reqObjArg('1'), objArgMsg);
|
|
});
|
|
it('throws if arg was passed a number', () => {
|
|
assert.throws(() => test.reqObjArg(1), objArgMsg);
|
|
});
|
|
it('throws if arg was passed a boolean', () => {
|
|
assert.throws(() => test.reqObjArg(true), objArgMsg);
|
|
});
|
|
it('throws if arg was passed a pointer', () => {
|
|
assert.throws(() => test.reqObjArg(test.retExt()), objArgMsg);
|
|
});
|
|
it('accepts an object', () => {
|
|
assert.strictEqual(typeof test.reqObjArg({}), 'object');
|
|
});
|
|
it('accepts an array', () => {
|
|
assert.ok(Array.isArray(test.reqObjArg([])));
|
|
});
|
|
});
|
|
|
|
describe('addon-tools.hpp: LET_OBJ_ARG', () => {
|
|
it('exports letObjArg', () => {
|
|
assert.strictEqual(typeof test.letObjArg, 'function');
|
|
});
|
|
it('throws if arg was passed a string', () => {
|
|
assert.throws(() => test.letObjArg('1'), objArgLetMsg);
|
|
});
|
|
it('throws if arg was passed a number', () => {
|
|
assert.throws(() => test.letObjArg(1), objArgLetMsg);
|
|
});
|
|
it('throws if arg was passed a boolean', () => {
|
|
assert.throws(() => test.letObjArg(true), objArgLetMsg);
|
|
});
|
|
it('throws if arg was passed a pointer', () => {
|
|
assert.throws(() => test.letObjArg(test.retExt()), objArgLetMsg);
|
|
});
|
|
it('accepts an empty arg', () => {
|
|
assert.strictEqual(typeof test.letObjArg(), 'object');
|
|
});
|
|
it('accepts undefined', () => {
|
|
assert.strictEqual(typeof test.letObjArg(undefined), 'object');
|
|
});
|
|
it('accepts null', () => {
|
|
assert.strictEqual(typeof test.letObjArg(null), 'object');
|
|
});
|
|
it('accepts an object', () => {
|
|
assert.strictEqual(typeof test.letObjArg({}), 'object');
|
|
});
|
|
it('accepts an array', () => {
|
|
assert.ok(Array.isArray(test.letObjArg([])));
|
|
});
|
|
});
|
|
|
|
describe('addon-tools.hpp: USE_OBJ_ARG', () => {
|
|
it('exports useObjArg', () => {
|
|
assert.strictEqual(typeof test.useObjArg, 'function');
|
|
});
|
|
it('throws if arg was passed a string', () => {
|
|
assert.throws(() => test.useObjArg('1'), objArgLetMsg);
|
|
});
|
|
it('throws if arg was passed a number', () => {
|
|
assert.throws(() => test.useObjArg(1), objArgLetMsg);
|
|
});
|
|
it('throws if arg was passed a boolean', () => {
|
|
assert.throws(() => test.useObjArg(true), objArgLetMsg);
|
|
});
|
|
it('throws if arg was passed a pointer', () => {
|
|
assert.throws(() => test.useObjArg(test.retExt()), objArgLetMsg);
|
|
});
|
|
it('accepts an empty arg', () => {
|
|
assert.strictEqual(typeof test.useObjArg(), 'object');
|
|
});
|
|
it('accepts undefined', () => {
|
|
assert.strictEqual(typeof test.useObjArg(undefined), 'object');
|
|
});
|
|
it('accepts null', () => {
|
|
assert.strictEqual(typeof test.useObjArg(null), 'object');
|
|
});
|
|
it('accepts an object', () => {
|
|
assert.strictEqual(typeof test.useObjArg({}), 'object');
|
|
});
|
|
it('accepts an array', () => {
|
|
assert.ok(Array.isArray(test.useObjArg([])));
|
|
});
|
|
});
|