1 /*
2 * Copyright (c) 2021-2022 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
16 #include "screen_test.h"
17 #include "mock_display_manager_adapter.h"
18 #include "singleton_mocker.h"
19
20 using namespace testing;
21 using namespace testing::ext;
22
23 namespace OHOS {
24 namespace Rosen {
25 using Mocker = SingletonMocker<ScreenManagerAdapter, MockScreenManagerAdapter>;
26
27 sptr<Display> ScreenTest::defaultDisplay_ = nullptr;
28 ScreenId ScreenTest::defaultScreenId_ = SCREEN_ID_INVALID;
29
SetUpTestCase()30 void ScreenTest::SetUpTestCase()
31 {
32 defaultDisplay_ = DisplayManager::GetInstance().GetDefaultDisplay();
33 defaultScreenId_ = static_cast<ScreenId>(defaultDisplay_->GetId());
34 }
35
TearDownTestCase()36 void ScreenTest::TearDownTestCase()
37 {
38 }
39
SetUp()40 void ScreenTest::SetUp()
41 {
42 }
43
TearDown()44 void ScreenTest::TearDown()
45 {
46 }
47
48 namespace {
49 /**
50 * @tc.name: SetScreenActiveMode01
51 * @tc.desc: SetScreenActiveMode with valid modeId and return success
52 * @tc.type: FUNC
53 */
54 HWTEST_F(ScreenTest, SetScreenActiveMode01, Function | SmallTest | Level1)
55 {
56 auto screen = ScreenManager::GetInstance().GetScreenById(defaultScreenId_);
57 auto supportedModes = screen->GetSupportedModes();
58 ASSERT_GT(supportedModes.size(), 0);
59 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
60 EXPECT_CALL(m->Mock(), SetScreenActiveMode(_, _)).Times(1).WillOnce(Return(true));
61 bool res = screen->SetScreenActiveMode(supportedModes.size() - 1);
62 ASSERT_EQ(true, res);
63 }
64
65 /**
66 * @tc.name: SetScreenActiveMode02
67 * @tc.desc: SetScreenActiveMode with valid modeId and return failed
68 * @tc.type: FUNC
69 */
70 HWTEST_F(ScreenTest, SetScreenActiveMode02, Function | SmallTest | Level1)
71 {
72 auto screen = ScreenManager::GetInstance().GetScreenById(defaultScreenId_);
73 auto supportedModes = screen->GetSupportedModes();
74 ASSERT_GT(supportedModes.size(), 0);
75 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
76 EXPECT_CALL(m->Mock(), SetScreenActiveMode(_, _)).Times(1).WillOnce(Return(false));
77 bool res = screen->SetScreenActiveMode(supportedModes.size() - 1);
78 ASSERT_EQ(false, res);
79 }
80
81 /**
82 * @tc.name: GetScreenSupportedColorGamuts01
83 * @tc.desc: GetScreenSupportedColorGamuts
84 * @tc.type: FUNC
85 */
86 HWTEST_F(ScreenTest, GetScreenSupportedColorGamuts01, Function | SmallTest | Level2)
87 {
88 auto screen = ScreenManager::GetInstance().GetScreenById(defaultScreenId_);
89 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
90 EXPECT_CALL(m->Mock(), GetScreenSupportedColorGamuts(_, _)).Times(1).WillOnce(Return(DMError::DM_OK));
91 std::vector<ScreenColorGamut> colorGamuts;
92 auto res = screen->GetScreenSupportedColorGamuts(colorGamuts);
93 ASSERT_EQ(DMError::DM_OK, res);
94 }
95
96 /**
97 * @tc.name: GetScreenColorGamut01
98 * @tc.desc: GetScreenColorGamut
99 * @tc.type: FUNC
100 */
101 HWTEST_F(ScreenTest, GetScreenColorGamut01, Function | SmallTest | Level2)
102 {
103 auto screen = ScreenManager::GetInstance().GetScreenById(defaultScreenId_);
104 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
105 EXPECT_CALL(m->Mock(), GetScreenColorGamut(_, _)).Times(1).WillOnce(Return(DMError::DM_OK));
106 ScreenColorGamut colorGamut = ScreenColorGamut::COLOR_GAMUT_SRGB;
107 auto res = screen->GetScreenColorGamut(colorGamut);
108 ASSERT_EQ(DMError::DM_OK, res);
109 }
110
111 /**
112 * @tc.name: SetScreenColorGamut01
113 * @tc.desc: SetScreenColorGamut
114 * @tc.type: FUNC
115 */
116 HWTEST_F(ScreenTest, SetScreenColorGamut01, Function | SmallTest | Level2)
117 {
118 auto screen = ScreenManager::GetInstance().GetScreenById(defaultScreenId_);
119 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
120 EXPECT_CALL(m->Mock(), SetScreenColorGamut(_, _)).Times(1).WillOnce(Return(DMError::DM_OK));
121 ScreenColorGamut colorGamut = ScreenColorGamut::COLOR_GAMUT_SRGB;
122 auto res = screen->SetScreenColorGamut(colorGamut);
123 ASSERT_EQ(DMError::DM_OK, res);
124 }
125
126 /**
127 * @tc.name: GetScreenGamutMap01
128 * @tc.desc: GetScreenGamutMap
129 * @tc.type: FUNC
130 */
131 HWTEST_F(ScreenTest, GetScreenGamutMap01, Function | SmallTest | Level2)
132 {
133 auto screen = ScreenManager::GetInstance().GetScreenById(defaultScreenId_);
134 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
135 EXPECT_CALL(m->Mock(), GetScreenGamutMap(_, _)).Times(1).WillOnce(Return(DMError::DM_OK));
136 ScreenGamutMap gamutMap = ScreenGamutMap::GAMUT_MAP_CONSTANT;
137 auto res = screen->GetScreenGamutMap(gamutMap);
138 ASSERT_EQ(DMError::DM_OK, res);
139 }
140
141 /**
142 * @tc.name: SetScreenGamutMap01
143 * @tc.desc: SetScreenGamutMap
144 * @tc.type: FUNC
145 */
146 HWTEST_F(ScreenTest, SetScreenGamutMap01, Function | SmallTest | Level2)
147 {
148 auto screen = ScreenManager::GetInstance().GetScreenById(defaultScreenId_);
149 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
150 EXPECT_CALL(m->Mock(), SetScreenGamutMap(_, _)).Times(1).WillOnce(Return(DMError::DM_OK));
151 ScreenGamutMap gamutMap = ScreenGamutMap::GAMUT_MAP_CONSTANT;
152 auto res = screen->SetScreenGamutMap(gamutMap);
153 ASSERT_EQ(DMError::DM_OK, res);
154 }
155
156 /**
157 * @tc.name: SetScreenColorTransform01
158 * @tc.desc: SetScreenColorTransform
159 * @tc.type: FUNC
160 */
161 HWTEST_F(ScreenTest, SetScreenColorTransform01, Function | SmallTest | Level2)
162 {
163 auto screen = ScreenManager::GetInstance().GetScreenById(defaultScreenId_);
164 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
165 EXPECT_CALL(m->Mock(), SetScreenColorTransform(_)).Times(1).WillOnce(Return(DMError::DM_OK));
166 auto res = screen->SetScreenColorTransform();
167 ASSERT_EQ(DMError::DM_OK, res);
168 }
169 }
170 } // namespace Rosen
171 } // namespace OHOS