1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "js_napi_common.h"
16 #include "napi/native_api.h"
17 #include "napi/native_common.h"
18 #include "napi/native_node_api.h"
19 namespace ACE {
20 namespace NAPI {
21 namespace SYSTEM_TEST_NAPI {
CreateDateFun(napi_env env,napi_callback_info info)22 static napi_value CreateDateFun(napi_env env, napi_callback_info info)
23 {
24     HILOG_INFO("%{public}s,called", __func__);
25     size_t argc = 1;
26     napi_value args[1] = { nullptr };
27     NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, nullptr, nullptr));
28 
29     NAPI_ASSERT(env, argc >= 1, "Wrong number of arguments");
30 
31     napi_valuetype valuetype;
32     NAPI_CALL(env, napi_typeof(env, args[0], &valuetype));
33     NAPI_ASSERT(env, valuetype == napi_number, "Wrong type of arguments. Expects a number as first argument.");
34 
35     double time = 0;
36     NAPI_CALL(env, napi_get_value_double(env, args[0], &time));
37 
38     napi_value date = nullptr;
39     NAPI_CALL(env, napi_create_date(env, time, &date));
40 
41     return date;
42 }
43 
IsDateFun(napi_env env,napi_callback_info info)44 static napi_value IsDateFun(napi_env env, napi_callback_info info)
45 {
46     HILOG_INFO("%{public}s,called", __func__);
47     napi_value date = nullptr, result = nullptr;
48     size_t argc = 1;
49     bool is_date = false;
50 
51     NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &date, nullptr, nullptr));
52     NAPI_CALL(env, napi_is_date(env, date, &is_date));
53     NAPI_CALL(env, napi_get_boolean(env, is_date, &result));
54 
55     return result;
56 }
57 
GetDateValueFun(napi_env env,napi_callback_info info)58 static napi_value GetDateValueFun(napi_env env, napi_callback_info info)
59 {
60     HILOG_INFO("%{public}s,called", __func__);
61     napi_value date = nullptr, result = nullptr;
62     size_t argc = 1;
63     double value = 0;
64     NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &date, nullptr, nullptr));
65     NAPI_CALL(env, napi_get_date_value(env, date, &value));
66     NAPI_CALL(env, napi_create_double(env, value, &result));
67 
68     return result;
69 }
70 
JsDateInit(napi_env env,napi_value exports)71 napi_value JsDateInit(napi_env env, napi_value exports)
72 {
73     HILOG_INFO("%{public}s,called", __func__);
74 
75     napi_property_descriptor descriptors[] = {
76         DECLARE_NAPI_FUNCTION("testCreateDateFun", CreateDateFun),
77         DECLARE_NAPI_FUNCTION("testIsDateFun", IsDateFun),
78         DECLARE_NAPI_FUNCTION("testGetDateValueFun", GetDateValueFun),
79     };
80 
81     NAPI_CALL(env, napi_define_properties(env, exports, sizeof(descriptors) / sizeof(descriptors[0]), descriptors));
82     return exports;
83 }
84 } // namespace SYSTEM_TEST_NAPI
85 } // namespace NAPI
86 } // namespace ACE
87