1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2023 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#include <gtest/gtest.h> 17e0dac50fSopenharmony_ci#include "root_scene.h" 18e0dac50fSopenharmony_ci#include <event_handler.h> 19e0dac50fSopenharmony_ci#include <input_manager.h> 20e0dac50fSopenharmony_ci#include <ui_content.h> 21e0dac50fSopenharmony_ci#include <viewport_config.h> 22e0dac50fSopenharmony_ci 23e0dac50fSopenharmony_ci#include "app_mgr_client.h" 24e0dac50fSopenharmony_ci#include "singleton.h" 25e0dac50fSopenharmony_ci#include "singleton_container.h" 26e0dac50fSopenharmony_ci 27e0dac50fSopenharmony_ci#include "vsync_station.h" 28e0dac50fSopenharmony_ci#include "window_manager_hilog.h" 29e0dac50fSopenharmony_ci 30e0dac50fSopenharmony_ciusing namespace testing; 31e0dac50fSopenharmony_ciusing namespace testing::ext; 32e0dac50fSopenharmony_ci 33e0dac50fSopenharmony_cinamespace OHOS { 34e0dac50fSopenharmony_cinamespace Rosen { 35e0dac50fSopenharmony_ciconst uint32_t MOCK_LEM_SUB_WIDTH = 340; 36e0dac50fSopenharmony_ciconst uint32_t MOCK_LEM_SUB_HEIGHT = 340; 37e0dac50fSopenharmony_ci 38e0dac50fSopenharmony_ciclass RootSceneTest : public testing::Test { 39e0dac50fSopenharmony_cipublic: 40e0dac50fSopenharmony_ci static void SetUpTestCase(); 41e0dac50fSopenharmony_ci static void TearDownTestCase(); 42e0dac50fSopenharmony_ci void SetUp() override; 43e0dac50fSopenharmony_ci void TearDown() override; 44e0dac50fSopenharmony_ciprivate: 45e0dac50fSopenharmony_ci static constexpr uint32_t WAIT_SYNC_IN_NS = 200000; 46e0dac50fSopenharmony_ci}; 47e0dac50fSopenharmony_ci 48e0dac50fSopenharmony_civoid RootSceneTest::SetUpTestCase() 49e0dac50fSopenharmony_ci{ 50e0dac50fSopenharmony_ci} 51e0dac50fSopenharmony_ci 52e0dac50fSopenharmony_civoid RootSceneTest::TearDownTestCase() 53e0dac50fSopenharmony_ci{ 54e0dac50fSopenharmony_ci} 55e0dac50fSopenharmony_ci 56e0dac50fSopenharmony_civoid RootSceneTest::SetUp() 57e0dac50fSopenharmony_ci{ 58e0dac50fSopenharmony_ci} 59e0dac50fSopenharmony_ci 60e0dac50fSopenharmony_civoid RootSceneTest::TearDown() 61e0dac50fSopenharmony_ci{ 62e0dac50fSopenharmony_ci usleep(WAIT_SYNC_IN_NS); 63e0dac50fSopenharmony_ci} 64e0dac50fSopenharmony_ci 65e0dac50fSopenharmony_cinamespace { 66e0dac50fSopenharmony_ci/** 67e0dac50fSopenharmony_ci * @tc.name: LoadContent01 68e0dac50fSopenharmony_ci * @tc.desc: context is nullptr 69e0dac50fSopenharmony_ci * @tc.type: FUNC 70e0dac50fSopenharmony_ci */ 71e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, LoadContent01, Function | SmallTest | Level3) 72e0dac50fSopenharmony_ci{ 73e0dac50fSopenharmony_ci RootScene rootScene; 74e0dac50fSopenharmony_ci rootScene.LoadContent("a", nullptr, nullptr, nullptr); 75e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 76e0dac50fSopenharmony_ci} 77e0dac50fSopenharmony_ci 78e0dac50fSopenharmony_ci/** 79e0dac50fSopenharmony_ci * @tc.name: UpdateViewportConfig01 80e0dac50fSopenharmony_ci * @tc.desc: UpdateViewportConfig Test 81e0dac50fSopenharmony_ci * @tc.type: FUNC 82e0dac50fSopenharmony_ci */ 83e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, UpdateViewportConfig01, Function | SmallTest | Level3) 84e0dac50fSopenharmony_ci{ 85e0dac50fSopenharmony_ci RootScene rootScene; 86e0dac50fSopenharmony_ci Rect rect; 87e0dac50fSopenharmony_ci 88e0dac50fSopenharmony_ci rootScene.uiContent_ = nullptr; 89e0dac50fSopenharmony_ci rootScene.UpdateViewportConfig(rect, WindowSizeChangeReason::UNDEFINED); 90e0dac50fSopenharmony_ci 91e0dac50fSopenharmony_ci rect.width_ = MOCK_LEM_SUB_WIDTH; 92e0dac50fSopenharmony_ci rect.height_ = MOCK_LEM_SUB_HEIGHT; 93e0dac50fSopenharmony_ci rootScene.UpdateViewportConfig(rect, WindowSizeChangeReason::UNDEFINED); 94e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 95e0dac50fSopenharmony_ci} 96e0dac50fSopenharmony_ci 97e0dac50fSopenharmony_ci/** 98e0dac50fSopenharmony_ci * @tc.name: UpdateConfiguration 99e0dac50fSopenharmony_ci * @tc.desc: UpdateConfiguration Test 100e0dac50fSopenharmony_ci * @tc.type: FUNC 101e0dac50fSopenharmony_ci */ 102e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, UpdateConfiguration, Function | SmallTest | Level3) 103e0dac50fSopenharmony_ci{ 104e0dac50fSopenharmony_ci RootScene rootScene; 105e0dac50fSopenharmony_ci std::shared_ptr<AppExecFwk::Configuration> configuration = std::make_shared<AppExecFwk::Configuration>(); 106e0dac50fSopenharmony_ci 107e0dac50fSopenharmony_ci rootScene.uiContent_ = nullptr; 108e0dac50fSopenharmony_ci rootScene.UpdateConfiguration(configuration); 109e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 110e0dac50fSopenharmony_ci} 111e0dac50fSopenharmony_ci 112e0dac50fSopenharmony_ci/** 113e0dac50fSopenharmony_ci * @tc.name: UpdateConfigurationForAll 114e0dac50fSopenharmony_ci * @tc.desc: UpdateConfigurationForAll Test 115e0dac50fSopenharmony_ci * @tc.type: FUNC 116e0dac50fSopenharmony_ci */ 117e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, UpdateConfigurationForAll, Function | SmallTest | Level3) 118e0dac50fSopenharmony_ci{ 119e0dac50fSopenharmony_ci RootScene rootScene; 120e0dac50fSopenharmony_ci std::shared_ptr<AppExecFwk::Configuration> configuration = std::make_shared<AppExecFwk::Configuration>(); 121e0dac50fSopenharmony_ci 122e0dac50fSopenharmony_ci auto prevStaticRootScene = RootScene::staticRootScene_; 123e0dac50fSopenharmony_ci rootScene.UpdateConfigurationForAll(configuration); 124e0dac50fSopenharmony_ci 125e0dac50fSopenharmony_ci sptr<RootScene> staticRootScene; 126e0dac50fSopenharmony_ci RootScene::staticRootScene_ = staticRootScene; 127e0dac50fSopenharmony_ci rootScene.UpdateConfigurationForAll(configuration); 128e0dac50fSopenharmony_ci 129e0dac50fSopenharmony_ci RootScene::staticRootScene_ = prevStaticRootScene; 130e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 131e0dac50fSopenharmony_ci} 132e0dac50fSopenharmony_ci 133e0dac50fSopenharmony_ci/** 134e0dac50fSopenharmony_ci * @tc.name: RegisterInputEventListener01 135e0dac50fSopenharmony_ci * @tc.desc: RegisterInputEventListener Test 136e0dac50fSopenharmony_ci * @tc.type: FUNC 137e0dac50fSopenharmony_ci */ 138e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, RegisterInputEventListener01, Function | SmallTest | Level3) 139e0dac50fSopenharmony_ci{ 140e0dac50fSopenharmony_ci RootScene rootScene; 141e0dac50fSopenharmony_ci rootScene.RegisterInputEventListener(); 142e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 143e0dac50fSopenharmony_ci} 144e0dac50fSopenharmony_ci 145e0dac50fSopenharmony_ci/** 146e0dac50fSopenharmony_ci * @tc.name: RequestVsyncErr 147e0dac50fSopenharmony_ci * @tc.desc: RequestVsync Test Err 148e0dac50fSopenharmony_ci * @tc.type: FUNC 149e0dac50fSopenharmony_ci */ 150e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, RequestVsyncErr, Function | SmallTest | Level3) 151e0dac50fSopenharmony_ci{ 152e0dac50fSopenharmony_ci RootScene rootScene; 153e0dac50fSopenharmony_ci std::shared_ptr<VsyncCallback> vsyncCallback = std::make_shared<VsyncCallback>(); 154e0dac50fSopenharmony_ci rootScene.RequestVsync(vsyncCallback); 155e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 156e0dac50fSopenharmony_ci} 157e0dac50fSopenharmony_ci 158e0dac50fSopenharmony_ci/** 159e0dac50fSopenharmony_ci * @tc.name: GetVSyncPeriod 160e0dac50fSopenharmony_ci * @tc.desc: GetVSyncPeriod Test 161e0dac50fSopenharmony_ci * @tc.type: FUNC 162e0dac50fSopenharmony_ci */ 163e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, GetVSyncPeriod, Function | SmallTest | Level3) 164e0dac50fSopenharmony_ci{ 165e0dac50fSopenharmony_ci RootScene rootScene; 166e0dac50fSopenharmony_ci rootScene.GetVSyncPeriod(); 167e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 168e0dac50fSopenharmony_ci} 169e0dac50fSopenharmony_ci 170e0dac50fSopenharmony_ci/** 171e0dac50fSopenharmony_ci * @tc.name: FlushFrameRate 172e0dac50fSopenharmony_ci * @tc.desc: FlushFrameRate Test 173e0dac50fSopenharmony_ci * @tc.type: FUNC 174e0dac50fSopenharmony_ci */ 175e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, FlushFrameRate, Function | SmallTest | Level3) 176e0dac50fSopenharmony_ci{ 177e0dac50fSopenharmony_ci RootScene rootScene; 178e0dac50fSopenharmony_ci uint32_t rate = 120; 179e0dac50fSopenharmony_ci int32_t animatorExpectedFrameRate = -1; 180e0dac50fSopenharmony_ci rootScene.FlushFrameRate(rate, animatorExpectedFrameRate); 181e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 182e0dac50fSopenharmony_ci} 183e0dac50fSopenharmony_ci 184e0dac50fSopenharmony_ci/** 185e0dac50fSopenharmony_ci * @tc.name: SetFrameLayoutFinishCallback 186e0dac50fSopenharmony_ci * @tc.desc: SetFrameLayoutFinishCallback Test 187e0dac50fSopenharmony_ci * @tc.type: FUNC 188e0dac50fSopenharmony_ci */ 189e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, SetFrameLayoutFinishCallback, Function | SmallTest | Level3) 190e0dac50fSopenharmony_ci{ 191e0dac50fSopenharmony_ci RootScene rootScene; 192e0dac50fSopenharmony_ci 193e0dac50fSopenharmony_ci rootScene.SetFrameLayoutFinishCallback(nullptr); 194e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 195e0dac50fSopenharmony_ci} 196e0dac50fSopenharmony_ci 197e0dac50fSopenharmony_ci/** 198e0dac50fSopenharmony_ci * @tc.name: SetUiDvsyncSwitch 199e0dac50fSopenharmony_ci * @tc.desc: SetUiDvsyncSwitch Test 200e0dac50fSopenharmony_ci * @tc.type: FUNC 201e0dac50fSopenharmony_ci */ 202e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, SetUiDvsyncSwitchSucc, Function | SmallTest | Level3) 203e0dac50fSopenharmony_ci{ 204e0dac50fSopenharmony_ci RootScene rootScene; 205e0dac50fSopenharmony_ci rootScene.SetUiDvsyncSwitch(true); 206e0dac50fSopenharmony_ci rootScene.SetUiDvsyncSwitch(false); 207e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 208e0dac50fSopenharmony_ci} 209e0dac50fSopenharmony_ci 210e0dac50fSopenharmony_ci/** 211e0dac50fSopenharmony_ci * @tc.name: SetUiDvsyncSwitch 212e0dac50fSopenharmony_ci * @tc.desc: SetUiDvsyncSwitch Test 213e0dac50fSopenharmony_ci * @tc.type: FUNC 214e0dac50fSopenharmony_ci */ 215e0dac50fSopenharmony_ciHWTEST_F(RootSceneTest, SetUiDvsyncSwitchErr, Function | SmallTest | Level3) 216e0dac50fSopenharmony_ci{ 217e0dac50fSopenharmony_ci RootScene rootScene; 218e0dac50fSopenharmony_ci rootScene.SetUiDvsyncSwitch(true); 219e0dac50fSopenharmony_ci rootScene.SetUiDvsyncSwitch(false); 220e0dac50fSopenharmony_ci ASSERT_EQ(1, rootScene.GetWindowId()); 221e0dac50fSopenharmony_ci} 222e0dac50fSopenharmony_ci} 223e0dac50fSopenharmony_ci} // namespace Rosen 224e0dac50fSopenharmony_ci} // namespace OHOS