1 /*
2 * Copyright (c) 2023 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
16 #ifndef ECMASCRIPT_TOOLING_TEST_TESTCASES_JS_MODULE_VARIABLE_TEST_H
17 #define ECMASCRIPT_TOOLING_TEST_TESTCASES_JS_MODULE_VARIABLE_TEST_H
18
19 #include "tooling/test/client_utils/test_util.h"
20
21 namespace panda::ecmascript::tooling::test {
22 class JsModuleVariableTest : public TestActions {
23 public:
JsModuleVariableTest()24 JsModuleVariableTest()
25 {
26 testAction = {
27 {SocketAction::SEND, "enable"},
28 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, MatchRule::replySuccess},
29 {SocketAction::SEND, "runtime-enable"},
30 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, MatchRule::replySuccess},
31 {SocketAction::SEND, "run"},
32 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, MatchRule::replySuccess},
33 // load export_variable_second.js
34 {SocketAction::RECV, "Debugger.scriptParsed", ActionRule::STRING_CONTAIN},
35 {SocketAction::RECV, "Debugger.paused", ActionRule::STRING_CONTAIN},
36 {SocketAction::SEND, "resume"},
37 {SocketAction::RECV, "Debugger.resumed", ActionRule::STRING_CONTAIN},
38 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, MatchRule::replySuccess},
39 // load export_variable_first.js
40 {SocketAction::RECV, "Debugger.scriptParsed", ActionRule::STRING_CONTAIN},
41 {SocketAction::RECV, "Debugger.paused", ActionRule::STRING_CONTAIN},
42 {SocketAction::SEND, "resume"},
43 {SocketAction::RECV, "Debugger.resumed", ActionRule::STRING_CONTAIN},
44 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, MatchRule::replySuccess},
45 // load module_variable.js
46 {SocketAction::RECV, "Debugger.scriptParsed", ActionRule::STRING_CONTAIN},
47 // break on start
48 {SocketAction::RECV, "Debugger.paused", ActionRule::STRING_CONTAIN},
49 // set breakpoint
50 {SocketAction::SEND, "b " DEBUGGER_JS_DIR"module_variable.js 247"},
51 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, MatchRule::replySuccess},
52
53 {SocketAction::SEND, "resume"},
54 {SocketAction::RECV, "Debugger.resumed", ActionRule::STRING_CONTAIN},
55 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, MatchRule::replySuccess},
56 {SocketAction::RECV, "Debugger.paused", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
57 std::unique_ptr<PtJson> json = PtJson::Parse(recv);
58 Result ret;
59 std::string method;
60 ret = json->GetString("method", &method);
61 if (ret != Result::SUCCESS || method != "Debugger.paused") {
62 return false;
63 }
64
65 std::unique_ptr<PtJson> params = nullptr;
66 ret = json->GetObject("params", ¶ms);
67 if (ret != Result::SUCCESS) {
68 return false;
69 }
70
71 std::unique_ptr<PtJson> hitBreakpoints = nullptr;
72 ret = params->GetArray("hitBreakpoints", &hitBreakpoints);
73 if (ret != Result::SUCCESS) {
74 return false;
75 }
76
77 std::string breakpoint;
78 breakpoint = hitBreakpoints->Get(0)->GetString();
79 if (ret != Result::SUCCESS || breakpoint.find(sourceFile_) == std::string::npos ||
80 breakpoint.find("246") == std::string::npos) {
81 return false;
82 }
83
84 DebuggerClient debuggerClient(0);
85 debuggerClient.PausedReply(std::move(json));
86 return true;
87 }},
88
89 {SocketAction::SEND, "p"},
90 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [] (auto recv, auto, auto) -> bool {
91 std::unique_ptr<PtJson> json = PtJson::Parse(recv);
92 std::unique_ptr<PtJson> result;
93
94 int id;
95 Result ret = json->GetInt("id", &id);
96 if (ret != Result::SUCCESS) {
97 return false;
98 }
99
100 ret = json->GetObject("result", &result);
101 if (ret != Result::SUCCESS) {
102 return false;
103 }
104
105 std::unique_ptr<PtJson> innerResult;
106 ret = result->GetArray("result", &innerResult);
107 if (ret != Result::SUCCESS) {
108 return false;
109 }
110
111 RuntimeClient runtimeClient(0);
112 runtimeClient.HandleGetProperties(std::move(json), id);
113 return true;
114 }},
115
116 {SocketAction::SEND, "p 3"},
117 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
118 std::unique_ptr<PtJson> json = PtJson::Parse(recv);
119 std::unique_ptr<PtJson> result;
120
121 int id;
122 Result ret = json->GetInt("id", &id);
123 if (ret != Result::SUCCESS) {
124 return false;
125 }
126
127 ret = json->GetObject("result", &result);
128 if (ret != Result::SUCCESS) {
129 return false;
130 }
131
132 std::unique_ptr<PtJson> innerResult;
133 ret = result->GetArray("result", &innerResult);
134 if (ret != Result::SUCCESS) {
135 return false;
136 }
137
138 std::vector<std::unique_ptr<PropertyDescriptor>> outPropertyDesc;
139 for (int32_t i = 0; i < innerResult->GetSize(); i++) {
140 auto variableInfo = PropertyDescriptor::Create(*(innerResult->Get(i)));
141 outPropertyDesc.emplace_back(std::move(variableInfo));
142 }
143
144 std::map<std::string, std::vector<std::string>> actualProperties;
145 for (const auto &property : outPropertyDesc) {
146 std::vector<std::string> attributes;
147 RemoteObject *value = property->GetValue();
148 std::cout << " ============================== " << std::endl;
149 std::cout << "variableName: " << property->GetName() << std::endl;
150 PushValueInfo(value, attributes);
151 actualProperties[property->GetName()] = attributes;
152 }
153
154 // compare size
155 if (actualProperties.size() != moduleVariableMap_.size()) {
156 std::cout << "actualProperties.size() != moduleVariableMap_.size()" << std::endl;
157 std::cout << "actualProperties.size() is: " << actualProperties.size() << std::endl;
158 std::cout << "moduleVariableMap_.size() is: " << moduleVariableMap_.size() << std::endl;
159 return false;
160 }
161
162 // compare the properties of each variable
163 for (const auto &actualProperty : actualProperties) {
164 const std::string &variableName = actualProperty.first;
165 const std::vector<std::string> &actualAttributes = actualProperty.second;
166
167 if (moduleVariableMap_.find(variableName) != moduleVariableMap_.end()) {
168 const std::vector<std::string> &expectedAttributes = moduleVariableMap_.at(variableName);
169 if (actualAttributes == expectedAttributes) {
170 continue;
171 } else {
172 std::cout << "Property mismatch: " << variableName << std::endl;
173 return false;
174 }
175 } else {
176 std::cout << "variable name not found: " << variableName << std::endl;
177 return false;
178 }
179 }
180
181 RuntimeClient runtimeClient(0);
182 runtimeClient.HandleGetProperties(std::move(json), id);
183 return true;
184 }},
185
186 {SocketAction::SEND, "p 5"},
187 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
188 return CompareExpected(recv, innerDes[expectDesIndex]);
189 }},
190
191 {SocketAction::SEND, "p 6"},
192 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
193 return CompareExpected(recv, innerDes[expectDesIndex]);
194 }},
195
196 {SocketAction::SEND, "p 7"},
197 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
198 return CompareExpected(recv, innerDes[expectDesIndex]);
199 }},
200
201 {SocketAction::SEND, "p 10"},
202 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
203 return CompareExpected(recv, innerDes[expectDesIndex]);
204 }},
205
206 {SocketAction::SEND, "p 13"},
207 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
208 return CompareExpected(recv, innerDes[expectDesIndex]);
209 }},
210
211 {SocketAction::SEND, "p 16"},
212 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
213 return CompareExpected(recv, innerDes[expectDesIndex]);
214 }},
215
216 {SocketAction::SEND, "p 17"},
217 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
218 return CompareExpected(recv, innerDes[expectDesIndex]);
219 }},
220
221 {SocketAction::SEND, "p 20"},
222 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
223 return CompareExpected(recv, innerDes[expectDesIndex]);
224 }},
225
226 {SocketAction::SEND, "p 23"},
227 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
228 return CompareExpected(recv, innerDes[expectDesIndex]);
229 }},
230
231 {SocketAction::SEND, "p 26"},
232 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
233 return CompareExpected(recv, innerDes[expectDesIndex]);
234 }},
235
236 {SocketAction::SEND, "p 29"},
237 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
238 return CompareExpected(recv, innerDes[expectDesIndex]);
239 }},
240
241 {SocketAction::SEND, "p 32"},
242 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
243 return CompareExpected(recv, innerDes[expectDesIndex]);
244 }},
245
246 {SocketAction::SEND, "p 35"},
247 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
248 return CompareExpected(recv, innerDes[expectDesIndex]);
249 }},
250
251 {SocketAction::SEND, "p 38"},
252 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
253 return CompareExpected(recv, innerDes[expectDesIndex]);
254 }},
255
256 {SocketAction::SEND, "p 44"},
257 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
258 return CompareExpected(recv, innerDes[expectDesIndex]);
259 }},
260
261 {SocketAction::SEND, "p 50"},
262 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
263 return CompareExpected(recv, innerDes[expectDesIndex]);
264 }},
265
266 {SocketAction::SEND, "p 91"},
267 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, [this] (auto recv, auto, auto) -> bool {
268 return CompareExpected(recv, innerDes[expectDesIndex]);
269 }},
270
271 // reply success and run
272 {SocketAction::SEND, "success"},
273 {SocketAction::SEND, "resume"},
274 {SocketAction::RECV, "Debugger.resumed", ActionRule::STRING_CONTAIN},
275 {SocketAction::RECV, "", ActionRule::CUSTOM_RULE, MatchRule::replySuccess},
276 };
277 }
278
279 std::pair<std::string, std::string> GetEntryPoint() override
280 {
281 return {pandaFile_, entryPoint_};
282 }
283 ~JsModuleVariableTest() = default;
284
285 private:
286 std::string pandaFile_ = DEBUGGER_ABC_DIR "module_variable.abc";
287 std::string sourceFile_ = DEBUGGER_JS_DIR "module_variable.js";
288 std::string entryPoint_ = "module_variable";
289 size_t expectDesIndex = 0;
290
PushValueInfo(RemoteObject *value, std::vector<std::string> &infos)291 void PushValueInfo(RemoteObject *value, std::vector<std::string> &infos)
292 {
293 std::cout << "type: " << value->GetType() << std::endl;
294 infos.push_back(value->GetType());
295 if (value->HasSubType()) {
296 std::cout << "sub type: " << value->GetSubType() << std::endl;
297 infos.push_back(value->GetSubType());
298 }
299 if (value->HasClassName()) {
300 std::cout << "class name: " << value->GetClassName() << std::endl;
301 infos.push_back(value->GetClassName());
302 }
303 if (value->HasUnserializableValue()) {
304 std::cout << "unserializableValue: " << value->GetUnserializableValue() << std::endl;
305 infos.push_back(value->GetUnserializableValue());
306 }
307 if (value->HasDescription()) {
308 std::cout << "desc: " << value->GetDescription() << std::endl;
309 infos.push_back(value->GetDescription());
310 }
311 }
312
CompareExpected(std::string recv, const std::string &expect)313 bool CompareExpected(std::string recv, const std::string &expect)
314 {
315 expectDesIndex++;
316 return recv == expect;
317 }
318
319 const std::map<std::string, std::vector<std::string>> moduleVariableMap_ = {
320 { "string0", { "string", "helloworld", "helloworld" } },
321 { "boolean0", { "object", "Object", "Boolean{[[PrimitiveValue]]: false}",
322 "Boolean{[[PrimitiveValue]]: false}"} },
323 { "number0", { "number", "1", "1" } },
324 { "obj0", { "object", "Object", "Object", "Object"} },
325 { "arraybuffer0", { "object", "arraybuffer", "Arraybuffer", "Arraybuffer(24)", "Arraybuffer(24)"} },
326 { "function0", { "function", "Function", "function function0( { [js code] }",
327 "function function0( { [js code] }" } },
328 { "generator0", { "function", "Generator", "function* generator0( { [js code] }",
329 "function* generator0( { [js code] }" } },
330 { "map0", { "object", "map", "Map", "Map(0)", "Map(0)"} },
331 { "set0", { "object", "set", "Set", "Set(0)", "Set(0)"} },
332 { "undefined0", { "undefined" } },
333 { "array0", { "object", "array", "Array", "Array(2)", "Array(2)"} },
334 { "regexp0", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i"} },
335 { "uint8array0", { "object", "Object", "Uint8Array(24)", "Uint8Array(24)"} },
336 { "dataview0", { "object", "dataview", "Dataview", "DataView(24)", "DataView(24)"} },
337 { "bigint0", { "bigint", "999n", "999n" } },
338 { "typedarray0", { "object", "Object", "Uint8Array(0)", "Uint8Array(0)"} },
339 { "sharedarraybuffer0", { "object", "Object", "SharedArrayBuffer(32)", "SharedArrayBuffer(32)"} },
340 { "weakref0", { "object", "Object", "WeakRef {}", "WeakRef {}"} },
341 { "iterator0", { "function", "Function", "function [Symbol.iterator]( { [native code] }",
342 "function [Symbol.iterator]( { [native code] }" } },
343 { "string1", { "string", "helloworld1", "helloworld1" } },
344 { "boolean1", { "object", "Object", "Boolean{[[PrimitiveValue]]: false}",
345 "Boolean{[[PrimitiveValue]]: false}"} },
346 { "number1", { "number", "11", "11" } },
347 { "obj1", { "object", "Object", "Object", "Object"} },
348 { "arraybuffer1", { "object", "arraybuffer", "Arraybuffer", "Arraybuffer(24)", "Arraybuffer(24)"} },
349 { "function1", { "function", "Function", "function function1( { [js code] }",
350 "function function1( { [js code] }" } },
351 { "generator1", { "function", "Generator", "function* generator1( { [js code] }",
352 "function* generator1( { [js code] }" } },
353 { "map1", { "object", "map", "Map", "Map(0)", "Map(0)"} },
354 { "set1", { "object", "set", "Set", "Set(0)", "Set(0)"} },
355 { "undefined1", { "undefined" } },
356 { "regexp1", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i"} },
357 { "uint8array1", { "object", "Object", "Uint8Array(24)", "Uint8Array(24)"} },
358 { "dataview1", { "object", "dataview", "Dataview", "DataView(24)", "DataView(24)"} },
359 { "bigint1", { "bigint", "9999n", "9999n" } },
360 { "typedarray1", { "object", "Object", "Uint8Array(0)", "Uint8Array(0)"} },
361 { "sharedarraybuffer1", { "object", "Object", "SharedArrayBuffer(32)", "SharedArrayBuffer(32)"} },
362 { "weakref1", { "object", "Object", "WeakRef {}", "WeakRef {}"} },
363 { "iterator1", { "function", "Function", "function [Symbol.iterator]( { [native code] }",
364 "function [Symbol.iterator]( { [native code] }" } },
365 { "string2", { "string", "helloworld11", "helloworld11" } },
366 { "boolean2", { "object", "Object", "Boolean{[[PrimitiveValue]]: false}",
367 "Boolean{[[PrimitiveValue]]: false}"} },
368 { "number2", { "number", "111", "111" } },
369 { "obj2", { "object", "Object", "Object", "Object"} },
370 { "arraybuffer2", { "object", "arraybuffer", "Arraybuffer", "Arraybuffer(24)", "Arraybuffer(24)"} },
371 { "function2", { "function", "Function", "function function2( { [js code] }",
372 "function function2( { [js code] }" } },
373 { "generator2", { "function", "Generator", "function* generator2( { [js code] }",
374 "function* generator2( { [js code] }" } },
375 { "map2", { "object", "map", "Map", "Map(0)", "Map(0)"} },
376 { "set2", { "object", "set", "Set", "Set(0)", "Set(0)"} },
377 { "undefined2", { "undefined" } },
378 { "regexp2", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i"} },
379 { "uint8array2", { "object", "Object", "Uint8Array(24)", "Uint8Array(24)"} },
380 { "dataview2", { "object", "dataview", "Dataview", "DataView(24)", "DataView(24)"} },
381 { "bigint2", { "bigint", "9999n", "9999n" } },
382 { "typedarray2", { "object", "Object", "Uint8Array(0)", "Uint8Array(0)"} },
383 { "sharedarraybuffer2", { "object", "Object", "SharedArrayBuffer(32)", "SharedArrayBuffer(32)"} },
384 { "weakref2", { "object", "Object", "WeakRef {}", "WeakRef {}"} },
385 { "iterator2", { "function", "Function", "function [Symbol.iterator]( { [native code] }",
386 "function [Symbol.iterator]( { [native code] }" } },
387 { "string4", { "string", "helloworld123", "helloworld123" } },
388 { "boolean4", { "object", "Object", "Boolean{[[PrimitiveValue]]: true}", "Boolean{[[PrimitiveValue]]: true}"} },
389 { "number4", { "number", "4", "4" } },
390 { "foo", { "function", "Function", "function foo( { [js code] }", "function foo( { [js code] }"} },
391 { "string6", { "string", "helloworld12345", "helloworld12345" } },
392 { "boolean6", { "object", "Object", "Boolean{[[PrimitiveValue]]: true}", "Boolean{[[PrimitiveValue]]: true}"} },
393 { "number6", { "number", "6", "6" } },
394 { "obj6", { "object", "Object", "Object", "Object"} },
395 { "arraybuffer6", { "object", "arraybuffer", "Arraybuffer", "Arraybuffer(24)", "Arraybuffer(24)"} },
396 { "function6", { "function", "Function", "function function6( { [js code] }",
397 "function function6( { [js code] }" } },
398 { "generator6", { "function", "Generator", "function* generator6( { [js code] }",
399 "function* generator6( { [js code] }" } },
400 { "map6", { "object", "map", "Map", "Map(0)", "Map(0)"} },
401 { "set6", { "object", "set", "Set", "Set(0)", "Set(0)"} },
402 { "undefined6", { "undefined" } },
403 { "array6", { "object", "array", "Array", "Array(2)", "Array(2)"} },
404 { "regexp6", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i"} },
405 { "uint8array6", { "object", "Object", "Uint8Array(24)", "Uint8Array(24)"} },
406 { "dataview6", { "object", "dataview", "Dataview", "DataView(23)", "DataView(23)"} },
407 { "bigint6", { "bigint", "99999n", "99999n" } },
408 { "string7", { "string", "helloworld12345", "helloworld12345" } },
409 { "boolean7", { "object", "Object", "Boolean{[[PrimitiveValue]]: true}", "Boolean{[[PrimitiveValue]]: true}"} },
410 { "number7", { "number", "6", "6" } },
411 { "obj7", { "object", "Object", "Object", "Object"} },
412 { "arraybuffer7", { "object", "arraybuffer", "Arraybuffer", "Arraybuffer(24)", "Arraybuffer(24)"} },
413 { "function7", { "function", "Function", "function function6( { [js code] }",
414 "function function6( { [js code] }" } },
415 { "generator7", { "function", "Generator", "function* generator6( { [js code] }",
416 "function* generator6( { [js code] }" } },
417 { "map7", { "object", "map", "Map", "Map(0)", "Map(0)"} },
418 { "set7", { "object", "set", "Set", "Set(0)", "Set(0)"} },
419 { "undefined7", { "undefined" } },
420 { "array7", { "object", "array", "Array", "Array(2)", "Array(2)"} },
421 { "regexp7", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i"} },
422 { "uint8array7", { "object", "Object", "Uint8Array(24)", "Uint8Array(24)"} },
423 { "dataview7", { "object", "dataview", "Dataview", "DataView(23)", "DataView(23)"} },
424 { "bigint7", { "bigint", "99999n", "99999n" } },
425 { "string9", { "string", "helloworld11", "helloworld11" } },
426 { "boolean9", { "object", "Object", "Boolean{[[PrimitiveValue]]: false}",
427 "Boolean{[[PrimitiveValue]]: false}"} },
428 { "number9", { "number", "111", "111" } },
429 { "obj9", { "object", "Object", "Object", "Object"} },
430 { "arraybuffer9", { "object", "arraybuffer", "Arraybuffer", "Arraybuffer(24)", "Arraybuffer(24)"} },
431 { "function9", { "function", "Function", "function function8( { [js code] }",
432 "function function8( { [js code] }" } },
433 { "generator9", { "function", "Generator", "function* generator8( { [js code] }",
434 "function* generator8( { [js code] }" } },
435 { "map9", { "object", "map", "Map", "Map(0)", "Map(0)"} },
436 { "set9", { "object", "set", "Set", "Set(0)", "Set(0)"} },
437 { "undefined9", { "undefined" } },
438 { "array9", { "object", "array", "Array", "Array(2)", "Array(2)"} },
439 { "regexp9", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i"} },
440 { "uint8array9", { "object", "Object", "Uint8Array(24)", "Uint8Array(24)"} },
441 { "dataview9", { "object", "dataview", "Dataview", "DataView(24)", "DataView(24)"} },
442 { "bigint9", { "bigint", "9999n", "9999n" } },
443 { "string2", { "string", "helloworld11", "helloworld11" } },
444 { "boolean10", { "object", "Object", "Boolean{[[PrimitiveValue]]: false}",
445 "Boolean{[[PrimitiveValue]]: false}"} },
446 { "string10", { "string", "helloworld11", "helloworld11" } },
447 { "number10", { "number", "111", "111" } },
448 { "obj10", { "object", "Object", "Object", "Object"} },
449 { "arraybuffer10", { "object", "arraybuffer", "Arraybuffer", "Arraybuffer(24)", "Arraybuffer(24)"} },
450 { "function10", { "function", "Function", "function function8( { [js code] }",
451 "function function8( { [js code] }" } },
452 { "generator10", { "function", "Generator", "function* generator8( { [js code] }",
453 "function* generator8( { [js code] }" } },
454 { "map10", { "object", "map", "Map", "Map(0)", "Map(0)"} },
455 { "set10", { "object", "set", "Set", "Set(0)", "Set(0)"} },
456 { "undefined10", { "undefined" } },
457 { "array10", { "object", "array", "Array", "Array(2)", "Array(2)"} },
458 { "regexp10", { "object", "regexp", "RegExp", "/^\\d+\\.\\d+$/i", "/^\\d+\\.\\d+$/i"} },
459 { "uint8array10", { "object", "Object", "Uint8Array(24)", "Uint8Array(24)"} },
460 { "dataview10", { "object", "dataview", "Dataview", "DataView(24)", "DataView(24)"} },
461 { "bigint10", { "bigint", "9999n", "9999n" } },
462 { "transit1", { "number", "1", "1" } },
463 { "transit2", { "number", "2", "2" } },
464 { "transit4", { "number", "3", "3" } },
465 { "transit5", { "number", "1", "1" } },
466 { "transit6", { "number", "2", "2" } },
467 { "transit7", { "number", "3", "3" } },
468 { "multipleOut1", { "number", "1", "1" } },
469 { "multipleOut2", { "number", "2", "2" } },
470 { "multipleOut3", { "number", "3", "3" } },
471 { "multipleOut4", { "number", "4", "4" } },
472 { "multipleOut5", { "number", "5", "5" } },
473 { "multipleOut6", { "number", "6", "6" } },
474 { "multipleOut10", { "number", "10", "10" } },
475 { "multipleOut11", { "number", "11", "11" } },
476 { "multipleOut12", { "number", "12", "12" } },
477 { "*default*", { "function", "Function", "function default( { [js code] }",
478 "function default( { [js code] }" } },
479 {"obj", { "object", "Object", "Object", "Object"}}
480 };
481
482 const std::vector<std::string> innerDes = {
483 "{\"id\":10,\"result\":{\"result\":[{\"name\":\"length\",\"value\":{\"type\":\"number\",\"unserializableValue\""
484 ":\"0\",\"description\":\"0\"},\"writable\":false,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{"
485 "\"name\":\"name\",\"value\":{\"type\":\"string\",\"unserializableValue\":\"default\",\"description\":"
486 "\"default\"},\"writable\":false,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":"
487 "\"prototype\",\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":\"Object\","
488 "\"description\":\"Object\",\"objectId\":\"100\"},\"writable\":true,\"configurable\":false,\"enumerable\":"
489 "false,\"isOwn\":true}]}}",
490
491 "{\"id\":11,\"result\":{\"result\":[{\"name\":\"0\",\"value\":{\"type\":\"string\",\"unserializableValue\":"
492 "\"Apple\",\"description\":\"Apple\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":"
493 "true},{\"name\":\"1\",\"value\":{\"type\":\"string\",\"unserializableValue\":\"Banana\",\"description\":"
494 "\"Banana\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"length\","
495 "\"value\":{\"type\":\"number\",\"unserializableValue\":\"2\",\"description\":\"2\"},\"writable\":true,"
496 "\"configurable\":false,\"enumerable\":false,\"isOwn\":true}]}}",
497
498 "{\"id\":12,\"result\":{\"result\":[{\"name\":\"[[Int8Array]]\",\"value\":{\"type\":\"object\",\"className\":"
499 "\"Object\",\"unserializableValue\":\"Int8Array(24)\",\"description\":\"Int8Array(24)\",\"objectId\":\"101\"},"
500 "\"writable\":true,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[Uint8Array]]\","
501 "\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":\"Uint8Array(24)\","
502 "\"description\":\"Uint8Array(24)\",\"objectId\":\"102\"},\"writable\":true,\"configurable\":true,"
503 "\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[Uint8ClampedArray]]\",\"value\":{\"type\":\"object\","
504 "\"className\":\"Object\",\"unserializableValue\":"
505 "\"Uint8ClampedArray\",\"description\":\"Uint8ClampedArray\",\"objectId\":\"103\"},"
506 "\"writable\":true,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[Int16Array]]\","
507 "\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":\"Int16Array(12)\","
508 "\"description\":\"Int16Array(12)\",\"objectId\":\"104\"},\"writable\":true,\"configurable\":true,"
509 "\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[Uint16Array]]\",\"value\":{\"type\":\"object\","
510 "\"className\":\"Object\",\"unserializableValue\":\"Uint16Array\",\"description\":\"Uint16Array\",\"objectId\":"
511 "\"105\"},\"writable\":true,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":"
512 "\"[[Int32Array]]\",\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":"
513 "\"Int32Array(6)\",\"description\":\"Int32Array(6)\",\"objectId\":\"106\"},\"writable\":true,\"configurable\":"
514 "true,\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[Uint32Array]]\",\"value\":{\"type\":\"object\","
515 "\"className\":\"Object\",\"unserializableValue\":\"Uint32Array\","
516 "\"description\":\"Uint32Array\",\"objectId\":\"107\"},"
517 "\"writable\":true,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[Float32Array]]\","
518 "\"value\":{\"type\":\"object\",\"className\":\"Object\","
519 "\"unserializableValue\":\"Float32Array\",\"description\":"
520 "\"Float32Array\",\"objectId\":\"108\"},\"writable\":"
521 "true,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},"
522 "{\"name\":\"[[Float64Array]]\",\"value\":{\"type\":\"object\",\"className\":\"Object\","
523 "\"unserializableValue\":\"Float64Array\",\"description\":"
524 "\"Float64Array\",\"objectId\":\"109\"},\"writable\":true,"
525 "\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[BigInt64Array]]\",\"value\":"
526 "{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":"
527 "\"BigInt64Array\",\"description\":\"BigInt64Array\","
528 "\"objectId\":\"110\"},\"writable\":true,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":"
529 "\"[[BigUint64Array]]\",\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":"
530 "\"BigUint64Array\",\"description\":\"BigUint64Array\","
531 "\"objectId\":\"111\"},\"writable\":true,\"configurable\":true,"
532 "\"enumerable\":false,\"isOwn\":true}]}}",
533
534 "{\"id\":13,\"result\":{\"result\":[{\"name\":\"[[PrimitiveValue]]\",\"value\":{\"type\":\"boolean\","
535 "\"unserializableValue\":\"false\",\"description\":\"false\",\"objectId\":\"112\"},\"writable\":false,"
536 "\"configurable\":false,\"enumerable\":false,\"isOwn\":false}]}}",
537
538 "{\"id\":14,\"result\":{\"result\":[{\"name\":\"buffer\",\"value\":{\"type\":\"object\",\"subtype\":"
539 "\"arraybuffer\",\"className\":\"Arraybuffer\",\"unserializableValue\":\"Arraybuffer(24)\",\"description\":"
540 "\"Arraybuffer(24)\",\"objectId\":\"113\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,"
541 "\"isOwn\":false},{\"name\":\"byteLength\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"24\","
542 "\"description\":\"24\",\"objectId\":\"114\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,"
543 "\"isOwn\":false},{\"name\":\"byteOffset\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
544 "\"description\":\"0\",\"objectId\":\"115\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,"
545 "\"isOwn\":false}]}}",
546
547 "{\"id\":15,\"result\":{\"result\":[{\"name\":\"length\",\"value\":{\"type\":\"number\","
548 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":false,\"configurable\":true,\"enumerable\":"
549 "false,\"isOwn\":true},{\"name\":\"name\",\"value\":{\"type\":\"string\",\"unserializableValue\":\"foo\","
550 "\"description\":\"foo\"},\"writable\":false,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},"
551 "{\"name\":\"prototype\",\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":"
552 "\"Object\",\"description\":\"Object\",\"objectId\":\"116\"},\"writable\":true,\"configurable\":false,"
553 "\"enumerable\":false,\"isOwn\":true}]}}",
554
555 "{\"id\":16,\"result\":{\"result\":[{\"name\":\"length\",\"value\":{\"type\":\"number\","
556 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":false,\"configurable\":true,\"enumerable\":"
557 "false,\"isOwn\":true},{\"name\":\"name\",\"value\":{\"type\":\"string\",\"unserializableValue\":\"function0\","
558 "\"description\":\"function0\"},\"writable\":false,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},"
559 "{\"name\":\"prototype\",\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":"
560 "\"Object\",\"description\":\"Object\",\"objectId\":\"117\"},\"writable\":true,\"configurable\":false,"
561 "\"enumerable\":false,\"isOwn\":true}]}}",
562
563 "{\"id\":17,\"result\":{\"result\":[{\"name\":\"[[IsGenerator]]\",\"value\":{\"type\":\"boolean\","
564 "\"unserializableValue\":\"true\",\"description\":\"true\",\"objectId\":\"118\"},\"writable\":false,"
565 "\"configurable\":false,\"enumerable\":false,\"isOwn\":false},{\"name\":\"length\",\"value\":{\"type\":"
566 "\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":false,\"configurable\":true,"
567 "\"enumerable\":false,\"isOwn\":true},{\"name\":\"name\",\"value\":{\"type\":\"string\","
568 "\"unserializableValue\":\"generator0\",\"description\":\"generator0\"},\"writable\":false,\"configurable\":"
569 "true,\"enumerable\":false,\"isOwn\":true},{\"name\":\"prototype\",\"value\":{\"type\":\"object\","
570 "\"className\":\"Object\",\"unserializableValue\":\"Object\",\"description\":\"Object\",\"objectId\":\"119\"},"
571 "\"writable\":true,\"configurable\":false,\"enumerable\":false,\"isOwn\":true}]}}",
572
573 "{\"id\":18,\"result\":{\"result\":[{\"name\":\"length\",\"value\":{\"type\":\"number\","
574 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":false,\"configurable\":true,\"enumerable\":"
575 "false,\"isOwn\":true},{\"name\":\"name\",\"value\":{\"type\":\"string\",\"unserializableValue\":"
576 "\"[Symbol.iterator]\",\"description\":\"[Symbol.iterator]\"},\"writable\":false,\"configurable\":true,"
577 "\"enumerable\":false,\"isOwn\":true}]}}",
578
579 "{\"id\":19,\"result\":{\"result\":[{\"name\":\"size\",\"value\":{\"type\":\"number\",\"unserializableValue\":"
580 "\"0\",\"description\":\"0\",\"objectId\":\"120\"},\"writable\":false,\"configurable\":false,\"enumerable\":"
581 "false,\"isOwn\":false},{\"name\":\"[[Entries]]\",\"value\":{\"type\":\"object\",\"subtype\":\"array\","
582 "\"className\":\"Array\",\"unserializableValue\":\"Array(0)\",\"description\":\"Array(0)\",\"objectId\":"
583 "\"121\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,\"isOwn\":false}]}}",
584
585 "{\"id\":20,\"result\":{\"result\":[{\"name\":\"key0\",\"value\":{\"type\":\"string\",\"unserializableValue\":"
586 "\"value0\",\"description\":\"value0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":"
587 "true},{\"name\":\"key1\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"100\",\"description\":"
588 "\"100\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true}]}}",
589
590 "{\"id\":21,\"result\":{\"result\":[{\"name\":\"global\",\"value\":{\"type\":\"boolean\","
591 "\"unserializableValue\":\"false\",\"description\":\"false\",\"objectId\":\"122\"},\"writable\":false,"
592 "\"configurable\":false,\"enumerable\":false,\"isOwn\":false},{\"name\":\"ignoreCase\",\"value\":{\"type\":"
593 "\"boolean\",\"unserializableValue\":\"true\",\"description\":\"true\",\"objectId\":\"123\"},\"writable\":"
594 "false,\"configurable\":false,\"enumerable\":false,\"isOwn\":false},{\"name\":\"multiline\",\"value\":"
595 "{\"type\":\"boolean\",\"unserializableValue\":\"false\",\"description\":\"false\",\"objectId\":\"124\"},"
596 "\"writable\":false,\"configurable\":false,\"enumerable\":false,\"isOwn\":false},{\"name\":\"dotAll\","
597 "\"value\":{\"type\":\"boolean\",\"unserializableValue\":\"false\",\"description\":\"false\",\"objectId\":"
598 "\"125\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,\"isOwn\":false},{\"name\":"
599 "\"hasIndices\",\"value\":{\"type\":\"boolean\",\"unserializableValue\":\"false\",\"description\":\"false\","
600 "\"objectId\":\"126\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,\"isOwn\":false},"
601 "{\"name\":\"unicode\",\"value\":{\"type\":\"boolean\",\"unserializableValue\":\"false\",\"description\":"
602 "\"false\",\"objectId\":\"127\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,\"isOwn\":"
603 "false},{\"name\":\"sticky\",\"value\":{\"type\":\"boolean\",\"unserializableValue\":\"false\",\"description\":"
604 "\"false\",\"objectId\":\"128\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,\"isOwn\":"
605 "false},{\"name\":\"flags\",\"value\":{\"type\":\"string\",\"unserializableValue\":\"i\",\"description\":"
606 "\"i\",\"objectId\":\"129\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,\"isOwn\":false},"
607 "{\"name\":\"source\",\"value\":{\"type\":\"string\",\"unserializableValue\":\"^\\\\d+\\\\.\\\\d+$\","
608 "\"description\":\"^\\\\d+\\\\.\\\\d+$\",\"objectId\":\"130\"},\"writable\":false,\"configurable\":false,"
609 "\"enumerable\":false,\"isOwn\":false},{\"name\":\"lastIndex\",\"value\":{\"type\":\"number\","
610 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":false,\"enumerable\":"
611 "false,\"isOwn\":true}]}}",
612
613 "{\"id\":22,\"result\":{\"result\":[{\"name\":\"size\",\"value\":{\"type\":\"number\",\"unserializableValue\":"
614 "\"0\",\"description\":\"0\",\"objectId\":\"131\"},\"writable\":false,\"configurable\":false,\"enumerable\":"
615 "false,\"isOwn\":false},{\"name\":\"[[Entries]]\",\"value\":{\"type\":\"object\",\"subtype\":\"array\","
616 "\"className\":\"Array\",\"unserializableValue\":\"Array(0)\",\"description\":\"Array(0)\",\"objectId\":"
617 "\"132\"},\"writable\":false,\"configurable\":false,\"enumerable\":false,\"isOwn\":false}]}}",
618
619 "{\"id\":23,\"result\":{\"result\":[{\"name\":\"[[Int8Array]]\",\"value\":{\"type\":\"object\",\"className\":"
620 "\"Object\",\"unserializableValue\":\"Int8Array(32)\",\"description\":\"Int8Array(32)\",\"objectId\":\"133\"},"
621 "\"writable\":true,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[Uint8Array]]\","
622 "\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":\"Uint8Array(32)\","
623 "\"description\":\"Uint8Array(32)\",\"objectId\":\"134\"},\"writable\":true,\"configurable\":true,"
624 "\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[Int16Array]]\",\"value\":{\"type\":\"object\","
625 "\"className\":\"Object\",\"unserializableValue\":\"Int16Array(16)\",\"description\":\"Int16Array(16)\","
626 "\"objectId\":\"135\"},\"writable\":true,\"configurable\":true,\"enumerable\":false,\"isOwn\":true},{\"name\":"
627 "\"[[Int32Array]]\",\"value\":{\"type\":\"object\",\"className\":\"Object\",\"unserializableValue\":"
628 "\"Int32Array(8)\",\"description\":\"Int32Array(8)\",\"objectId\":\"136\"},\"writable\":true,\"configurable\":"
629 "true,\"enumerable\":false,\"isOwn\":true},{\"name\":\"[[ArrayBufferByteLength]]\",\"value\":{\"type\":"
630 "\"number\",\"unserializableValue\":\"32\",\"description\":\"32\",\"objectId\":\"137\"},\"writable\":false,"
631 "\"configurable\":false,\"enumerable\":false,\"isOwn\":false},{\"name\":\"byteLength\",\"value\":{\"type\":"
632 "\"number\",\"unserializableValue\":\"32\",\"description\":\"32\",\"objectId\":\"138\"},\"writable\":false,"
633 "\"configurable\":false,\"enumerable\":false,\"isOwn\":false}]}}",
634
635 "{\"id\":24,\"result\":{\"result\":[{\"name\":\"0\",\"value\":{\"type\":\"number\",\"unserializableValue\":"
636 "\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},"
637 "{\"name\":\"1\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},"
638 "\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"2\",\"value\":"
639 "{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":"
640 "true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"3\",\"value\":{\"type\":\"number\","
641 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
642 "true,\"isOwn\":true},{\"name\":\"4\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
643 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
644 "\"5\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
645 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"6\",\"value\":{\"type\":\"number\","
646 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
647 "true,\"isOwn\":true},{\"name\":\"7\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
648 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
649 "\"8\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
650 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"9\",\"value\":{\"type\":\"number\","
651 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
652 "true,\"isOwn\":true},{\"name\":\"10\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
653 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
654 "\"11\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
655 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"12\",\"value\":{\"type\":\"number\","
656 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
657 "true,\"isOwn\":true},{\"name\":\"13\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
658 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
659 "\"14\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
660 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"15\",\"value\":{\"type\":\"number\","
661 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
662 "true,\"isOwn\":true},{\"name\":\"16\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
663 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
664 "\"17\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
665 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"18\",\"value\":{\"type\":\"number\","
666 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
667 "true,\"isOwn\":true},{\"name\":\"19\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
668 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
669 "\"20\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
670 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"21\",\"value\":{\"type\":\"number\","
671 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
672 "true,\"isOwn\":true},{\"name\":\"22\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
673 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
674 "\"23\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
675 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true}]}}",
676
677 "{\"id\":25,\"result\":{\"result\":[{\"name\":\"[[PrimitiveValue]]\",\"value\":{\"type\":\"boolean\","
678 "\"unserializableValue\":\"true\",\"description\":\"true\",\"objectId\":\"139\"},\"writable\":false,"
679 "\"configurable\":false,\"enumerable\":false,\"isOwn\":false}]}}",
680
681 "{\"id\":26,\"result\":{\"result\":[{\"name\":\"0\",\"value\":{\"type\":\"number\",\"unserializableValue\":"
682 "\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},"
683 "{\"name\":\"1\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},"
684 "\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"2\",\"value\":"
685 "{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":"
686 "true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"3\",\"value\":{\"type\":\"number\","
687 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
688 "true,\"isOwn\":true},{\"name\":\"4\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
689 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
690 "\"5\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
691 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"6\",\"value\":{\"type\":\"number\","
692 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
693 "true,\"isOwn\":true},{\"name\":\"7\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
694 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
695 "\"8\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
696 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"9\",\"value\":{\"type\":\"number\","
697 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
698 "true,\"isOwn\":true},{\"name\":\"10\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
699 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
700 "\"11\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
701 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"12\",\"value\":{\"type\":\"number\","
702 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
703 "true,\"isOwn\":true},{\"name\":\"13\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
704 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},"
705 "{\"name\":\"14\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},"
706 "\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"15\",\"value\":"
707 "{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":"
708 "true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"16\",\"value\":{\"type\":\"number\","
709 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
710 "true,\"isOwn\":true},{\"name\":\"17\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
711 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
712 "\"18\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
713 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"19\",\"value\":{\"type\":\"number\","
714 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
715 "true,\"isOwn\":true},{\"name\":\"20\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
716 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":"
717 "\"21\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,"
718 "\"configurable\":true,\"enumerable\":true,\"isOwn\":true},{\"name\":\"22\",\"value\":{\"type\":\"number\","
719 "\"unserializableValue\":\"0\",\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":"
720 "true,\"isOwn\":true},{\"name\":\"23\",\"value\":{\"type\":\"number\",\"unserializableValue\":\"0\","
721 "\"description\":\"0\"},\"writable\":true,\"configurable\":true,\"enumerable\":true,\"isOwn\":true}]}}"
722 };
723 };
724
GetJsModuleVariableTest()725 std::unique_ptr<TestActions> GetJsModuleVariableTest()
726 {
727 return std::make_unique<JsModuleVariableTest>();
728 }
729 } // namespace panda::ecmascript::tooling::test
730
731 #endif // ECMASCRIPT_TOOLING_TEST_TESTCASES_JS_MODULE_VARIABLE_TEST_H
732