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 }