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 "runner_runtime/cj_test_runner_object.h"
17
18 #include "gtest/gtest.h"
19
20 using namespace testing;
21 using namespace testing::ext;
22
23 namespace OHOS {
24 namespace RunnerRuntime {
25 class CjTestRunnerObjectTest : public ::testing::Test {
26 public:
CjTestRunnerObjectTest()27 CjTestRunnerObjectTest()
28 {}
~CjTestRunnerObjectTest()29 ~CjTestRunnerObjectTest()
30 {}
31 static void SetUpTestCase(void);
32 static void TearDownTestCase(void);
33 void SetUp() override;
34 void TearDown() override;
35 };
36
SetUpTestCase()37 void CjTestRunnerObjectTest::SetUpTestCase()
38 {}
39
TearDownTestCase()40 void CjTestRunnerObjectTest::TearDownTestCase()
41 {}
42
create(const char * name)43 int64_t create(const char* name)
44 {
45 return 1;
46 }
47
release(int64_t id)48 void release(int64_t id) {}
49
onRun(int64_t id)50 void onRun(int64_t id) {}
51
onPrepare(int64_t id)52 void onPrepare(int64_t id) {}
53
54 // 模拟 Cangjie 侧的函数注册函数
RegisterCangjieFuncs(CJTestRunnerFuncs * funcs)55 void RegisterCangjieFuncs(CJTestRunnerFuncs* funcs)
56 {
57 funcs->cjTestRunnerCreate = create;
58 funcs->cjTestRunnerRelease = release;
59 funcs->cjTestRunnerOnRun = onRun;
60 funcs->cjTestRunnerOnPrepare = onPrepare;
61 }
62
SetUp()63 void CjTestRunnerObjectTest::SetUp()
64 {
65 }
66
TearDown()67 void CjTestRunnerObjectTest::TearDown()
68 {
69 }
70
71 /**
72 * @tc.name: CjTestRunnerObjectTestLoadModule_Success_001
73 * @tc.desc: CjTestRunnerObjectTest test for LoadModule.
74 * @tc.type: FUNC
75 */
76 HWTEST_F(CjTestRunnerObjectTest, CjTestRunnerObjectTestLoadModule_Success_001, TestSize.Level2)
77 {
78 RegisterCJTestRunnerFuncs(nullptr);
79 RegisterCJTestRunnerFuncs(RegisterCangjieFuncs);
80 std::shared_ptr<CJTestRunnerObject> proxy = CJTestRunnerObject::LoadModule("test_ability");
81 EXPECT_NE(nullptr, proxy);
82 proxy->OnPrepare();
83 proxy->OnRun();
84
85 proxy.reset();
86 }
87
88 /**
89 * @tc.name: CjTestRunnerObjectTestLoadModule_Failed_NoRegistration_001
90 * @tc.desc: CjTestRunnerObjectTest test for LoadModule.
91 * @tc.type: FUNC
92 */
93 HWTEST_F(CjTestRunnerObjectTest, CjTestRunnerObjectTestLoadModule_Failed_NoRegistration_001, TestSize.Level2)
94 {
95 auto proxy = CJTestRunnerObject::LoadModule("test_ability");
96 EXPECT_NE(nullptr, proxy);
97 }
98
99 /**
100 * @tc.name: CjAbilityStageTestOnMemoryLevel_001
101 * @tc.desc: CjTestRunnerObjectTest test for OnMemoryLevel.
102 * @tc.type: FUNC
103 */
104 HWTEST_F(CjTestRunnerObjectTest, CjTestRunnerObjectTestLoadModule_Failed_CangjieCreateFailed_001, TestSize.Level2)
105 {
106 RegisterCJTestRunnerFuncs(RegisterCangjieFuncs);
107 auto proxy = CJTestRunnerObject::LoadModule("test_ability");
108 EXPECT_NE(nullptr, proxy);
109 }
110
111 /**
112 * @tc.name: CjTestRunnerObjectTestOnRun_Success_001
113 * @tc.desc: CjTestRunnerObjectTest test for OnRun.
114 * @tc.type: FUNC
115 */
116 HWTEST_F(CjTestRunnerObjectTest, CjTestRunnerObjectTestOnRun_Success_001, TestSize.Level2)
117 {
118 RegisterCJTestRunnerFuncs(RegisterCangjieFuncs);
119 auto proxy = CJTestRunnerObject::LoadModule("test_ability");
120 proxy->OnRun();
121 proxy.reset();
122 EXPECT_EQ(nullptr, proxy);
123 }
124
125 /**
126 * @tc.name: CjTestRunnerObjectTestOnRun_Failed_NoRegistration_001
127 * @tc.desc: CjTestRunnerObjectTest test for OnRun.
128 * @tc.type: FUNC
129 */
130 HWTEST_F(CjTestRunnerObjectTest, CjTestRunnerObjectTestOnRun_Failed_NoRegistration_001, TestSize.Level2)
131 {
132 auto proxy = CJTestRunnerObject::LoadModule("test_ability");
133 proxy->OnRun();
134 EXPECT_NE(nullptr, proxy);
135 }
136
137 /**
138 * @tc.name: CjTestRunnerObjectTestOnPrepare_Success_001
139 * @tc.desc: CjTestRunnerObjectTest test for OnPrepare.
140 * @tc.type: FUNC
141 */
142 HWTEST_F(CjTestRunnerObjectTest, CjTestRunnerObjectTestOnPrepare_Success_001, TestSize.Level2)
143 {
144 RegisterCJTestRunnerFuncs(RegisterCangjieFuncs);
145 auto proxy = CJTestRunnerObject::LoadModule("test_ability");
146 proxy->OnPrepare();
147 EXPECT_NE(nullptr, proxy);
148 }
149
150 /**
151 * @tc.name: CjTestRunnerObjectTestOnPrepare_Failed_NoRegistration_001
152 * @tc.desc: CjTestRunnerObjectTest test for OnPrepare.
153 * @tc.type: FUNC
154 */
155 HWTEST_F(CjTestRunnerObjectTest, CjTestRunnerObjectTestOnPrepare_Failed_NoRegistration_001, TestSize.Level2)
156 {
157 auto proxy = CJTestRunnerObject::LoadModule("test_ability");
158 proxy->OnPrepare();
159 EXPECT_NE(nullptr, proxy);
160 }
161
162 /**
163 * @tc.name: CjTestRunnerObjectTestDestructor_Success_001
164 * @tc.desc: CjTestRunnerObjectTest test for reset.
165 * @tc.type: FUNC
166 */
167 HWTEST_F(CjTestRunnerObjectTest, CjTestRunnerObjectTestDestructor_Success_001, TestSize.Level2)
168 {
169 RegisterCJTestRunnerFuncs(RegisterCangjieFuncs);
170 auto proxy = CJTestRunnerObject::LoadModule("test_ability");
171 proxy.reset();
172 EXPECT_EQ(nullptr, proxy);
173 }
174 } // namespace RunnerRuntime
175 } // namespace OHOS
176