1 /*
2  * Copyright (c) 2023-2023 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 <gtest/gtest.h>
17 #include "picture_in_picture_option.h"
18 #include "wm_common.h"
19 using namespace testing;
20 using namespace testing::ext;
21 
22 namespace OHOS {
23 namespace Rosen {
24 class PictureInPictureOptionTest : public testing::Test {
25 public:
26     static void SetUpTestCase();
27 
28     static void TearDownTestCase();
29 
30     void SetUp() override;
31 
32     void TearDown() override;
33 };
34 
SetUpTestCase()35 void PictureInPictureOptionTest::SetUpTestCase() {
36 }
37 
TearDownTestCase()38 void PictureInPictureOptionTest::TearDownTestCase() {
39 }
40 
SetUp()41 void PictureInPictureOptionTest::SetUp() {
42 }
43 
TearDown()44 void PictureInPictureOptionTest::TearDown() {
45 }
46 
47 namespace {
48 
49 /**
50  * @tc.name: Context
51  * @tc.desc: SetContext/GetContext
52  * @tc.type: FUNC
53  */
54 HWTEST_F(PictureInPictureOptionTest, Context, Function | SmallTest | Level2)
55 {
56     void* contextPtr = nullptr;
57     sptr<PipOption> option = new PipOption();
58     option->SetContext(contextPtr);
59     ASSERT_EQ(contextPtr, option->GetContext());
60 }
61 
62 /**
63  * @tc.name: PipTemplate
64  * @tc.desc: SetPipTemplate/GetPipTemplate
65  * @tc.type: FUNC
66  */
67 HWTEST_F(PictureInPictureOptionTest, PipTemplate, Function | SmallTest | Level2)
68 {
69     sptr<PipOption> option = new PipOption();
70     option->SetPipTemplate(100);
71     ASSERT_EQ(100, option->GetPipTemplate());
72 }
73 
74 /**
75  * @tc.name: PiPControlStatus
76  * @tc.desc: SetPiPControlStatus/GetControlStatus
77  * @tc.type: FUNC
78  */
79 HWTEST_F(PictureInPictureOptionTest, SetPiPControlStatus, Function | SmallTest | Level2)
80 {
81     auto option = sptr<PipOption>::MakeSptr();
82     ASSERT_NE(nullptr, option);
83     auto controlType = PiPControlType::VIDEO_PLAY_PAUSE;
84     auto status = PiPControlStatus::PLAY;
85     option->SetPiPControlStatus(controlType, status);
86     controlType = PiPControlType::END;
87     option->SetPiPControlStatus(controlType, status);
88     ASSERT_NE(0, option->GetControlStatus().size());
89 }
90 
91 /**
92  * @tc.name: PiPControlEnable
93  * @tc.desc: SetPiPControlEnabled/GetControlEnable
94  * @tc.type: FUNC
95  */
96 HWTEST_F(PictureInPictureOptionTest, SetPiPControlEnabled, Function | SmallTest | Level2)
97 {
98     auto option = sptr<PipOption>::MakeSptr();
99     ASSERT_NE(nullptr, option);
100     auto controlType = PiPControlType::VIDEO_PLAY_PAUSE;
101     auto enabled = PiPControlStatus::ENABLED;
102     option->SetPiPControlEnabled(controlType, enabled);
103     controlType = PiPControlType::END;
104     option->SetPiPControlEnabled(controlType, enabled);
105     ASSERT_NE(0, option->GetControlEnable().size());
106 }
107 
108 /**
109  * @tc.name: NavigationId
110  * @tc.desc: SetNavigationId/GetNavigationId
111  * @tc.type: FUNC
112  */
113 HWTEST_F(PictureInPictureOptionTest, NavigationId, Function | SmallTest | Level2)
114 {
115     sptr<PipOption> option = new PipOption();
116     std::string navigationId = "abc";
117     option->SetNavigationId(navigationId);
118     ASSERT_EQ(navigationId, option->GetNavigationId());
119 }
120 
121 /**
122  * @tc.name: ControlGroup
123  * @tc.desc: SetControlGroup/GetControlGroup
124  * @tc.type: FUNC
125  */
126 HWTEST_F(PictureInPictureOptionTest, SetGetControlGroupTest, Function | SmallTest | Level2)
127 {
128     sptr<PipOption> option = new PipOption();
129     std::vector<std::uint32_t> controlGroup;
130     controlGroup.push_back(static_cast<uint32_t>(PiPControlGroup::VIDEO_CALL_MICROPHONE_SWITCH));
131     controlGroup.push_back(static_cast<uint32_t>(PiPControlGroup::VIDEO_CALL_HANG_UP_BUTTON));
132     controlGroup.push_back(static_cast<uint32_t>(PiPControlGroup::VIDEO_CALL_CAMERA_SWITCH));
133     option->SetControlGroup(controlGroup);
134     ASSERT_NE(option->GetControlGroup().size(), 0);
135 }
136 
137 /**
138  * @tc.name: ContentSize
139  * @tc.desc: SetContentSize/GetContentSize
140  * @tc.type: FUNC
141  */
142 HWTEST_F(PictureInPictureOptionTest, ContentSize, Function | SmallTest | Level2)
143 {
144     sptr<PipOption> option = new PipOption();
145     uint32_t width = 800;
146     uint32_t height = 600;
147     option->SetContentSize(width, height);
148     uint32_t w = 0;
149     uint32_t h = 0;
150     option->GetContentSize(w, h);
151     ASSERT_EQ(width, w);
152     ASSERT_EQ(height, h);
153 }
154 
155 /**
156  * @tc.name: NodeController
157  * @tc.desc: SetNodeControllerRef/GetNodeControllerRef
158  * @tc.type: FUNC
159  */
160 HWTEST_F(PictureInPictureOptionTest, NodeController, Function | SmallTest | Level2)
161 {
162     sptr<PipOption> option = sptr<PipOption>::MakeSptr();
163     option->SetNodeControllerRef(nullptr);
164     ASSERT_EQ(option->GetNodeControllerRef(), nullptr);
165 }
166 
167 /**
168  * @tc.name: TypeNodeRef
169  * @tc.desc: SetTypeNodeRef/GetTypeNodeRef
170  * @tc.type: FUNC
171  */
172 HWTEST_F(PictureInPictureOptionTest, TypeNodeRef, Function | SmallTest | Level2)
173 {
174     sptr<PipOption> option = sptr<PipOption>::MakeSptr();
175     option->SetTypeNodeRef(nullptr);
176     ASSERT_EQ(option->GetTypeNodeRef(), nullptr);
177 }
178 
179 /**
180  * @tc.name: TypeNodeEnabled
181  * @tc.desc: SetTypeNodeEnabled/IsTypeNodeEnabled
182  * @tc.type: FUNC
183  */
184 HWTEST_F(PictureInPictureOptionTest, TypeNodeEnabled, Function | SmallTest | Level2)
185 {
186     sptr<PipOption> option = sptr<PipOption>::MakeSptr();
187     option->SetTypeNodeEnabled(true);
188     ASSERT_TRUE(option->IsTypeNodeEnabled());
189     option->SetTypeNodeEnabled(false);
190     ASSERT_TRUE(!option->IsTypeNodeEnabled());
191 }
192 }
193 }
194 }