1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci// gtest 17e0dac50fSopenharmony_ci#include <gtest/gtest.h> 18e0dac50fSopenharmony_ci#include "window_test_utils.h" 19e0dac50fSopenharmony_ci#include "wm_common.h" 20e0dac50fSopenharmony_ciusing namespace testing; 21e0dac50fSopenharmony_ciusing namespace testing::ext; 22e0dac50fSopenharmony_ci 23e0dac50fSopenharmony_cinamespace OHOS { 24e0dac50fSopenharmony_cinamespace Rosen { 25e0dac50fSopenharmony_ciusing Utils = WindowTestUtils; 26e0dac50fSopenharmony_ciconstexpr uint32_t MAX_WAIT_COUNT = 100; 27e0dac50fSopenharmony_ciconstexpr uint32_t WAIT_DUR = 10 * 1000; 28e0dac50fSopenharmony_ci 29e0dac50fSopenharmony_ciclass WindowGamutTest : public testing::Test { 30e0dac50fSopenharmony_cipublic: 31e0dac50fSopenharmony_ci static void SetUpTestCase(); 32e0dac50fSopenharmony_ci static void TearDownTestCase(); 33e0dac50fSopenharmony_ci virtual void SetUp() override; 34e0dac50fSopenharmony_ci virtual void TearDown() override; 35e0dac50fSopenharmony_ci Utils::TestWindowInfo fullScreenAppInfo_; 36e0dac50fSopenharmony_ci}; 37e0dac50fSopenharmony_ci 38e0dac50fSopenharmony_civoid WindowGamutTest::SetUpTestCase() 39e0dac50fSopenharmony_ci{ 40e0dac50fSopenharmony_ci} 41e0dac50fSopenharmony_ci 42e0dac50fSopenharmony_civoid WindowGamutTest::TearDownTestCase() 43e0dac50fSopenharmony_ci{ 44e0dac50fSopenharmony_ci} 45e0dac50fSopenharmony_ci 46e0dac50fSopenharmony_civoid WindowGamutTest::SetUp() 47e0dac50fSopenharmony_ci{ 48e0dac50fSopenharmony_ci fullScreenAppInfo_ = { 49e0dac50fSopenharmony_ci .name = "FullWindow", 50e0dac50fSopenharmony_ci .rect = Utils::customAppRect_, 51e0dac50fSopenharmony_ci .type = WindowType::WINDOW_TYPE_APP_MAIN_WINDOW, 52e0dac50fSopenharmony_ci .mode = WindowMode::WINDOW_MODE_FULLSCREEN, 53e0dac50fSopenharmony_ci .needAvoid = false, 54e0dac50fSopenharmony_ci .parentLimit = false, 55e0dac50fSopenharmony_ci .parentId = INVALID_WINDOW_ID, 56e0dac50fSopenharmony_ci }; 57e0dac50fSopenharmony_ci} 58e0dac50fSopenharmony_ci 59e0dac50fSopenharmony_civoid WindowGamutTest::TearDown() 60e0dac50fSopenharmony_ci{ 61e0dac50fSopenharmony_ci} 62e0dac50fSopenharmony_ci 63e0dac50fSopenharmony_cinamespace { 64e0dac50fSopenharmony_ci/** 65e0dac50fSopenharmony_ci * @tc.name: IsSupportWideGamut01 66e0dac50fSopenharmony_ci * @tc.desc: IsSupportWideGamut 67e0dac50fSopenharmony_ci * @tc.type: FUNC 68e0dac50fSopenharmony_ci */ 69e0dac50fSopenharmony_ciHWTEST_F(WindowGamutTest, IsSupportWideGamut01, Function | MediumTest | Level3) 70e0dac50fSopenharmony_ci{ 71e0dac50fSopenharmony_ci fullScreenAppInfo_.name = "window_isSupportWideGamut01"; 72e0dac50fSopenharmony_ci sptr<Window> window = Utils::CreateTestWindow(fullScreenAppInfo_); 73e0dac50fSopenharmony_ci if (window == nullptr) { 74e0dac50fSopenharmony_ci return; 75e0dac50fSopenharmony_ci } 76e0dac50fSopenharmony_ci ASSERT_NE(window, nullptr); 77e0dac50fSopenharmony_ci 78e0dac50fSopenharmony_ci ASSERT_EQ(true, window->IsSupportWideGamut()); 79e0dac50fSopenharmony_ci 80e0dac50fSopenharmony_ci window->Destroy(); 81e0dac50fSopenharmony_ci} 82e0dac50fSopenharmony_ci 83e0dac50fSopenharmony_ci/** 84e0dac50fSopenharmony_ci * @tc.name: GetColorSpace01 85e0dac50fSopenharmony_ci * @tc.desc: Get ColorSpace 86e0dac50fSopenharmony_ci * @tc.type: FUNC 87e0dac50fSopenharmony_ci */ 88e0dac50fSopenharmony_ciHWTEST_F(WindowGamutTest, GetColorSpace01, Function | MediumTest | Level3) 89e0dac50fSopenharmony_ci{ 90e0dac50fSopenharmony_ci fullScreenAppInfo_.name = "window_getColorSpace01"; 91e0dac50fSopenharmony_ci sptr<Window> window = Utils::CreateTestWindow(fullScreenAppInfo_); 92e0dac50fSopenharmony_ci if (window == nullptr) { 93e0dac50fSopenharmony_ci return; 94e0dac50fSopenharmony_ci } 95e0dac50fSopenharmony_ci ASSERT_NE(window, nullptr); 96e0dac50fSopenharmony_ci 97e0dac50fSopenharmony_ci ASSERT_EQ(ColorSpace::COLOR_SPACE_DEFAULT, window->GetColorSpace()); 98e0dac50fSopenharmony_ci 99e0dac50fSopenharmony_ci window->Destroy(); 100e0dac50fSopenharmony_ci} 101e0dac50fSopenharmony_ci 102e0dac50fSopenharmony_ci/** 103e0dac50fSopenharmony_ci * @tc.name: SetColorSpace01 104e0dac50fSopenharmony_ci * @tc.desc: Set ColorSpace, valid param 105e0dac50fSopenharmony_ci * @tc.type: FUNC 106e0dac50fSopenharmony_ci */ 107e0dac50fSopenharmony_ciHWTEST_F(WindowGamutTest, SetColorSpace01, Function | MediumTest | Level3) 108e0dac50fSopenharmony_ci{ 109e0dac50fSopenharmony_ci uint32_t i, j; 110e0dac50fSopenharmony_ci const ColorSpace colorSpacesToTest[] = { 111e0dac50fSopenharmony_ci ColorSpace::COLOR_SPACE_DEFAULT, 112e0dac50fSopenharmony_ci ColorSpace::COLOR_SPACE_WIDE_GAMUT 113e0dac50fSopenharmony_ci }; 114e0dac50fSopenharmony_ci ColorSpace colorSpace; 115e0dac50fSopenharmony_ci fullScreenAppInfo_.name = "window_setColorSpace01"; 116e0dac50fSopenharmony_ci sptr<Window> window = Utils::CreateTestWindow(fullScreenAppInfo_); 117e0dac50fSopenharmony_ci if (window == nullptr) { 118e0dac50fSopenharmony_ci return; 119e0dac50fSopenharmony_ci } 120e0dac50fSopenharmony_ci ASSERT_NE(window, nullptr); 121e0dac50fSopenharmony_ci 122e0dac50fSopenharmony_ci ColorSpace colorSpaceBackup = window->GetColorSpace(); // backup origin 123e0dac50fSopenharmony_ci 124e0dac50fSopenharmony_ci for (j = 0; j < sizeof(colorSpacesToTest) / sizeof(ColorSpace); j++) { 125e0dac50fSopenharmony_ci window->SetColorSpace(colorSpacesToTest[j]); // async func 126e0dac50fSopenharmony_ci for (i = 0; i < MAX_WAIT_COUNT; i++) { // wait some time for async set ok 127e0dac50fSopenharmony_ci colorSpace = window->GetColorSpace(); 128e0dac50fSopenharmony_ci if (colorSpace != colorSpacesToTest[j]) { 129e0dac50fSopenharmony_ci usleep(WAIT_DUR); 130e0dac50fSopenharmony_ci } else { 131e0dac50fSopenharmony_ci break; 132e0dac50fSopenharmony_ci } 133e0dac50fSopenharmony_ci } 134e0dac50fSopenharmony_ci ASSERT_EQ(colorSpacesToTest[j], window->GetColorSpace()); 135e0dac50fSopenharmony_ci } 136e0dac50fSopenharmony_ci 137e0dac50fSopenharmony_ci window->SetColorSpace(colorSpaceBackup); // restore 138e0dac50fSopenharmony_ci 139e0dac50fSopenharmony_ci window->Destroy(); 140e0dac50fSopenharmony_ci} 141e0dac50fSopenharmony_ci 142e0dac50fSopenharmony_ci/** 143e0dac50fSopenharmony_ci * @tc.name: SetColorSpace02 144e0dac50fSopenharmony_ci * @tc.desc: Set ColorSpace, invalid param 145e0dac50fSopenharmony_ci * @tc.type: FUNC 146e0dac50fSopenharmony_ci */ 147e0dac50fSopenharmony_ciHWTEST_F(WindowGamutTest, SetColorSpace02, Function | MediumTest | Level3) 148e0dac50fSopenharmony_ci{ 149e0dac50fSopenharmony_ci fullScreenAppInfo_.name = "window_setColorSpace02"; 150e0dac50fSopenharmony_ci sptr<Window> window = Utils::CreateTestWindow(fullScreenAppInfo_); 151e0dac50fSopenharmony_ci if (window == nullptr) { 152e0dac50fSopenharmony_ci return; 153e0dac50fSopenharmony_ci } 154e0dac50fSopenharmony_ci ASSERT_NE(window, nullptr); 155e0dac50fSopenharmony_ci ColorSpace colorSpaceBackup = window->GetColorSpace(); 156e0dac50fSopenharmony_ci 157e0dac50fSopenharmony_ci ColorSpace invalidColorSpace = 158e0dac50fSopenharmony_ci static_cast<ColorSpace>(static_cast<uint32_t>(ColorSpace::COLOR_SPACE_WIDE_GAMUT) + 1); 159e0dac50fSopenharmony_ci window->SetColorSpace(invalidColorSpace); // invalid param 160e0dac50fSopenharmony_ci 161e0dac50fSopenharmony_ci ASSERT_EQ(colorSpaceBackup, window->GetColorSpace()); 162e0dac50fSopenharmony_ci 163e0dac50fSopenharmony_ci window->Destroy(); 164e0dac50fSopenharmony_ci} 165e0dac50fSopenharmony_ci} // namespace 166e0dac50fSopenharmony_ci} // namespace Rosen 167e0dac50fSopenharmony_ci} // namespace OHOS 168