UNPKG

koffi

Version:

Fast and simple C FFI (foreign function interface) for Node.js

38 lines (28 loc) 1.42 kB
'use strict'; const assert = require('assert'); module.exports = require('../common').runTest(test); function test (binding) { function testHasProperty (nativeHasProperty) { const obj = { one: 1 }; Object.defineProperty(obj, 'two', { value: 2 }); assert.strictEqual(nativeHasProperty(obj, 'one'), true); assert.strictEqual(nativeHasProperty(obj, 'two'), true); assert.strictEqual('toString' in obj, true); assert.strictEqual(nativeHasProperty(obj, 'toString'), true); } function testShouldThrowErrorIfKeyIsInvalid (nativeHasProperty) { assert.throws(() => { nativeHasProperty(undefined, 'test'); }, /Cannot convert undefined or null to object/); } const objectWithInt32Key = { 12: 101 }; assert.strictEqual(binding.object.hasPropertyWithUint32(objectWithInt32Key, 12), true); testHasProperty(binding.object.hasPropertyWithNapiValue); testHasProperty(binding.object.hasPropertyWithNapiWrapperValue); testHasProperty(binding.object.hasPropertyWithCStyleString); testHasProperty(binding.object.hasPropertyWithCppStyleString); testShouldThrowErrorIfKeyIsInvalid(binding.object.hasPropertyWithNapiValue); testShouldThrowErrorIfKeyIsInvalid(binding.object.hasPropertyWithNapiWrapperValue); testShouldThrowErrorIfKeyIsInvalid(binding.object.hasPropertyWithCStyleString); testShouldThrowErrorIfKeyIsInvalid(binding.object.hasPropertyWithCppStyleString); }