mirror of
https://gitee.com/openharmony/arkcompiler_runtime_core
synced 2025-04-15 17:10:27 +00:00

https://gitee.com/openharmony/arkcompiler_runtime_core/issues/I7I6TF Signed-off-by: lw19901203 <liuwei742@huawei.com>
536 lines
18 KiB
C++
536 lines
18 KiB
C++
/**
|
|
* Copyright (c) 2023 Huawei Device Co., Ltd.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
#include "annotation.h"
|
|
#include "annotation.cpp"
|
|
|
|
using namespace testing::ext;
|
|
|
|
namespace panda::pandasm {
|
|
class AnnotationDataTest : public testing::Test {
|
|
};
|
|
|
|
namespace {
|
|
constexpr const std::string_view TSTYPE_ANNO_RECORD_NAME = "_TestAnnotation";
|
|
constexpr const std::string_view TSTYPE_ANNO_ELEMENT_NAME = "_TestInstruction";
|
|
}
|
|
|
|
/**
|
|
* @tc.name: annotation_test_001
|
|
* @tc.desc: Verify the SetOrAddElementByIndex function.
|
|
* @tc.type: FUNC
|
|
* @tc.require: issueNumber
|
|
*/
|
|
HWTEST_F(AnnotationDataTest, annotation_test_001, TestSize.Level1)
|
|
{
|
|
ScalarValue insn_order(ScalarValue::Create<panda::pandasm::Value::Type::I32>(1));
|
|
std::vector<panda::pandasm::ScalarValue> elements;
|
|
elements.emplace_back(std::move(insn_order));
|
|
|
|
ArrayValue array_value(panda::pandasm::Value::Type::I32, elements);
|
|
AnnotationElement anno_element(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_value));
|
|
AnnotationData annotationData(TSTYPE_ANNO_RECORD_NAME);
|
|
annotationData.AddElement(std::move(anno_element));
|
|
|
|
size_t ele_idx = 0;
|
|
annotationData.SetOrAddElementByIndex(ele_idx, std::move(anno_element));
|
|
EXPECT_EQ(annotationData.GetElements().size(), elements.size());
|
|
|
|
ele_idx = elements.size();
|
|
annotationData.SetOrAddElementByIndex(ele_idx, std::move(anno_element));
|
|
EXPECT_GT(annotationData.GetElements().size(), elements.size());
|
|
|
|
ScalarValue insn_order1(ScalarValue::Create<panda::pandasm::Value::Type::U1>(1U));
|
|
elements.emplace_back(std::move(insn_order1));
|
|
ArrayValue array_value_U1(panda::pandasm::Value::Type::U1, elements);
|
|
AnnotationElement anno_element_U1(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_value_U1));
|
|
anno_element = anno_element_U1;
|
|
EXPECT_EQ(anno_element.GetName(), "_TestInstruction");
|
|
}
|
|
|
|
/**
|
|
* @tc.name: annotation_test_002
|
|
* @tc.desc: Verify the GetArrayTypeAsChar function.
|
|
* @tc.type: FUNC
|
|
* @tc.require: issueNumber
|
|
*/
|
|
HWTEST_F(AnnotationDataTest, annotation_test_002, TestSize.Level1)
|
|
{
|
|
char type = '1';
|
|
char type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U1);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '2';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::I8);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '3';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U8);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '4';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::I16);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '5';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U16);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '6';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::I32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '7';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '8';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::I64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '9';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::U64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'A';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::F32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'B';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::F64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'C';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::STRING);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'D';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::RECORD);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'E';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::METHOD);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'F';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::ENUM);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'G';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::ANNOTATION);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'H';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::ARRAY);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'I';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::VOID);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'J';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::METHOD_HANDLE);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '*';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::STRING_NULLPTR);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '#';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::LITERALARRAY);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '0';
|
|
type_u1 = Value::GetTypeAsChar(panda::pandasm::Value::Type::UNKNOWN);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'K';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U1);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'L';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::I8);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'M';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U8);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'N';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::I16);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'O';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U16);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'P';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::I32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'Q';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'R';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::I64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'S';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::U64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'T';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::F32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'U';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::F64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'V';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::STRING);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'W';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::RECORD);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'X';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::METHOD);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'Y';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::ENUM);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = 'Z';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::ANNOTATION);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '@';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::METHOD_HANDLE);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = '0';
|
|
type_u1 = Value::GetArrayTypeAsChar(panda::pandasm::Value::Type::UNKNOWN);
|
|
EXPECT_EQ(type_u1, type);
|
|
}
|
|
|
|
/**
|
|
* @tc.name: annotation_test_003
|
|
* @tc.desc: Verify the GetCharAsType function.
|
|
* @tc.type: FUNC
|
|
* @tc.require: issueNumber
|
|
*/
|
|
HWTEST_F(AnnotationDataTest, annotation_test_003, TestSize.Level1)
|
|
{
|
|
panda::pandasm::Value::Type type = Value::GetCharAsType('1');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U1, type);
|
|
|
|
type = Value::GetCharAsType('2');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::I8, type);
|
|
|
|
type = Value::GetCharAsType('3');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U8, type);
|
|
|
|
type = Value::GetCharAsType('4');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::I16, type);
|
|
|
|
type = Value::GetCharAsType('5');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U16, type);
|
|
|
|
type = Value::GetCharAsType('6');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::I32, type);
|
|
|
|
type = Value::GetCharAsType('7');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U32, type);
|
|
|
|
type = Value::GetCharAsType('8');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::I64, type);
|
|
|
|
type = Value::GetCharAsType('9');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U64, type);
|
|
|
|
type = Value::GetCharAsType('A');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::F32, type);
|
|
|
|
type = Value::GetCharAsType('B');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::F64, type);
|
|
|
|
type = Value::GetCharAsType('C');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::STRING, type);
|
|
|
|
type = Value::GetCharAsType('D');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::RECORD, type);
|
|
|
|
type = Value::GetCharAsType('E');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::METHOD, type);
|
|
|
|
type = Value::GetCharAsType('F');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::ENUM, type);
|
|
|
|
type = Value::GetCharAsType('G');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::ANNOTATION, type);
|
|
|
|
type = Value::GetCharAsType('H');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::ARRAY, type);
|
|
|
|
type = Value::GetCharAsType('I');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::VOID, type);
|
|
|
|
type = Value::GetCharAsType('J');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::METHOD_HANDLE, type);
|
|
|
|
type = Value::GetCharAsType('*');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::STRING_NULLPTR, type);
|
|
|
|
type = Value::GetCharAsType('0');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::UNKNOWN, type);
|
|
|
|
type = Value::GetCharAsArrayType('K');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U1, type);
|
|
|
|
type = Value::GetCharAsArrayType('L');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::I8, type);
|
|
|
|
type = Value::GetCharAsArrayType('M');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U8, type);
|
|
|
|
type = Value::GetCharAsArrayType('N');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::I16, type);
|
|
|
|
type = Value::GetCharAsArrayType('O');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U16, type);
|
|
|
|
type = Value::GetCharAsArrayType('P');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::I32, type);
|
|
|
|
type = Value::GetCharAsArrayType('Q');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U32, type);
|
|
|
|
type = Value::GetCharAsArrayType('R');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::I64, type);
|
|
|
|
type = Value::GetCharAsArrayType('S');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::U64, type);
|
|
|
|
type = Value::GetCharAsArrayType('T');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::F32, type);
|
|
|
|
type = Value::GetCharAsArrayType('U');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::F64, type);
|
|
|
|
type = Value::GetCharAsArrayType('V');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::STRING, type);
|
|
|
|
type = Value::GetCharAsArrayType('W');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::RECORD, type);
|
|
|
|
type = Value::GetCharAsArrayType('X');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::METHOD, type);
|
|
|
|
type = Value::GetCharAsArrayType('Y');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::ENUM, type);
|
|
|
|
type = Value::GetCharAsArrayType('Z');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::ANNOTATION, type);
|
|
|
|
type = Value::GetCharAsArrayType('@');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::METHOD_HANDLE, type);
|
|
|
|
type = Value::GetCharAsArrayType('0');
|
|
EXPECT_EQ(panda::pandasm::Value::Type::UNKNOWN, type);
|
|
}
|
|
|
|
/**
|
|
* @tc.name: annotation_test_004
|
|
* @tc.desc: Verify the TypeToString function.
|
|
* @tc.type: FUNC
|
|
* @tc.require: issueNumber
|
|
*/
|
|
HWTEST_F(AnnotationDataTest, annotation_test_004, TestSize.Level1)
|
|
{
|
|
std::string type = "u1";
|
|
std::string type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U1);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "i8";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::I8);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "u8";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U8);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "i16";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::I16);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "u16";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U16);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "i32";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::I32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "u32";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "i64";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::I64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "u64";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::U64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "f32";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::F32);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "f64";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::F64);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "string";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::STRING);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "class";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::RECORD);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "method";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::METHOD);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "enum";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::ENUM);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "annotation";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::ANNOTATION);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "array";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::ARRAY);
|
|
EXPECT_EQ(type_u1, type);
|
|
|
|
type = "void";
|
|
type_u1 = AnnotationElement::TypeToString(panda::pandasm::Value::Type::VOID);
|
|
EXPECT_EQ(type_u1, type);
|
|
}
|
|
|
|
/**
|
|
* @tc.name: annotation_test_005
|
|
* @tc.desc: Verify the InitScalarValue function.
|
|
* @tc.type: FUNC
|
|
* @tc.require: issueNumber
|
|
*/
|
|
HWTEST_F(AnnotationDataTest, annotation_test_005, TestSize.Level1)
|
|
{
|
|
ScalarValue insn_order(ScalarValue::Create<panda::pandasm::Value::Type::I32>(1));
|
|
std::unique_ptr<ScalarValue> value = panda::pandasm::InitScalarValue(insn_order);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_u8(ScalarValue::Create<panda::pandasm::Value::Type::U8>(1U));
|
|
value = panda::pandasm::InitScalarValue(insn_order_u8);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_u16(ScalarValue::Create<panda::pandasm::Value::Type::U16>(1U));
|
|
value = panda::pandasm::InitScalarValue(insn_order_u16);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_u32(ScalarValue::Create<panda::pandasm::Value::Type::U32>(1U));
|
|
value = panda::pandasm::InitScalarValue(insn_order_u32);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_u64(ScalarValue::Create<panda::pandasm::Value::Type::U64>(1U));
|
|
value = panda::pandasm::InitScalarValue(insn_order_u64);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_i8(ScalarValue::Create<panda::pandasm::Value::Type::I8>(1));
|
|
value = panda::pandasm::InitScalarValue(insn_order_i8);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_i16(ScalarValue::Create<panda::pandasm::Value::Type::I16>(1));
|
|
value = panda::pandasm::InitScalarValue(insn_order_i16);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_i64(ScalarValue::Create<panda::pandasm::Value::Type::I64>(1));
|
|
value = panda::pandasm::InitScalarValue(insn_order_i64);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_f32(ScalarValue::Create<panda::pandasm::Value::Type::F32>(1));
|
|
value = panda::pandasm::InitScalarValue(insn_order_f32);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_f64(ScalarValue::Create<panda::pandasm::Value::Type::F64>(1));
|
|
value = panda::pandasm::InitScalarValue(insn_order_f64);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_string(ScalarValue::Create<panda::pandasm::Value::Type::STRING>("test"));
|
|
value = panda::pandasm::InitScalarValue(insn_order_string);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_strings(ScalarValue::Create<panda::pandasm::Value::Type::STRING_NULLPTR>(1));
|
|
value = panda::pandasm::InitScalarValue(insn_order_strings);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
panda::pandasm::Type type;
|
|
ScalarValue insn_order_record(ScalarValue::Create<panda::pandasm::Value::Type::RECORD>(type));
|
|
value = panda::pandasm::InitScalarValue(insn_order_record);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_method(ScalarValue::Create<panda::pandasm::Value::Type::METHOD>("test"));
|
|
value = panda::pandasm::InitScalarValue(insn_order_method);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_enum(ScalarValue::Create<panda::pandasm::Value::Type::ENUM>("test"));
|
|
value = panda::pandasm::InitScalarValue(insn_order_enum);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_orders(ScalarValue::Create<panda::pandasm::Value::Type::I32>(1));
|
|
std::vector<panda::pandasm::ScalarValue> elements;
|
|
elements.emplace_back(std::move(insn_orders));
|
|
|
|
ArrayValue array_value(panda::pandasm::Value::Type::I32, elements);
|
|
AnnotationElement anno_element(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_value));
|
|
AnnotationData annotationData(TSTYPE_ANNO_RECORD_NAME);
|
|
ScalarValue insn_order_anno(ScalarValue::Create<panda::pandasm::Value::Type::ANNOTATION>(annotationData));
|
|
value = panda::pandasm::InitScalarValue(insn_order_anno);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ScalarValue insn_order_lite(ScalarValue::Create<panda::pandasm::Value::Type::LITERALARRAY>("test"));
|
|
value = panda::pandasm::InitScalarValue(insn_order_lite);
|
|
EXPECT_NE(value, nullptr);
|
|
|
|
ArrayValue array_values(panda::pandasm::Value::Type::LITERALARRAY, elements);
|
|
AnnotationElement element(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_values));
|
|
std::unique_ptr<Value> val = panda::pandasm::making_value(element);
|
|
EXPECT_NE(val, nullptr);
|
|
|
|
elements.clear();
|
|
ArrayValue array_values1(panda::pandasm::Value::Type::LITERALARRAY, elements);
|
|
AnnotationElement element1(TSTYPE_ANNO_ELEMENT_NAME, std::make_unique<ArrayValue>(array_values1));
|
|
std::unique_ptr<Value> val1 = panda::pandasm::making_value(element1);
|
|
EXPECT_NE(val1, nullptr);
|
|
}
|
|
} |