• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Copyright (c) 2024 SwanLink (Jiangsu) Technology Development 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 
16 #include "napi/native_api.h"
17 #include "napi_promise_test.h"
18 
19 //OH_JSVM_IsPromise:value null,return not ok
TestIsPromiseCase01(JSVM_Env env,JSVM_CallbackInfo info)20 [[maybe_unused]] JSVM_Value TestIsPromiseCase01(JSVM_Env env, JSVM_CallbackInfo info)
21 {
22     bool isPromise = false;
23     JSVM_Status status = OH_JSVM_IsPromise(env, nullptr, &isPromise);
24     if (status == JSVM_OK) {
25         OH_JSVM_ThrowError(env, nullptr, "TestIsPromiseCase01:OH_JSVM_IsPromise Execution exception.");
26         return nullptr;
27     }
28 
29     bool setValue = true;
30     JSVM_Value retValue = nullptr;
31     OH_JSVM_GetBoolean(env, setValue, &retValue);
32     return retValue;
33 }
34 //input promise,return ok,result true
TestIsPromiseCase02(JSVM_Env env,JSVM_CallbackInfo info)35 [[maybe_unused]] JSVM_Value TestIsPromiseCase02(JSVM_Env env, JSVM_CallbackInfo info)
36 {
37     JSVM_Deferred deferred = nullptr;
38     JSVM_Value promise;
39     OH_JSVM_CreatePromise(env, &deferred, &promise);
40     bool isPromise = false;
41     JSVM_Status status = OH_JSVM_IsPromise(env, promise, &isPromise);
42     if (status != JSVM_OK) {
43         OH_JSVM_ThrowError(env, nullptr, "TestIsPromiseCase02:OH_JSVM_IsPromise Failed.");
44         return nullptr;
45     }
46     if (!isPromise) {
47         OH_JSVM_ThrowError(env, nullptr, "TestIsPromiseCase02:OH_JSVM_IsPromise false Failed.");
48         return nullptr;
49     }
50 
51     bool setValue = true;
52     JSVM_Value retValue = nullptr;
53     OH_JSVM_GetBoolean(env, setValue, &retValue);
54     return retValue;
55 }
56 //input not promise,return ok,result false
TestIsPromiseCase03(JSVM_Env env,JSVM_CallbackInfo info)57 [[maybe_unused]] JSVM_Value TestIsPromiseCase03(JSVM_Env env, JSVM_CallbackInfo info)
58 {
59     size_t argc = 1;
60     JSVM_Value args[1] = {nullptr};
61     OH_JSVM_GetCbInfo(env, info, &argc, args, nullptr, nullptr);
62 
63     bool isPromise = false;
64     JSVM_Status status = OH_JSVM_IsPromise(env, args[0], &isPromise);
65     if (status != JSVM_OK) {
66         OH_JSVM_ThrowError(env, nullptr, "TestIsPromiseCase03:OH_JSVM_IsPromise Failed.");
67         return nullptr;
68     }
69     if (isPromise) {
70         OH_JSVM_ThrowError(env, nullptr, "TestIsPromiseCase03:OH_JSVM_IsPromise true Failed.");
71         return nullptr;
72     }
73 
74     bool setValue = true;
75     JSVM_Value retValue = nullptr;
76     OH_JSVM_GetBoolean(env, setValue, &retValue);
77     return retValue;
78 }
79 //JS Create promise obj,return ok,result is true
TestIsPromiseCase04(JSVM_Env env,JSVM_CallbackInfo info)80 [[maybe_unused]] JSVM_Value TestIsPromiseCase04(JSVM_Env env, JSVM_CallbackInfo info)
81 {
82     JSVM_Deferred defer;
83     JSVM_Value promise;
84     JSVM_Status status = OH_JSVM_CreatePromise(env, &defer, &promise);
85     if (status != JSVM_OK) {
86         OH_JSVM_ThrowError(env, nullptr, "TestIsPromiseCase04:OH_JSVM_CreatePromise Failed.");
87         return nullptr;
88     }
89 
90     bool isPromise = false;
91     status = OH_JSVM_IsPromise(env, promise, &isPromise);
92     if (status != JSVM_OK) {
93         OH_JSVM_ThrowError(env, nullptr, "TestIsPromiseCase04:OH_JSVM_IsPromise Failed.");
94         return nullptr;
95     }
96     if (!isPromise) {
97         OH_JSVM_ThrowError(env, nullptr, "TestIsPromiseCase04:OH_JSVM_IsPromise false Failed.");
98         return nullptr;
99     }
100 
101     bool setValue = true;
102     JSVM_Value retValue = nullptr;
103     OH_JSVM_GetBoolean(env, setValue, &retValue);
104     return retValue;
105 }
106 //OH_JSVM_CreatePromise:call this func,return ok, deferred and promise not null
TestCreatePromiseCase01(JSVM_Env env,JSVM_CallbackInfo info)107 [[maybe_unused]] JSVM_Value TestCreatePromiseCase01(JSVM_Env env, JSVM_CallbackInfo info)
108 {
109     JSVM_Deferred defer;
110     JSVM_Value promise;
111     JSVM_Status status = OH_JSVM_CreatePromise(env, &defer, &promise);
112     if (status != JSVM_OK) {
113         OH_JSVM_ThrowError(env, nullptr, "TestCreatePromiseCase01:OH_JSVM_CreatePromise 1 Failed.");
114         return nullptr;
115     }
116     if (defer == nullptr || promise == nullptr) {
117         OH_JSVM_ThrowError(env, nullptr, "TestCreatePromiseCase01:OH_JSVM_CreatePromise 2 Failed.");
118         return nullptr;
119     }
120 
121     bool setValue = true;
122     JSVM_Value retValue = nullptr;
123     OH_JSVM_GetBoolean(env, setValue, &retValue);
124     return retValue;
125 }
126 //OH_JSVM_ResolveDeferred
127 //OH_JSVM_CreatePromise create deferred and promise,call this func,resolution true,return ok
TestResolveDeferredCase01(JSVM_Env env,JSVM_CallbackInfo info)128 [[maybe_unused]] JSVM_Value TestResolveDeferredCase01(JSVM_Env env, JSVM_CallbackInfo info)
129 {
130     JSVM_Deferred deferred;
131     JSVM_Value promise;
132     JSVM_Status status = OH_JSVM_CreatePromise(env, &deferred, &promise);
133     if (status != JSVM_OK || deferred == nullptr) {
134         OH_JSVM_ThrowError(env, nullptr, "TestResolveDeferredCase01:OH_JSVM_CreatePromise Failed.");
135         return nullptr;
136     }
137 
138     JSVM_Value value = nullptr;
139     bool setVal = true;
140     OH_JSVM_GetBoolean(env, setVal, &value);
141     status = OH_JSVM_ResolveDeferred(env, deferred, value);
142     if (status != JSVM_OK) {
143         OH_JSVM_ThrowError(env, nullptr, "TestResolveDeferredCase01:OH_JSVM_ResolveDeferred Failed.");
144         return nullptr;
145     }
146 
147     bool setValue = true;
148     JSVM_Value retValue = nullptr;
149     OH_JSVM_GetBoolean(env, setValue, &retValue);
150     return retValue;
151 }
152 //OH_JSVM_CreatePromise create deferred and promise,call this func,resolution false, return ok
TestResolveDeferredCase02(JSVM_Env env,JSVM_CallbackInfo info)153 [[maybe_unused]] JSVM_Value TestResolveDeferredCase02(JSVM_Env env, JSVM_CallbackInfo info)
154 {
155     JSVM_Deferred deferred;
156     JSVM_Value promise;
157     JSVM_Status status = OH_JSVM_CreatePromise(env, &deferred, &promise);
158     if (status != JSVM_OK || deferred == nullptr) {
159         OH_JSVM_ThrowError(env, nullptr, "TestResolveDeferredCase02:OH_JSVM_CreatePromise Failed.");
160         return nullptr;
161     }
162 
163     JSVM_Value value = nullptr;
164     bool setVal = false;
165     OH_JSVM_GetBoolean(env, setVal, &value);
166     status = OH_JSVM_ResolveDeferred(env, deferred, value);
167     if (status != JSVM_OK) {
168         OH_JSVM_ThrowError(env, nullptr, "TestResolveDeferredCase02:OH_JSVM_ResolveDeferred Failed.");
169         return nullptr;
170     }
171 
172     bool setValue = true;
173     JSVM_Value retValue = nullptr;
174     OH_JSVM_GetBoolean(env, setValue, &retValue);
175     return retValue;
176 }
177 //OH_JSVM_RejectDeferred:OH_JSVM_CreatePromise create deferred and promise,call this func,rejection true, return ok
TestRejectDeferredCase01(JSVM_Env env,JSVM_CallbackInfo info)178 [[maybe_unused]] JSVM_Value TestRejectDeferredCase01(JSVM_Env env, JSVM_CallbackInfo info)
179 {
180     bool setVal = true;
181     JSVM_Value retVal = nullptr;
182     OH_JSVM_GetBoolean(env, setVal, &retVal);
183     JSVM_Value args[2] = {retVal, retVal};
184 
185     JSVM_Deferred deferred;
186     JSVM_Value promise;
187     JSVM_Status status = OH_JSVM_CreatePromise(env, &deferred, &promise);
188     if (status != JSVM_OK) {
189         OH_JSVM_ThrowError(env, nullptr, "TestRejectDeferredCase01:OH_JSVM_CreatePromise Failed.");
190         return nullptr;
191     }
192 
193     status = OH_JSVM_RejectDeferred(env, deferred, args[1]);
194     if (status != JSVM_OK) {
195             OH_JSVM_ThrowError(env, nullptr, "TestRejectDeferredCase01:ResolveDeferred 2 Failed.");
196             return nullptr;
197     }
198 
199     bool setValue = true;
200     JSVM_Value retValue = nullptr;
201     OH_JSVM_GetBoolean(env, setValue, &retValue);
202     return retValue;
203 }
204 //OH_JSVM_CreatePromise create deferred and promise, call this func, rejection false, return ok
TestRejectDeferredCase02(JSVM_Env env,JSVM_CallbackInfo info)205 [[maybe_unused]] JSVM_Value TestRejectDeferredCase02(JSVM_Env env, JSVM_CallbackInfo info)
206 {
207     bool setVal = false;
208     JSVM_Value retVal = nullptr;
209     OH_JSVM_GetBoolean(env, setVal, &retVal);
210     JSVM_Value args[2] = {retVal, retVal};
211 
212     JSVM_Deferred deferred;
213     JSVM_Value promise;
214     JSVM_Status status = OH_JSVM_CreatePromise(env, &deferred, &promise);
215     if (status != JSVM_OK) {
216         OH_JSVM_ThrowError(env, nullptr, "TestRejectDeferredCase02:OH_JSVM_CreatePromise Failed.");
217         return nullptr;
218     }
219 
220     status = OH_JSVM_RejectDeferred(env, deferred, args[0]);
221     if (status != JSVM_OK) {
222         OH_JSVM_ThrowError(env, nullptr, "TestRejectDeferredCase02:ResolveDeferred 2 Failed.");
223         return nullptr;
224     }
225 
226     bool setValue = true;
227     JSVM_Value retValue = nullptr;
228     OH_JSVM_GetBoolean(env, setValue, &retValue);
229     return retValue;
230 }
231 //API:create -- is -- resolve result normal
TestCreateResolveDeferredCase01(JSVM_Env env,JSVM_CallbackInfo info)232 [[maybe_unused]] JSVM_Value TestCreateResolveDeferredCase01(JSVM_Env env, JSVM_CallbackInfo info)
233 {
234     bool setVal = false;
235     JSVM_Value retVal = nullptr;
236     OH_JSVM_GetBoolean(env, setVal, &retVal);
237     JSVM_Value args[2] = {retVal, retVal};
238 
239     JSVM_Deferred deferred;
240     JSVM_Value promise;
241     JSVM_Status status = OH_JSVM_CreatePromise(env, &deferred, &promise);
242     if (status != JSVM_OK) {
243         OH_JSVM_ThrowError(env, nullptr, "TestCreateResolveDeferredCase01:OH_JSVM_CreatePromise Failed.");
244         return nullptr;
245     }
246 
247     bool isPromise = false;
248     status = OH_JSVM_IsPromise(env, promise, &isPromise);
249     if (status != JSVM_OK) {
250         OH_JSVM_ThrowError(env, nullptr, "TestCreateResolveDeferredCase01:OH_JSVM_IsPromise 1 Failed.");
251         return nullptr;
252     }
253     if (!isPromise) {
254         OH_JSVM_ThrowError(env, nullptr, "TestCreateResolveDeferredCase01:OH_JSVM_IsPromise 2 Failed.");
255         return nullptr;
256     }
257 
258     status = OH_JSVM_ResolveDeferred(env, deferred, args[0]);
259     if (status != JSVM_OK) {
260         OH_JSVM_ThrowError(env, nullptr, "TestCreateResolveDeferredCase01:OH_JSVM_ResolveDeferred Failed.");
261         return nullptr;
262     }
263 
264     bool setValue = true;
265     JSVM_Value retValue = nullptr;
266     OH_JSVM_GetBoolean(env, setValue, &retValue);
267     return retValue;
268 }