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 <gtest/gtest.h>
17
18 #include "frame_sched.h"
19 #include "sync_fence.h"
20
21 using namespace testing;
22 using namespace testing::ext;
23
24 namespace OHOS {
25 class FrameSchedTest : public testing::Test {
26 public:
27 static void SetUpTestCase();
28 static void TearDownTestCase();
29 };
30
SetUpTestCase()31 void FrameSchedTest::SetUpTestCase()
32 {
33 }
34
TearDownTestCase()35 void FrameSchedTest::TearDownTestCase()
36 {
37 }
38
39 /*
40 * Function: SetFrameParam
41 * Type: Function
42 * Rank: Important(2)
43 * EnvConditions: N/A
44 * CaseDescription: 1. call SetFrameParam
45 * 2. check ret
46 */
HWTEST_F(FrameSchedTest, SetFrameParam001, Function | MediumTest | Level2)47 HWTEST_F(FrameSchedTest, SetFrameParam001, Function | MediumTest | Level2)
48 {
49 Rosen::FrameSched frameSched_;
50 EXPECT_EQ(frameSched_.setFrameParamFunc_, nullptr);
51 frameSched_.SetFrameParam(0, 0, 0, 0);
52 }
53
54 /*
55 * Function: MonitorGpuStart
56 * Type: Function
57 * Rank: Important(2)
58 * EnvConditions: N/A
59 * CaseDescription: 1. call MonitorGpuStart
60 * 2. check ret
61 */
HWTEST_F(FrameSchedTest, MonitorGpuStart001, Function | MediumTest | Level2)62 HWTEST_F(FrameSchedTest, MonitorGpuStart001, Function | MediumTest | Level2)
63 {
64 Rosen::FrameSched frameSched_;
65 EXPECT_EQ(frameSched_.monitorGpuStartFunc_, nullptr);
66 frameSched_.MonitorGpuStart();
67 }
68
69 /*
70 * Function: MonitorGpuEnd
71 * Type: Function
72 * Rank: Important(2)
73 * EnvConditions: N/A
74 * CaseDescription: 1. call MonitorGpuEnd
75 * 2. check ret
76 */
HWTEST_F(FrameSchedTest, MonitorGpuEnd001, Function | MediumTest | Level2)77 HWTEST_F(FrameSchedTest, MonitorGpuEnd001, Function | MediumTest | Level2)
78 {
79 Rosen::FrameSched frameSched_;
80 EXPECT_EQ(frameSched_.monitorGpuEndFunc_, nullptr);
81 frameSched_.MonitorGpuEnd();
82 }
83
84 /*
85 * Function: SyncMerge
86 * Type: Function
87 * Rank: Important(2)
88 * EnvConditions: N/A
89 * CaseDescription: 1. call SyncMerge
90 * 2. check ret
91 */
HWTEST_F(FrameSchedTest, SyncMergeTest001, Function | MediumTest | Level2)92 HWTEST_F(FrameSchedTest, SyncMergeTest001, Function | MediumTest | Level2)
93 {
94 int32_t newFenceFd = -1;
95 ASSERT_EQ(SyncFence::SyncMerge("SyncMergeTest001", 1, -1, newFenceFd), -1);
96 ASSERT_EQ(newFenceFd, -1);
97
98 sptr<SyncFence> fence = new SyncFence(0);
99 ASSERT_EQ(fence->GetStatus(), FenceStatus::ERROR);
100
101 sptr<SyncFence> fence1 = new SyncFence(-1);
102 EXPECT_EQ(fence1->GetStatus(), ERROR);
103 }
104
105 /*
106 * Function: LoadLibrary
107 * Type: Function
108 * Rank: Important(2)
109 * EnvConditions: N/A
110 * CaseDescription: 1. call LoadLibrary
111 * 2. check ret
112 */
HWTEST_F(FrameSchedTest, LoadLibrary001, Function | MediumTest | Level2)113 HWTEST_F(FrameSchedTest, LoadLibrary001, Function | MediumTest | Level2)
114 {
115 auto frameSched = new Rosen::FrameSched();
116 frameSched->schedSoLoaded_ = false;
117 bool res = frameSched->LoadLibrary();
118 EXPECT_TRUE(res);
119
120 frameSched->schedSoLoaded_ = true;
121 res = frameSched->LoadLibrary();
122 EXPECT_TRUE(res);
123
124 delete frameSched;
125 }
126
127 /*
128 * Function: CloseLibrary
129 * Type: Function
130 * Rank: Important(2)
131 * EnvConditions: N/A
132 * CaseDescription: 1. call CloseLibrary
133 * 2. check ret
134 */
HWTEST_F(FrameSchedTest, CloseLibrary001, Function | MediumTest | Level2)135 HWTEST_F(FrameSchedTest, CloseLibrary001, Function | MediumTest | Level2)
136 {
137 auto frameSched = new Rosen::FrameSched();
138 frameSched->schedHandle_ = nullptr;
139 frameSched->schedSoLoaded_ = true;
140 frameSched->CloseLibrary();
141 EXPECT_FALSE(frameSched->schedSoLoaded_);
142 delete frameSched;
143 }
144
145 /*
146 * Function: LoadSymbol
147 * Type: Function
148 * Rank: Important(2)
149 * EnvConditions: N/A
150 * CaseDescription: 1. call LoadSymbol
151 * 2. check ret
152 */
HWTEST_F(FrameSchedTest, LoadSymbol001, Function | MediumTest | Level2)153 HWTEST_F(FrameSchedTest, LoadSymbol001, Function | MediumTest | Level2)
154 {
155 auto frameSched = new Rosen::FrameSched();
156 frameSched->schedSoLoaded_ = false;
157 auto res = frameSched->LoadSymbol("LoadSymbol001");
158 EXPECT_EQ(res, nullptr);
159 delete frameSched;
160 }
161
162 /*
163 * Function: Init
164 * Type: Function
165 * Rank: Important(2)
166 * EnvConditions: N/A
167 * CaseDescription: 1. call Init
168 * 2. check ret
169 */
HWTEST_F(FrameSchedTest, Init001, Function | MediumTest | Level2)170 HWTEST_F(FrameSchedTest, Init001, Function | MediumTest | Level2)
171 {
172 auto frameSched = new Rosen::FrameSched();
173 frameSched->initFunc_ = nullptr;
174 frameSched->Init();
175 delete frameSched;
176 }
177 }