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 #include <gtest/gtest.h>
16 #include "native_display_soloist.h"
17
18 using namespace testing;
19 using namespace testing::ext;
20
21 namespace OHOS {
22 namespace Rosen {
23 namespace {
24 constexpr uint32_t FRAME_RATE_30_HZ = 30;
25 constexpr uint32_t FRAME_RATE_60_HZ = 60;
26 constexpr uint32_t FRAME_RATE_90_HZ = 90;
27 constexpr uint32_t FRAME_RATE_120_HZ = 120;
28 constexpr uint32_t SLEEP_TIME_US = 100000;
29 constexpr int32_t EXEC_SUCCESS = 0;
30 constexpr int32_t SOLOIST_ERROR = -1;
31 }
32 class NativeDisplaySoloistTest : public testing::Test {
33 public:
34 static void SetUpTestCase();
35 static void TearDownTestCase();
36 void SetUp();
37 void TearDown();
38
39 static inline OH_DisplaySoloist* nativeDisplaySoloist = nullptr;
40 };
41
SetUpTestCase()42 void NativeDisplaySoloistTest::SetUpTestCase()
43 {
44 }
45
TearDownTestCase()46 void NativeDisplaySoloistTest::TearDownTestCase()
47 {
48 usleep(SLEEP_TIME_US);
49 }
50
SetUp()51 void NativeDisplaySoloistTest::SetUp()
52 {
53 }
54
TearDown()55 void NativeDisplaySoloistTest::TearDown()
56 {
57 }
58
OnVSync(long long timestamp, long long targetTimestamp, void* data)59 static void OnVSync(long long timestamp, long long targetTimestamp, void* data)
60 {
61 }
62
63 namespace {
64 /*
65 * Function: OH_DisplaySoloist_Create
66 * Type: Function
67 * Rank: Important(2)
68 * EnvConditions: N/A
69 * CaseDescription: 1. call OH_DisplaySoloist_Create by normal input
70 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Create001, Function | MediumTest | Level2)71 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Create001, Function | MediumTest | Level2)
72 {
73 EXPECT_EQ(nullptr, nativeDisplaySoloist);
74 nativeDisplaySoloist = OH_DisplaySoloist_Create(false);
75 EXPECT_NE(nullptr, nativeDisplaySoloist);
76 }
77
78 /*
79 * Function: OH_DisplaySoloist_Start
80 * Type: Function
81 * Rank: Important(2)
82 * EnvConditions: N/A
83 * CaseDescription: 1. call OH_DisplaySoloist_Start by abnormal input
84 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Start001, Function | MediumTest | Level2)85 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Start001, Function | MediumTest | Level2)
86 {
87 OH_DisplaySoloist_FrameCallback callback = OnVSync;
88 int32_t result = OH_DisplaySoloist_Start(nullptr, callback, nullptr);
89 EXPECT_EQ(SOLOIST_ERROR, result);
90 }
91
92 /*
93 * Function: OH_DisplaySoloist_Start
94 * Type: Function
95 * Rank: Important(2)
96 * EnvConditions: N/A
97 * CaseDescription: 1. call OH_DisplaySoloist_Start by normal input
98 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Start002, Function | MediumTest | Level2)99 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Start002, Function | MediumTest | Level2)
100 {
101 OH_DisplaySoloist_FrameCallback callback = OnVSync;
102 int32_t result = OH_DisplaySoloist_Start(nativeDisplaySoloist, callback, nullptr);
103 EXPECT_EQ(EXEC_SUCCESS, result);
104 }
105
106 /*
107 * Function: OH_DisplaySoloist_SetExpectedFrameRateRange
108 * Type: Function
109 * Rank: Important(2)
110 * EnvConditions: N/A
111 * CaseDescription: 1. call OH_DisplaySoloist_SetExpectedFrameRateRange by abnormal input
112 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_SetExpectedFrameRateRange001, Function | MediumTest | Level2)113 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_SetExpectedFrameRateRange001, Function | MediumTest | Level2)
114 {
115 DisplaySoloist_ExpectedRateRange validRange = { FRAME_RATE_30_HZ, FRAME_RATE_120_HZ, FRAME_RATE_60_HZ };
116 int32_t result1 = OH_DisplaySoloist_SetExpectedFrameRateRange(nullptr, &validRange);
117 EXPECT_EQ(SOLOIST_ERROR, result1);
118 int32_t result2 = OH_DisplaySoloist_SetExpectedFrameRateRange(nativeDisplaySoloist, nullptr);
119 EXPECT_EQ(SOLOIST_ERROR, result2);
120 }
121
122 /*
123 * Function: OH_DisplaySoloist_SetExpectedFrameRateRange
124 * Type: Function
125 * Rank: Important(2)
126 * EnvConditions: N/A
127 * CaseDescription: 1. call OH_DisplaySoloist_SetExpectedFrameRateRange by abnormal input
128 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_SetExpectedFrameRateRange002, Function | MediumTest | Level2)129 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_SetExpectedFrameRateRange002, Function | MediumTest | Level2)
130 {
131 DisplaySoloist_ExpectedRateRange invalidRange = { FRAME_RATE_30_HZ, FRAME_RATE_90_HZ, FRAME_RATE_120_HZ };
132 int32_t result = OH_DisplaySoloist_SetExpectedFrameRateRange(nullptr, &invalidRange);
133 EXPECT_EQ(SOLOIST_ERROR, result);
134 }
135
136 /*
137 * Function: OH_DisplaySoloist_SetExpectedFrameRateRange
138 * Type: Function
139 * Rank: Important(2)
140 * EnvConditions: N/A
141 * CaseDescription: 1. call OH_DisplaySoloist_SetExpectedFrameRateRange by normal input
142 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_SetExpectedFrameRateRange003, Function | MediumTest | Level2)143 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_SetExpectedFrameRateRange003, Function | MediumTest | Level2)
144 {
145 DisplaySoloist_ExpectedRateRange validRange = { FRAME_RATE_30_HZ, FRAME_RATE_120_HZ, FRAME_RATE_60_HZ };
146 int32_t result = OH_DisplaySoloist_SetExpectedFrameRateRange(nativeDisplaySoloist, &validRange);
147 EXPECT_EQ(EXEC_SUCCESS, result);
148 }
149
150 /*
151 * Function: OH_DisplaySoloist_Stop
152 * Type: Function
153 * Rank: Important(2)
154 * EnvConditions: N/A
155 * CaseDescription: 1. call OH_DisplaySoloist_Stop by abnormal input
156 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Stop001, Function | MediumTest | Level2)157 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Stop001, Function | MediumTest | Level2)
158 {
159 int32_t result = OH_DisplaySoloist_Stop(nullptr);
160 EXPECT_EQ(SOLOIST_ERROR, result);
161 }
162
163 /*
164 * Function: OH_DisplaySoloist_Stop
165 * Type: Function
166 * Rank: Important(2)
167 * EnvConditions: N/A
168 * CaseDescription: 1. call OH_DisplaySoloist_Stop by normal input
169 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Stop002, Function | MediumTest | Level2)170 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Stop002, Function | MediumTest | Level2)
171 {
172 int32_t result = OH_DisplaySoloist_Stop(nativeDisplaySoloist);
173 EXPECT_EQ(EXEC_SUCCESS, result);
174 }
175
176 /*
177 * Function: OH_DisplaySoloist_Destroy
178 * Type: Function
179 * Rank: Important(2)
180 * EnvConditions: N/A
181 * CaseDescription: 1. call OH_DisplaySoloist_Destroy by abnormal input
182 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Destroy001, Function | MediumTest | Level2)183 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Destroy001, Function | MediumTest | Level2)
184 {
185 int32_t result = OH_DisplaySoloist_Destroy(nullptr);
186 EXPECT_EQ(SOLOIST_ERROR, result);
187 }
188
189 /*
190 * Function: OH_DisplaySoloist_Destroy
191 * Type: Function
192 * Rank: Important(2)
193 * EnvConditions: N/A
194 * CaseDescription: 1. call OH_DisplaySoloist_Destroy by normal input
195 */
HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Destroy002, Function | MediumTest | Level2)196 HWTEST_F(NativeDisplaySoloistTest, OH_DisplaySoloist_Destroy002, Function | MediumTest | Level2)
197 {
198 int32_t result = OH_DisplaySoloist_Destroy(nativeDisplaySoloist);
199 EXPECT_EQ(EXEC_SUCCESS, result);
200 }
201
202 } // namespace
203 } // namespace Rosen
204 } // namespace OHOS
205