1 /*
2  * Copyright (c) 2022-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, Hardware
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 
19 #include "rs_frame_report.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace Rosen {
26 class RsFrameReportTest : public testing::Test {
27 public:
28     static void SetUpTestCase();
29     static void TearDownTestCase();
30     void SetUp() override;
31     void TearDown() override;
32 };
33 
SetUpTestCase()34 void RsFrameReportTest::SetUpTestCase() {}
TearDownTestCase()35 void RsFrameReportTest::TearDownTestCase() {}
SetUp()36 void RsFrameReportTest::SetUp() {}
TearDown()37 void RsFrameReportTest::TearDown() {}
38 
39 /**
40  * @tc.name: GetEnable001
41  * @tc.desc: test
42  * @tc.type:FUNC
43  * @tc.require:
44  */
45 HWTEST_F(RsFrameReportTest, GetEnable001, TestSize.Level1)
46 {
47     RsFrameReport& fr = RsFrameReport::GetInstance();
48     fr.LoadLibrary();
49     fr.CloseLibrary();
50     fr.GetEnable();
51     EXPECT_EQ(fr.GetEnable(), 0);
52 }
53 
54 /**
55  * @tc.name: ProcessCommandsStart001
56  * @tc.desc: test
57  * @tc.type:FUNC
58  * @tc.require:
59  */
60 HWTEST_F(RsFrameReportTest, ProcessCommandsStart001, TestSize.Level1)
61 {
62     RsFrameReport& fr = RsFrameReport::GetInstance();
63     fr.LoadLibrary();
64     EXPECT_TRUE(fr.frameSchedSoLoaded_);
65     EXPECT_EQ(fr.processCommandsStartFun_, nullptr);
66     fr.ProcessCommandsStart();
67     EXPECT_NE(fr.processCommandsStartFun_, nullptr);
68     fr.ProcessCommandsStart();
69 }
70 
71 /**
72  * @tc.name: AnimateStart001
73  * @tc.desc: test
74  * @tc.type:FUNC
75  * @tc.require:
76  */
77 HWTEST_F(RsFrameReportTest, AnimateStart001, TestSize.Level1)
78 {
79     RsFrameReport& fr = RsFrameReport::GetInstance();
80     EXPECT_EQ(fr.animateStartFunc_, nullptr);
81     fr.AnimateStart();
82     EXPECT_NE(fr.animateStartFunc_, nullptr);
83     fr.AnimateStart();
84 }
85 
86 /**
87  * @tc.name: RenderStart001
88  * @tc.desc: test
89  * @tc.type:FUNC
90  * @tc.require:
91  */
92 HWTEST_F(RsFrameReportTest, RenderStart001, TestSize.Level1)
93 {
94     RsFrameReport& fr = RsFrameReport::GetInstance();
95     EXPECT_EQ(fr.renderStartFunc_, nullptr);
96     uint64_t timestamp = static_cast<uint64_t>(
97         std::chrono::duration_cast<std::chrono::milliseconds>(
98         std::chrono::steady_clock::now().time_since_epoch()).count());
99     fr.RenderStart(timestamp);
100     EXPECT_NE(fr.renderStartFunc_, nullptr);
101     fr.RenderStart(timestamp);
102 }
103 
104 /**
105  * @tc.name: RSRenderStart001
106  * @tc.desc: test
107  * @tc.type:FUNC
108  * @tc.require:
109  */
110 HWTEST_F(RsFrameReportTest, RSRenderStart001, TestSize.Level1)
111 {
112     RsFrameReport& fr = RsFrameReport::GetInstance();
113     EXPECT_EQ(fr.parallelRenderStartFunc_, nullptr);
114     fr.RSRenderStart();
115 }
116 
117 /**
118  * @tc.name: RenderEnd001
119  * @tc.desc: test
120  * @tc.type:FUNC
121  * @tc.require:
122  */
123 HWTEST_F(RsFrameReportTest, RenderEnd001, TestSize.Level1)
124 {
125     RsFrameReport& fr = RsFrameReport::GetInstance();
126     EXPECT_EQ(fr.renderEndFunc_, nullptr);
127     fr.RenderEnd();
128     EXPECT_NE(fr.renderEndFunc_, nullptr);
129     fr.RenderEnd();
130 }
131 
132 /**
133  * @tc.name: RSRenderEnd001
134  * @tc.desc: test
135  * @tc.type:FUNC
136  * @tc.require:
137  */
138 HWTEST_F(RsFrameReportTest, RSRenderEnd001, TestSize.Level1)
139 {
140     RsFrameReport& fr = RsFrameReport::GetInstance();
141     EXPECT_EQ(fr.parallelRenderEndFunc_, nullptr);
142     fr.RSRenderEnd();
143 }
144 
145 /**
146  * @tc.name: SendCommandsStart001
147  * @tc.desc: test
148  * @tc.type:FUNC
149  * @tc.require:
150  */
151 HWTEST_F(RsFrameReportTest, SendCommandsStart001, TestSize.Level1)
152 {
153     RsFrameReport& fr = RsFrameReport::GetInstance();
154     EXPECT_EQ(fr.sendCommandsStartFunc_, nullptr);
155     fr.SendCommandsStart();
156     EXPECT_NE(fr.sendCommandsStartFunc_, nullptr);
157     fr.SendCommandsStart();
158 }
159 
160 /**
161  * @tc.name: SetFrameParam001
162  * @tc.desc: test
163  * @tc.type:FUNC
164  * @tc.require:
165  */
166 HWTEST_F(RsFrameReportTest, SetFrameParam001, TestSize.Level1)
167 {
168     RsFrameReport& fr = RsFrameReport::GetInstance();
169     EXPECT_EQ(fr.setFrameParamFunc_, nullptr);
170     fr.SetFrameParam(0, 0, 0, 0);
171     EXPECT_NE(fr.setFrameParamFunc_, nullptr);
172     fr.SetFrameParam(1, 1, 1, 1);
173 }
174 
175 /**
176  * @tc.name: LoadLibrary001
177  * @tc.desc: test
178  * @tc.type:FUNC
179  * @tc.require:
180  */
181 HWTEST_F(RsFrameReportTest, LoadLibrary001, TestSize.Level1)
182 {
183     RsFrameReport& fr = RsFrameReport::GetInstance();
184     fr.CloseLibrary();
185     EXPECT_FALSE(fr.frameSchedSoLoaded_);
186     fr.LoadLibrary();
187     EXPECT_TRUE(fr.frameSchedSoLoaded_);
188     fr.CloseLibrary();
189 }
190 
191 /**
192  * @tc.name: LoadSymbol001
193  * @tc.desc: test
194  * @tc.type:FUNC
195  * @tc.require:
196  */
197 HWTEST_F(RsFrameReportTest, LoadSymbol001, TestSize.Level1)
198 {
199     RsFrameReport& fr = RsFrameReport::GetInstance();
200     fr.CloseLibrary();
201     EXPECT_FALSE(fr.frameSchedSoLoaded_);
202     fr.LoadSymbol("function");
203     fr.LoadLibrary();
204     EXPECT_TRUE(fr.frameSchedSoLoaded_);
205     fr.LoadSymbol("function");
206     fr.CloseLibrary();
207 }
208 } // namespace Rosen
209 } // namespace OHOS
210