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 #include <string> 18 #include "disassembler.h" 19 20 using namespace testing::ext; 21 22 namespace panda::disasm { 23 class DisasmTest : public testing::Test { 24 public: SetUpTestCase(void)25 static void SetUpTestCase(void) {}; TearDownTestCase(void)26 static void TearDownTestCase(void) {}; SetUp()27 void SetUp() {}; TearDown()28 void TearDown() {}; 29 }; 30 31 /** 32 * @tc.name: disassembler_column_number_test_001 33 * @tc.desc: Check abc file column number function. 34 * @tc.type: FUNC 35 * @tc.require: file path and name 36 */ 37 HWTEST_F(DisasmTest, disassembler_column_number_test_001, TestSize.Level1) 38 { 39 const std::string file_name = GRAPH_TEST_ABC_DIR "column-number1.abc"; 40 panda::disasm::Disassembler disasm {}; 41 disasm.Disassemble(file_name, false, false); 42 disasm.CollectInfo(); 43 // The known column number in the abc file 44 std::vector<size_t> expectedColumnNumber = {10, 14, 6, -1, 1, 8, 4, 8, 4, -1}; 45 std::vector<size_t> columnNumber = disasm.GetColumnNumber(); 46 ASSERT_EQ(expectedColumnNumber.size(), columnNumber.size()); 47 for (size_t i = 0; i < expectedColumnNumber.size(); ++i) { 48 EXPECT_EQ(expectedColumnNumber[i], columnNumber[i]); 49 } 50 } 51 52 /** 53 * @tc.name: disassembler_column_number_test_002 54 * @tc.desc: Check abc file column number function. 55 * @tc.type: FUNC 56 * @tc.require: file path and name 57 */ 58 HWTEST_F(DisasmTest, disassembler_column_number_test_002, TestSize.Level1) 59 { 60 const std::string file_name = GRAPH_TEST_ABC_DIR "column-number2.abc"; 61 panda::disasm::Disassembler disasm {}; 62 disasm.Disassemble(file_name, false, false); 63 disasm.CollectInfo(); 64 // The known column number in the abc file 65 std::vector<size_t> expectedColumnNumber = {10, 6, 10, 6, 10, 6, -1, 1}; 66 std::vector<size_t> columnNumber = disasm.GetColumnNumber(); 67 ASSERT_EQ(expectedColumnNumber.size(), columnNumber.size()); 68 for (size_t i = 0; i < expectedColumnNumber.size(); ++i) { 69 EXPECT_EQ(expectedColumnNumber[i], columnNumber[i]); 70 } 71 } 72 73 /** 74 * @tc.name: disassembler_column_number_test_003 75 * @tc.desc: Check abc file column number function. 76 * @tc.type: FUNC 77 * @tc.require: file path and name 78 */ 79 HWTEST_F(DisasmTest, disassembler_column_number_test_003, TestSize.Level1) 80 { 81 const std::string file_name = GRAPH_TEST_ABC_DIR "column-number3.abc"; 82 panda::disasm::Disassembler disasm {}; 83 disasm.Disassemble(file_name, false, false); 84 disasm.CollectInfo(); 85 // The known column number in the abc file 86 std::vector<size_t> expectedColumnNumber = {4, 16, 4, 15, 4, -1, 3, 14, 6, 14, 6, -1}; 87 std::vector<size_t> columnNumber = disasm.GetColumnNumber(); 88 ASSERT_EQ(expectedColumnNumber.size(), columnNumber.size()); 89 for (size_t i = 0; i < expectedColumnNumber.size(); ++i) { 90 EXPECT_EQ(expectedColumnNumber[i], columnNumber[i]); 91 } 92 } 93 94 /** 95 * @tc.name: disassembler_column_number_test_004 96 * @tc.desc: Check abc file column number function. 97 * @tc.type: FUNC 98 * @tc.require: file path and name 99 */ 100 HWTEST_F(DisasmTest, disassembler_column_number_test_004, TestSize.Level1) 101 { 102 const std::string file_name = GRAPH_TEST_ABC_DIR "column-number4.abc"; 103 panda::disasm::Disassembler disasm {}; 104 disasm.Disassemble(file_name, false, false); 105 disasm.CollectInfo(); 106 std::vector<size_t> expectedColumnNumber = {10, 14, 6, 10, 6, 10, 14, 6, 9, 1, 1, 4, -1, 3, 8, 4, 8, 4, -1}; 107 std::vector<size_t> columnNumber = disasm.GetColumnNumber(); 108 ASSERT_EQ(expectedColumnNumber.size(), columnNumber.size()); 109 for (size_t i = 0; i < expectedColumnNumber.size(); ++i) { 110 EXPECT_EQ(expectedColumnNumber[i], columnNumber[i]); 111 } 112 } 113 114 /** 115 * @tc.name: disassembler_column_number_test_005 116 * @tc.desc: Check abc file column number function. 117 * @tc.type: FUNC 118 * @tc.require: file path and name 119 */ 120 HWTEST_F(DisasmTest, disassembler_column_number_test_005, TestSize.Level1) 121 { 122 const std::string file_name = GRAPH_TEST_ABC_DIR "column-number5.abc"; 123 panda::disasm::Disassembler disasm {}; 124 disasm.Disassemble(file_name, false, false); 125 disasm.CollectInfo(); 126 // The known column number in the abc file 127 std::vector<size_t> expectedColumnNumber = {10, 6, 10, 6, 10, 14, 6, 10, 14, 6, 9, 1, 2, -1, 1, 128 4, 16, 4, 15, 4, -1, 3, 14, 6, 14, 6, 8, 4, -1}; 129 std::vector<size_t> columnNumber = disasm.GetColumnNumber(); 130 ASSERT_EQ(expectedColumnNumber.size(), columnNumber.size()); 131 for (size_t i = 0; i < expectedColumnNumber.size(); ++i) { 132 EXPECT_EQ(expectedColumnNumber[i], columnNumber[i]); 133 } 134 } 135 136 /** 137 * @tc.name: disassembler_column_number_test_006 138 * @tc.desc: Check abc file column number function. 139 * @tc.type: FUNC 140 * @tc.require: file path and name 141 */ 142 HWTEST_F(DisasmTest, disassembler_column_number_test_006, TestSize.Level1) 143 { 144 const std::string file_name = GRAPH_TEST_ABC_DIR "column-number6.abc"; 145 panda::disasm::Disassembler disasm {}; 146 disasm.Disassemble(file_name, false, false); 147 disasm.CollectInfo(); 148 // The known column number in the abc file 149 std::vector<size_t> expectedColumnNumber = {13, 6, 21, 29, 37, 29, 15, 8, 10, 4, 1, 4, -1, 1, 6, 1, 150 13, 6, 10, 18, 26, 18, 4, -1, 1, 6, 1, 13, 6, 10, 4, 1, 4, -1, 151 1, 0, 13, 6, 12, 11, 4, -1, 1, 15, 8, 16, 15, 8, -1, 3, 152 14, 6, 14, 6, -1}; 153 std::vector<size_t> columnNumber = disasm.GetColumnNumber(); 154 ASSERT_EQ(expectedColumnNumber.size(), columnNumber.size()); 155 for (size_t i = 0; i < expectedColumnNumber.size(); ++i) { 156 EXPECT_EQ(expectedColumnNumber[i], columnNumber[i]); 157 } 158 } 159 } 160