koffi
Version:
Fast and simple C FFI (foreign function interface) for Node.js
59 lines (46 loc) • 2.1 kB
JavaScript
const assert = require('assert');
module.exports = require('../common').runTest(test);
function test (binding) {
const KEY_TYPE = {
C_STR: 'KEY_AS_C_STRING',
CPP_STR: 'KEY_AS_CPP_STRING',
NAPI: 'KEY_AS_NAPI_VALUES',
INT_32: 'KEY_AS_INT_32_NUM'
};
function assertNotGlobalObjectHasNoProperty (key, keyType) {
switch (keyType) {
case KEY_TYPE.NAPI:
assert.notStrictEqual(binding.globalObject.hasPropertyWithNapiValue(key), true);
break;
case KEY_TYPE.C_STR:
assert.notStrictEqual(binding.globalObject.hasPropertyWithCStyleString(key), true);
break;
case KEY_TYPE.CPP_STR:
assert.notStrictEqual(binding.globalObject.hasPropertyWithCppStyleString(key), true);
break;
case KEY_TYPE.INT_32:
assert.notStrictEqual(binding.globalObject.hasPropertyWithInt32(key), true);
break;
}
}
function assertErrMessageIsThrown (propertyCheckExistenceFunction, errMsg) {
assert.throws(() => {
propertyCheckExistenceFunction(undefined);
}, errMsg);
}
binding.globalObject.createMockTestObject();
binding.globalObject.deletePropertyWithCStyleString('c_str_key');
binding.globalObject.deletePropertyWithCppStyleString('cpp_string_key');
binding.globalObject.deletePropertyWithCppStyleString('circular');
binding.globalObject.deletePropertyWithInt32(15);
binding.globalObject.deletePropertyWithNapiValue('2');
assertNotGlobalObjectHasNoProperty('c_str_key', KEY_TYPE.C_STR);
assertNotGlobalObjectHasNoProperty('cpp_string_key', KEY_TYPE.CPP_STR);
assertNotGlobalObjectHasNoProperty('circular', KEY_TYPE.CPP_STR);
assertNotGlobalObjectHasNoProperty(15, true);
assertNotGlobalObjectHasNoProperty('2', KEY_TYPE.NAPI);
assertErrMessageIsThrown(binding.globalObject.hasPropertyWithCppStyleString, 'Error: A string was expected');
assertErrMessageIsThrown(binding.globalObject.hasPropertyWithCStyleString, 'Error: A string was expected');
assertErrMessageIsThrown(binding.globalObject.hasPropertyWithInt32, 'Error: A number was expected');
}
;