1 /**
2 * Copyright (c) 2024 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 "../../../include/cpp/abckit_cpp.h"
17 #include "../check_mock.h"
18 #include <gtest/gtest.h>
19
20 namespace libabckit::test {
21
22 class LibAbcKitCppMockTest : public ::testing::Test {};
23
24 // Test: test-kind=mock, api=File::WriteAbc, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockTest,CppTestMockFile)25 TEST_F(LibAbcKitCppMockTest, CppTestMockFile)
26 {
27 ASSERT_TRUE(CheckMockedStackEmpty());
28 {
29 abckit::File file("abckit.abc");
30 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
31 file.WriteAbc("abckit.abc");
32 ASSERT_TRUE(CheckMockedApi("WriteAbc"));
33 }
34 ASSERT_TRUE(CheckMockedApi("CloseFile"));
35 ASSERT_TRUE(CheckMockedStackEmpty());
36 }
37
38 // Test: test-kind=mock, api=File::EnumerateModules, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockTest,CppTestMockFileEnumerateModules)39 TEST_F(LibAbcKitCppMockTest, CppTestMockFileEnumerateModules)
40 {
41 ASSERT_TRUE(CheckMockedStackEmpty());
42 {
43 abckit::File file("abckit.abc");
44 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
45
46 std::vector<abckit::core::Module> modules;
47
48 file.EnumerateModules([&](const abckit::core::Module &md) -> bool {
49 modules.push_back(md);
50 return true;
51 });
52
53 ASSERT_TRUE(CheckMockedApi("FileEnumerateModules"));
54
55 file.WriteAbc("abckit.abc");
56 ASSERT_TRUE(CheckMockedApi("WriteAbc"));
57 }
58 ASSERT_TRUE(CheckMockedApi("CloseFile"));
59 ASSERT_TRUE(CheckMockedStackEmpty());
60 }
61
62 // Test: test-kind=mock, api=File::GetModules, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockTest,CppTestGetModule)63 TEST_F(LibAbcKitCppMockTest, CppTestGetModule)
64 {
65 ASSERT_TRUE(CheckMockedStackEmpty());
66 {
67 abckit::File file("abckit.abc");
68 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
69 abckit::core::Module mdl = file.GetModules()[0];
70 ASSERT_TRUE(CheckMockedApi("FileEnumerateModules"));
71 abckit::core::Class cls = mdl.GetClasses()[0];
72 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateClasses"));
73 }
74 ASSERT_TRUE(CheckMockedApi("CloseFile"));
75 ASSERT_TRUE(CheckMockedStackEmpty());
76 }
77
78 } // namespace libabckit::test
79