Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarrod Connolly <jarrod@nestedquotes.ca>2019-02-04 10:26:33 +0300
committerBeth Griggs <Bethany.Griggs@uk.ibm.com>2019-09-03 18:58:59 +0300
commit4f41e4f471180e9b86c92e51814b9aa7c5fe00dc (patch)
tree644389ae84fd587fa7bea021197b54af8c102c02 /test/addons-napi/test_date
parent55692ba1605dd6a39c85171847fdbe391573989e (diff)
n-api: implement date object
Implements `napi_create_date()` as well as `napi_is_date()` to allow working with JavaScript Date objects. Backport-PR-URL: https://github.com/nodejs/node/pull/28298 PR-URL: https://github.com/nodejs/node/pull/25917 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/addons-napi/test_date')
-rw-r--r--test/addons-napi/test_date/binding.gyp10
-rw-r--r--test/addons-napi/test_date/test.js21
-rw-r--r--test/addons-napi/test_date/test_date.c67
3 files changed, 98 insertions, 0 deletions
diff --git a/test/addons-napi/test_date/binding.gyp b/test/addons-napi/test_date/binding.gyp
new file mode 100644
index 00000000000..6039d122c76
--- /dev/null
+++ b/test/addons-napi/test_date/binding.gyp
@@ -0,0 +1,10 @@
+{
+ "targets": [
+ {
+ "target_name": "test_date",
+ "sources": [
+ "test_date.c"
+ ]
+ }
+ ]
+}
diff --git a/test/addons-napi/test_date/test.js b/test/addons-napi/test_date/test.js
new file mode 100644
index 00000000000..e504208520e
--- /dev/null
+++ b/test/addons-napi/test_date/test.js
@@ -0,0 +1,21 @@
+'use strict';
+
+const common = require('../../common');
+
+// This tests the date-related n-api calls
+
+const assert = require('assert');
+const test_date = require(`./build/${common.buildType}/test_date`);
+
+const dateTypeTestDate = test_date.createDate(1549183351);
+assert.strictEqual(test_date.isDate(dateTypeTestDate), true);
+
+assert.strictEqual(test_date.isDate(new Date(1549183351)), true);
+
+assert.strictEqual(test_date.isDate(2.4), false);
+assert.strictEqual(test_date.isDate('not a date'), false);
+assert.strictEqual(test_date.isDate(undefined), false);
+assert.strictEqual(test_date.isDate(null), false);
+assert.strictEqual(test_date.isDate({}), false);
+
+assert.strictEqual(test_date.getDateValue(new Date(1549183351)), 1549183351);
diff --git a/test/addons-napi/test_date/test_date.c b/test/addons-napi/test_date/test_date.c
new file mode 100644
index 00000000000..8cc1c23affb
--- /dev/null
+++ b/test/addons-napi/test_date/test_date.c
@@ -0,0 +1,67 @@
+#define NAPI_EXPERIMENTAL
+
+#include <node_api.h>
+#include "../common.h"
+
+static napi_value createDate(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_ASSERT(env, argc >= 1, "Wrong number of arguments");
+
+ napi_valuetype valuetype0;
+ NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0));
+
+ NAPI_ASSERT(env, valuetype0 == napi_number,
+ "Wrong type of arguments. Expects a number as first argument.");
+
+ double time;
+ NAPI_CALL(env, napi_get_value_double(env, args[0], &time));
+
+ napi_value date;
+ NAPI_CALL(env, napi_create_date(env, time, &date));
+
+ return date;
+}
+
+static napi_value isDate(napi_env env, napi_callback_info info) {
+ napi_value date, result;
+ size_t argc = 1;
+ bool is_date;
+
+ NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &date, NULL, NULL));
+ NAPI_CALL(env, napi_is_date(env, date, &is_date));
+ NAPI_CALL(env, napi_get_boolean(env, is_date, &result));
+
+ return result;
+}
+
+static napi_value getDateValue(napi_env env, napi_callback_info info) {
+ napi_value date, result;
+ size_t argc = 1;
+ double value;
+
+ NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &date, NULL, NULL));
+ NAPI_CALL(env, napi_get_date_value(env, date, &value));
+ NAPI_CALL(env, napi_create_double(env, value, &result));
+
+ return result;
+}
+
+EXTERN_C_START
+napi_value Init(napi_env env, napi_value exports) {
+ napi_property_descriptor descriptors[] = {
+ DECLARE_NAPI_PROPERTY("createDate", createDate),
+ DECLARE_NAPI_PROPERTY("isDate", isDate),
+ DECLARE_NAPI_PROPERTY("getDateValue", getDateValue),
+ };
+
+ NAPI_CALL(env, napi_define_properties(
+ env, exports, sizeof(descriptors) / sizeof(*descriptors), descriptors));
+
+ return exports;
+}
+EXTERN_C_END
+
+NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)