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#include <gtest/gtest.h>
17
18#include "annotation.h"
19#include "annotation.cpp"
20
21using namespace testing::ext;
22
23namespace panda::pandasm {
24class AnnotationDataTest : public testing::Test {
25};
26
27namespace {
28constexpr const std::string_view TSTYPE_ANNO_RECORD_NAME = "_TestAnnotation";
29constexpr const std::string_view TSTYPE_ANNO_ELEMENT_NAME = "_TestInstruction";
30}
31
32/**
33 * @tc.name: annotation_test_001
34 * @tc.desc: Verify the SetOrAddElementByIndex function.
35 * @tc.type: FUNC
36 * @tc.require: issueNumber
37 */
38HWTEST_F(AnnotationDataTest, annotation_test_001, TestSize.Level1)
39{
40    ScalarValue insn_order(ScalarValue::Create<panda::pandasm::Value::Type::I32>(1));
41    std::vector<panda::pandasm::ScalarValue> elements;
42    elements.emplace_back(std::move(insn_order));
43
44    ArrayValue array_value(panda::pandasm::Value::Type::I32, elements);
45    AnnotationElement anno_element(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_value));
46    AnnotationData annotationData(TSTYPE_ANNO_RECORD_NAME);
47    annotationData.AddElement(std::move(anno_element));
48
49    size_t ele_idx = 0;
50    annotationData.SetOrAddElementByIndex(ele_idx, std::move(anno_element));
51    EXPECT_EQ(annotationData.GetElements().size(), elements.size());
52
53    ele_idx = elements.size();
54    annotationData.SetOrAddElementByIndex(ele_idx, std::move(anno_element));
55    EXPECT_GT(annotationData.GetElements().size(), elements.size());
56
57    ScalarValue insn_order1(ScalarValue::Create<panda::pandasm::Value::Type::U1>(1U));
58    elements.emplace_back(std::move(insn_order1));
59    ArrayValue array_value_U1(panda::pandasm::Value::Type::U1, elements);
60    AnnotationElement anno_element_U1(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_value_U1));
61    anno_element = anno_element_U1;
62    EXPECT_EQ(anno_element.GetName(), "_TestInstruction");
63}
64
65/**
66 * @tc.name: annotation_test_002
67 * @tc.desc: Verify the GetArrayTypeAsChar function.
68 * @tc.type: FUNC
69 * @tc.require: issueNumber
70 */
71HWTEST_F(AnnotationDataTest, annotation_test_002, TestSize.Level1)
72{
73    char type = '1';
74    char type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U1);
75    EXPECT_EQ(type_u1, type);
76
77    type = '2';
78    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::I8);
79    EXPECT_EQ(type_u1, type);
80
81    type = '3';
82    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U8);
83    EXPECT_EQ(type_u1, type);
84
85    type = '4';
86    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::I16);
87    EXPECT_EQ(type_u1, type);
88
89    type = '5';
90    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U16);
91    EXPECT_EQ(type_u1, type);
92
93    type = '6';
94    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::I32);
95    EXPECT_EQ(type_u1, type);
96
97    type = '7';
98    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U32);
99    EXPECT_EQ(type_u1, type);
100
101    type = '8';
102    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::I64);
103    EXPECT_EQ(type_u1, type);
104
105    type = '9';
106    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U64);
107    EXPECT_EQ(type_u1, type);
108
109    type = 'A';
110    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::F32);
111    EXPECT_EQ(type_u1, type);
112
113    type = 'B';
114    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::F64);
115    EXPECT_EQ(type_u1, type);
116
117    type = 'C';
118    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::STRING);
119    EXPECT_EQ(type_u1, type);
120
121    type = 'D';
122    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::RECORD);
123    EXPECT_EQ(type_u1, type);
124
125    type = 'E';
126    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::METHOD);
127    EXPECT_EQ(type_u1, type);
128
129    type = 'F';
130    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::ENUM);
131    EXPECT_EQ(type_u1, type);
132
133    type = 'G';
134    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::ANNOTATION);
135    EXPECT_EQ(type_u1, type);
136
137    type = 'H';
138    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::ARRAY);
139    EXPECT_EQ(type_u1, type);
140
141    type = 'I';
142    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::VOID);
143    EXPECT_EQ(type_u1, type);
144
145    type = 'J';
146    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::METHOD_HANDLE);
147    EXPECT_EQ(type_u1, type);
148
149    type = '*';
150    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::STRING_NULLPTR);
151    EXPECT_EQ(type_u1, type);
152
153    type = '#';
154    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::LITERALARRAY);
155    EXPECT_EQ(type_u1, type);
156
157    type = '0';
158    type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::UNKNOWN);
159    EXPECT_EQ(type_u1, type);
160
161    type = 'K';
162    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U1);
163    EXPECT_EQ(type_u1, type);
164
165    type = 'L';
166    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::I8);
167    EXPECT_EQ(type_u1, type);
168
169    type = 'M';
170    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U8);
171    EXPECT_EQ(type_u1, type);
172
173    type = 'N';
174    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::I16);
175    EXPECT_EQ(type_u1, type);
176
177    type = 'O';
178    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U16);
179    EXPECT_EQ(type_u1, type);
180
181    type = 'P';
182    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::I32);
183    EXPECT_EQ(type_u1, type);
184
185    type = 'Q';
186    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U32);
187    EXPECT_EQ(type_u1, type);
188
189    type = 'R';
190    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::I64);
191    EXPECT_EQ(type_u1, type);
192
193    type = 'S';
194    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U64);
195    EXPECT_EQ(type_u1, type);
196
197    type = 'T';
198    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::F32);
199    EXPECT_EQ(type_u1, type);
200
201    type = 'U';
202    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::F64);
203    EXPECT_EQ(type_u1, type);
204
205    type = 'V';
206    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::STRING);
207    EXPECT_EQ(type_u1, type);
208
209    type = 'W';
210    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::RECORD);
211    EXPECT_EQ(type_u1, type);
212
213    type = 'X';
214    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::METHOD);
215    EXPECT_EQ(type_u1, type);
216
217    type = 'Y';
218    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::ENUM);
219    EXPECT_EQ(type_u1, type);
220
221    type = 'Z';
222    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::ANNOTATION);
223    EXPECT_EQ(type_u1, type);
224
225    type = '@';
226    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::METHOD_HANDLE);
227    EXPECT_EQ(type_u1, type);
228
229    type = '0';
230    type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::UNKNOWN);
231    EXPECT_EQ(type_u1, type);
232}
233
234/**
235 * @tc.name: annotation_test_003
236 * @tc.desc: Verify the GetCharAsType function.
237 * @tc.type: FUNC
238 * @tc.require: issueNumber
239 */
240HWTEST_F(AnnotationDataTest, annotation_test_003, TestSize.Level1)
241{
242    panda::pandasm::Value::Type type = Value::GetCharAsType('1');
243    EXPECT_EQ(panda::pandasm::Value::Type::U1, type);
244
245    type = Value::GetCharAsType('2');
246    EXPECT_EQ(panda::pandasm::Value::Type::I8, type);
247
248    type = Value::GetCharAsType('3');
249    EXPECT_EQ(panda::pandasm::Value::Type::U8, type);
250
251    type = Value::GetCharAsType('4');
252    EXPECT_EQ(panda::pandasm::Value::Type::I16, type);
253
254    type = Value::GetCharAsType('5');
255    EXPECT_EQ(panda::pandasm::Value::Type::U16, type);
256
257    type = Value::GetCharAsType('6');
258    EXPECT_EQ(panda::pandasm::Value::Type::I32, type);
259
260    type = Value::GetCharAsType('7');
261    EXPECT_EQ(panda::pandasm::Value::Type::U32, type);
262
263    type = Value::GetCharAsType('8');
264    EXPECT_EQ(panda::pandasm::Value::Type::I64, type);
265
266    type = Value::GetCharAsType('9');
267    EXPECT_EQ(panda::pandasm::Value::Type::U64, type);
268
269    type = Value::GetCharAsType('A');
270    EXPECT_EQ(panda::pandasm::Value::Type::F32, type);
271
272    type = Value::GetCharAsType('B');
273    EXPECT_EQ(panda::pandasm::Value::Type::F64, type);
274
275    type = Value::GetCharAsType('C');
276    EXPECT_EQ(panda::pandasm::Value::Type::STRING, type);
277
278    type = Value::GetCharAsType('D');
279    EXPECT_EQ(panda::pandasm::Value::Type::RECORD, type);
280
281    type = Value::GetCharAsType('E');
282    EXPECT_EQ(panda::pandasm::Value::Type::METHOD, type);
283
284    type = Value::GetCharAsType('F');
285    EXPECT_EQ(panda::pandasm::Value::Type::ENUM, type);
286
287    type = Value::GetCharAsType('G');
288    EXPECT_EQ(panda::pandasm::Value::Type::ANNOTATION, type);
289
290    type = Value::GetCharAsType('H');
291    EXPECT_EQ(panda::pandasm::Value::Type::ARRAY, type);
292
293    type = Value::GetCharAsType('I');
294    EXPECT_EQ(panda::pandasm::Value::Type::VOID, type);
295
296    type = Value::GetCharAsType('J');
297    EXPECT_EQ(panda::pandasm::Value::Type::METHOD_HANDLE, type);
298
299    type = Value::GetCharAsType('*');
300    EXPECT_EQ(panda::pandasm::Value::Type::STRING_NULLPTR, type);
301
302    type = Value::GetCharAsType('0');
303    EXPECT_EQ(panda::pandasm::Value::Type::UNKNOWN, type);
304
305    type = Value::GetCharAsArrayType('K');
306    EXPECT_EQ(panda::pandasm::Value::Type::U1, type);
307
308    type = Value::GetCharAsArrayType('L');
309    EXPECT_EQ(panda::pandasm::Value::Type::I8, type);
310
311    type = Value::GetCharAsArrayType('M');
312    EXPECT_EQ(panda::pandasm::Value::Type::U8, type);
313
314    type = Value::GetCharAsArrayType('N');
315    EXPECT_EQ(panda::pandasm::Value::Type::I16, type);
316
317    type = Value::GetCharAsArrayType('O');
318    EXPECT_EQ(panda::pandasm::Value::Type::U16, type);
319
320    type = Value::GetCharAsArrayType('P');
321    EXPECT_EQ(panda::pandasm::Value::Type::I32, type);
322
323    type = Value::GetCharAsArrayType('Q');
324    EXPECT_EQ(panda::pandasm::Value::Type::U32, type);
325
326    type = Value::GetCharAsArrayType('R');
327    EXPECT_EQ(panda::pandasm::Value::Type::I64, type);
328
329    type = Value::GetCharAsArrayType('S');
330    EXPECT_EQ(panda::pandasm::Value::Type::U64, type);
331
332    type = Value::GetCharAsArrayType('T');
333    EXPECT_EQ(panda::pandasm::Value::Type::F32, type);
334
335    type = Value::GetCharAsArrayType('U');
336    EXPECT_EQ(panda::pandasm::Value::Type::F64, type);
337
338    type = Value::GetCharAsArrayType('V');
339    EXPECT_EQ(panda::pandasm::Value::Type::STRING, type);
340
341    type = Value::GetCharAsArrayType('W');
342    EXPECT_EQ(panda::pandasm::Value::Type::RECORD, type);
343
344    type = Value::GetCharAsArrayType('X');
345    EXPECT_EQ(panda::pandasm::Value::Type::METHOD, type);
346
347    type = Value::GetCharAsArrayType('Y');
348    EXPECT_EQ(panda::pandasm::Value::Type::ENUM, type);
349
350    type = Value::GetCharAsArrayType('Z');
351    EXPECT_EQ(panda::pandasm::Value::Type::ANNOTATION, type);
352
353    type = Value::GetCharAsArrayType('@');
354    EXPECT_EQ(panda::pandasm::Value::Type::METHOD_HANDLE, type);
355
356    type = Value::GetCharAsArrayType('0');
357    EXPECT_EQ(panda::pandasm::Value::Type::UNKNOWN, type);
358}
359
360/**
361 * @tc.name: annotation_test_004
362 * @tc.desc: Verify the TypeToString function.
363 * @tc.type: FUNC
364 * @tc.require: issueNumber
365 */
366HWTEST_F(AnnotationDataTest, annotation_test_004, TestSize.Level1)
367{
368    std::string type = "u1";
369    std::string type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U1);
370    EXPECT_EQ(type_u1, type);
371
372    type = "i8";
373    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::I8);
374    EXPECT_EQ(type_u1, type);
375
376    type = "u8";
377    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U8);
378    EXPECT_EQ(type_u1, type);
379
380    type = "i16";
381    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::I16);
382    EXPECT_EQ(type_u1, type);
383
384    type = "u16";
385    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U16);
386    EXPECT_EQ(type_u1, type);
387
388    type = "i32";
389    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::I32);
390    EXPECT_EQ(type_u1, type);
391
392    type = "u32";
393    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U32);
394    EXPECT_EQ(type_u1, type);
395
396    type = "i64";
397    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::I64);
398    EXPECT_EQ(type_u1, type);
399
400    type = "u64";
401    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U64);
402    EXPECT_EQ(type_u1, type);
403
404    type = "f32";
405    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::F32);
406    EXPECT_EQ(type_u1, type);
407
408    type = "f64";
409    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::F64);
410    EXPECT_EQ(type_u1, type);
411
412    type = "string";
413    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::STRING);
414    EXPECT_EQ(type_u1, type);
415
416    type = "class";
417    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::RECORD);
418    EXPECT_EQ(type_u1, type);
419
420    type = "method";
421    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::METHOD);
422    EXPECT_EQ(type_u1, type);
423
424    type = "enum";
425    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::ENUM);
426    EXPECT_EQ(type_u1, type);
427
428    type = "annotation";
429    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::ANNOTATION);
430    EXPECT_EQ(type_u1, type);
431
432    type = "array";
433    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::ARRAY);
434    EXPECT_EQ(type_u1, type);
435
436    type = "void";
437    type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::VOID);
438    EXPECT_EQ(type_u1, type);
439}
440
441/**
442 * @tc.name: annotation_test_005
443 * @tc.desc: Verify the InitScalarValue function.
444 * @tc.type: FUNC
445 * @tc.require: issueNumber
446 */
447HWTEST_F(AnnotationDataTest, annotation_test_005, TestSize.Level1)
448{
449    ScalarValue insn_order(ScalarValue::Create<panda::pandasm::Value::Type::I32>(1));
450    std::unique_ptr<ScalarValue> value = panda::pandasm::InitScalarValue(insn_order);
451    EXPECT_NE(value, nullptr);
452
453    ScalarValue insn_order_u8(ScalarValue::Create<panda::pandasm::Value::Type::U8>(1U));
454    value = panda::pandasm::InitScalarValue(insn_order_u8);
455    EXPECT_NE(value, nullptr);
456
457    ScalarValue insn_order_u16(ScalarValue::Create<panda::pandasm::Value::Type::U16>(1U));
458    value = panda::pandasm::InitScalarValue(insn_order_u16);
459    EXPECT_NE(value, nullptr);
460
461    ScalarValue insn_order_u32(ScalarValue::Create<panda::pandasm::Value::Type::U32>(1U));
462    value = panda::pandasm::InitScalarValue(insn_order_u32);
463    EXPECT_NE(value, nullptr);
464
465    ScalarValue insn_order_u64(ScalarValue::Create<panda::pandasm::Value::Type::U64>(1U));
466    value = panda::pandasm::InitScalarValue(insn_order_u64);
467    EXPECT_NE(value, nullptr);
468
469    ScalarValue insn_order_i8(ScalarValue::Create<panda::pandasm::Value::Type::I8>(1));
470    value = panda::pandasm::InitScalarValue(insn_order_i8);
471    EXPECT_NE(value, nullptr);
472
473    ScalarValue insn_order_i16(ScalarValue::Create<panda::pandasm::Value::Type::I16>(1));
474    value = panda::pandasm::InitScalarValue(insn_order_i16);
475    EXPECT_NE(value, nullptr);
476
477    ScalarValue insn_order_i64(ScalarValue::Create<panda::pandasm::Value::Type::I64>(1));
478    value = panda::pandasm::InitScalarValue(insn_order_i64);
479    EXPECT_NE(value, nullptr);
480
481    ScalarValue insn_order_f32(ScalarValue::Create<panda::pandasm::Value::Type::F32>(1));
482    value = panda::pandasm::InitScalarValue(insn_order_f32);
483    EXPECT_NE(value, nullptr);
484
485    ScalarValue insn_order_f64(ScalarValue::Create<panda::pandasm::Value::Type::F64>(1));
486    value = panda::pandasm::InitScalarValue(insn_order_f64);
487    EXPECT_NE(value, nullptr);
488
489    ScalarValue insn_order_string(ScalarValue::Create<panda::pandasm::Value::Type::STRING>("test"));
490    value = panda::pandasm::InitScalarValue(insn_order_string);
491    EXPECT_NE(value, nullptr);
492
493    ScalarValue insn_order_strings(ScalarValue::Create<panda::pandasm::Value::Type::STRING_NULLPTR>(1));
494    value = panda::pandasm::InitScalarValue(insn_order_strings);
495    EXPECT_NE(value, nullptr);
496
497    panda::pandasm::Type type;
498    ScalarValue insn_order_record(ScalarValue::Create<panda::pandasm::Value::Type::RECORD>(type));
499    value = panda::pandasm::InitScalarValue(insn_order_record);
500    EXPECT_NE(value, nullptr);
501
502    ScalarValue insn_order_method(ScalarValue::Create<panda::pandasm::Value::Type::METHOD>("test"));
503    value = panda::pandasm::InitScalarValue(insn_order_method);
504    EXPECT_NE(value, nullptr);
505
506    ScalarValue insn_order_enum(ScalarValue::Create<panda::pandasm::Value::Type::ENUM>("test"));
507    value = panda::pandasm::InitScalarValue(insn_order_enum);
508    EXPECT_NE(value, nullptr);
509
510    ScalarValue insn_orders(ScalarValue::Create<panda::pandasm::Value::Type::I32>(1));
511    std::vector<panda::pandasm::ScalarValue> elements;
512    elements.emplace_back(std::move(insn_orders));
513
514    ArrayValue array_value(panda::pandasm::Value::Type::I32, elements);
515    AnnotationElement anno_element(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_value));
516    AnnotationData annotationData(TSTYPE_ANNO_RECORD_NAME);
517    ScalarValue insn_order_anno(ScalarValue::Create<panda::pandasm::Value::Type::ANNOTATION>(annotationData));
518    value = panda::pandasm::InitScalarValue(insn_order_anno);
519    EXPECT_NE(value, nullptr);
520
521    ScalarValue insn_order_lite(ScalarValue::Create<panda::pandasm::Value::Type::LITERALARRAY>("test"));
522    value = panda::pandasm::InitScalarValue(insn_order_lite);
523    EXPECT_NE(value, nullptr);
524
525    ArrayValue array_values(panda::pandasm::Value::Type::LITERALARRAY, elements);
526    AnnotationElement element(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_values));
527    std::unique_ptr<Value> val = panda::pandasm::making_value(element);
528    EXPECT_NE(val, nullptr);
529
530    elements.clear();
531    ArrayValue array_values1(panda::pandasm::Value::Type::LITERALARRAY, elements);
532    AnnotationElement element1(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_values1));
533    std::unique_ptr<Value> val1 = panda::pandasm::making_value(element1);
534    EXPECT_NE(val1, nullptr);
535}
536}