From 71aa251671dfb78d82315b9fc11b32a12b66dea8 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Mon, 15 May 2017 20:18:50 -0400 Subject: [PATCH] test: Improve N-API test coverage - add coverage for napi_get_prototype - add coverage for napi_strict_equals Backport-PR-URL: https://github.com/nodejs/node/pull/19447 PR-URL: https://github.com/nodejs/node/pull/13044 Reviewed-By: Colin Ihrig Reviewed-By: Jason Ginchereau --- test/addons-napi/test_general/binding.gyp | 8 +++++ test/addons-napi/test_general/test.js | 32 +++++++++++++++++ test/addons-napi/test_general/test_general.c | 38 ++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 test/addons-napi/test_general/binding.gyp create mode 100644 test/addons-napi/test_general/test.js create mode 100644 test/addons-napi/test_general/test_general.c diff --git a/test/addons-napi/test_general/binding.gyp b/test/addons-napi/test_general/binding.gyp new file mode 100644 index 00000000000000..f8ef9f59613355 --- /dev/null +++ b/test/addons-napi/test_general/binding.gyp @@ -0,0 +1,8 @@ +{ + "targets": [ + { + "target_name": "test_general", + "sources": [ "test_general.c" ] + } + ] +} diff --git a/test/addons-napi/test_general/test.js b/test/addons-napi/test_general/test.js new file mode 100644 index 00000000000000..a2e57126ce8c22 --- /dev/null +++ b/test/addons-napi/test_general/test.js @@ -0,0 +1,32 @@ +'use strict'; + +const common = require('../../common'); +const test_general = require(`./build/${common.buildType}/test_general`); +const assert = require('assert'); + +const val1 = '1'; +const val2 = 1; +const val3 = 1; + +class BaseClass { +} + +class ExtendedClass extends BaseClass { +} + +const baseObject = new BaseClass(); +const extendedObject = new ExtendedClass(); + +// test napi_strict_equals +assert.ok(test_general.testStrictEquals(val1, val1)); +assert.strictEqual(test_general.testStrictEquals(val1, val2), false); +assert.ok(test_general.testStrictEquals(val2, val3)); + +// test napi_get_prototype +assert.strictEqual(test_general.testGetPrototype(baseObject), + Object.getPrototypeOf(baseObject)); +assert.strictEqual(test_general.testGetPrototype(extendedObject), + Object.getPrototypeOf(extendedObject)); +assert.ok(test_general.testGetPrototype(baseObject) !== + test_general.testGetPrototype(extendedObject), + 'Prototypes for base and extended should be different'); diff --git a/test/addons-napi/test_general/test_general.c b/test/addons-napi/test_general/test_general.c new file mode 100644 index 00000000000000..17911b36253df1 --- /dev/null +++ b/test/addons-napi/test_general/test_general.c @@ -0,0 +1,38 @@ +#include +#include "../common.h" + +napi_value testStrictEquals(napi_env env, napi_callback_info info) { + size_t argc = 2; + napi_value args[2]; + NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + + bool bool_result; + napi_value result; + NAPI_CALL(env, napi_strict_equals(env, args[0], args[1], &bool_result)); + NAPI_CALL(env, napi_get_boolean(env, bool_result, &result)); + + return result; +} + +napi_value testGetPrototype(napi_env env, napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + + napi_value result; + NAPI_CALL(env, napi_get_prototype(env, args[0], &result)); + + return result; +} + +void Init(napi_env env, napi_value exports, napi_value module, void* priv) { + napi_property_descriptor descriptors[] = { + DECLARE_NAPI_PROPERTY("testStrictEquals", testStrictEquals), + DECLARE_NAPI_PROPERTY("testGetPrototype", testGetPrototype), + }; + + NAPI_CALL_RETURN_VOID(env, napi_define_properties( + env, exports, sizeof(descriptors) / sizeof(*descriptors), descriptors)); +} + +NAPI_MODULE(addon, Init)