Permalink
Browse files

test: Improve N-API test coverage

- add coverage for napi_get_prototype
- add coverage for napi_strict_equals

PR-URL: #13044
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jason Ginchereau <jasongin@microsoft.com>
  • Loading branch information...
mhdawson committed May 16, 2017
1 parent d6cd466 commit 0dd8b9a96561f9b85783a7e1178d35d49e2340e2
@@ -0,0 +1,8 @@
+{
+ "targets": [
+ {
+ "target_name": "test_general",
+ "sources": [ "test_general.c" ]
+ }
+ ]
+}
@@ -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');
@@ -0,0 +1,38 @@
+#include <node_api.h>
+#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)

0 comments on commit 0dd8b9a

Please sign in to comment.