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 18using namespace testing; 19using namespace testing::ext; 20 21namespace OHOS { 22namespace Rosen { 23namespace { 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} 32class NativeDisplaySoloistTest : public testing::Test { 33public: 34 static void SetUpTestCase(); 35 static void TearDownTestCase(); 36 void SetUp(); 37 void TearDown(); 38 39 static inline OH_DisplaySoloist* nativeDisplaySoloist = nullptr; 40}; 41 42void NativeDisplaySoloistTest::SetUpTestCase() 43{ 44} 45 46void NativeDisplaySoloistTest::TearDownTestCase() 47{ 48 usleep(SLEEP_TIME_US); 49} 50 51void NativeDisplaySoloistTest::SetUp() 52{ 53} 54 55void NativeDisplaySoloistTest::TearDown() 56{ 57} 58 59static void OnVSync(long long timestamp, long long targetTimestamp, void* data) 60{ 61} 62 63namespace { 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 */ 71HWTEST_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 */ 85HWTEST_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 */ 99HWTEST_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 */ 113HWTEST_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 */ 129HWTEST_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 */ 143HWTEST_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 */ 157HWTEST_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 */ 170HWTEST_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 */ 183HWTEST_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 */ 196HWTEST_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