• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
21 using namespace testing::ext;
22 
23 namespace panda::pandasm {
24 class AnnotationDataTest : public testing::Test {
25 };
26 
27 namespace {
28 constexpr const std::string_view TSTYPE_ANNO_RECORD_NAME = "_TestAnnotation";
29 constexpr 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  */
38 HWTEST_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  */
71 HWTEST_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  */
240 HWTEST_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  */
366 HWTEST_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  */
447 HWTEST_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 }