1/*
2 * Copyright (c) 2021 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 "hdi_host_test.h"
17
18using namespace OHOS;
19using namespace std;
20using namespace testing::ext;
21using namespace OHOS::Camera;
22
23void HdiHostTest::SetUpTestCase(void) {}
24void HdiHostTest::TearDownTestCase(void) {}
25void HdiHostTest::SetUp(void)
26{
27    Test_ = std::make_shared<OHOS::Camera::Test>();
28    Test_->Init();
29}
30void HdiHostTest::TearDown(void)
31{
32    Test_->Close();
33}
34
35/**
36  * @tc.name: GetCameraIds
37  * @tc.desc: CamRetCode GetCameraIds([out] String[] ids);
38  * @tc.size: MediumTest
39  * @tc.type: Function
40  */
41HWTEST_F(HdiHostTest, Camera_Hdi_0010, TestSize.Level0)
42{
43    std::cout << "==========[test log]Check hdi_host: GetCameraIds([out] String[] ids)." << std::endl;
44    if (Test_->cameraDevice == nullptr) {
45        Test_->rc = Test_->service->GetCameraIds(Test_->cameraIds);
46        EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
47        EXPECT_LT(0, Test_->cameraIds.size());
48        std::cout << "==========[test log]Check hdi_host:cameraIds.size()= ."<< Test_->cameraIds.size() << std::endl;
49    }
50}
51
52/**
53  * @tc.name: GetCameraAbility
54  * @tc.desc: GetCameraAbility, normal cameraId.
55  * @tc.size: MediumTest
56  * @tc.type: Function
57  */
58HWTEST_F(HdiHostTest, Camera_Hdi_0020, TestSize.Level0)
59{
60    std::cout << "==========[test log]Check hdi_host: GetCameraAbility, normal cameraId." << std::endl;
61    if (Test_->cameraDevice == nullptr) {
62        Test_->rc = Test_->service->GetCameraIds(Test_->cameraIds);
63        EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
64        for (int i=0; i<Test_->cameraIds.size(); i++) {
65            Test_->rc = Test_->service->GetCameraAbility(Test_->cameraIds[i], Test_->ability);
66            std::cout << "==========[test log]Check hdi_host: cameraid = " << Test_->cameraIds[i] << std::endl;
67            EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
68        }
69    }
70}
71
72/**
73  * @tc.name: GetCameraAbility
74  * @tc.desc: GetCameraAbility, abnormal cameraId = 'abc'.
75  * @tc.size: MediumTest
76  * @tc.type: Function
77  */
78HWTEST_F(HdiHostTest, Camera_Hdi_0021, TestSize.Level2)
79{
80    std::cout << "==========[test log]Check hdi_host: GetCameraAbility, abnormal cameraId = 'abc'." << std::endl;
81    if (Test_->cameraDevice == nullptr) {
82        std::string cameraId = "abc";
83        Test_->rc = Test_->service->GetCameraAbility(cameraId, Test_->ability);
84        std::cout << "==========[test log]Check hdi_host: Test_->rc ="<< Test_->rc << std::endl;
85        EXPECT_EQ(true, Test_->rc == Camera::CamRetCode::INVALID_ARGUMENT);
86    }
87}
88
89/**
90  * @tc.name: GetCameraAbility
91  * @tc.desc: GetCameraAbility, abnormal cameraId = ''
92  * @tc.size: MediumTest
93  * @tc.type: Function
94  */
95HWTEST_F(HdiHostTest, Camera_Hdi_0022, TestSize.Level2)
96{
97    std::cout << "==========[test log]Check hdi_host: GetCameraAbility, abnormal cameraId = ''." << std::endl;
98    if (Test_->cameraDevice == nullptr) {
99        std::string cameraId = "";
100        Test_->rc = Test_->service->GetCameraAbility(cameraId, Test_->ability);
101        std::cout << "==========[test log]Check hdi_host: Test_->rc ="<< Test_->rc << std::endl;
102        EXPECT_EQ(true, Test_->rc == Camera::CamRetCode::INVALID_ARGUMENT);
103    }
104}
105
106/**
107  * @tc.name: OpenCamera
108  * @tc.desc: OpenCamera, normal cameraId.
109  * @tc.size: MediumTest
110  * @tc.type: Function
111  */
112HWTEST_F(HdiHostTest, Camera_Hdi_0030, TestSize.Level0)
113{
114    std::cout << "==========[test log]Check hdi_host: OpenCamera, normal cameraId."<< std::endl;
115    if (Test_->cameraDevice == nullptr) {
116        Test_->service->GetCameraIds(Test_->cameraIds);
117        Test_->CreateDeviceCallback();
118        Test_->rc = Test_->service->OpenCamera(Test_->cameraIds.front(), Test_->deviceCallback, Test_->cameraDevice);
119        EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
120        if (Test_->rc != Camera::NO_ERROR || Test_->cameraDevice == nullptr) {
121            std::cout << "==========[test log]Check hdi_host: OpenCamera failed." << std::endl;
122            return;
123        }
124        std::cout << "==========[test log]Check hdi_host: OpenCamera success." << std::endl;
125    }
126}
127
128/**
129  * @tc.name: OpenCamera
130  * @tc.desc: OpenCamera, cameraID is not found.
131  * @tc.size: MediumTest
132  * @tc.type: Function
133  */
134HWTEST_F(HdiHostTest, Camera_Hdi_0031, TestSize.Level2)
135{
136    std::cout << "==========[test log]Check hdi_host: OpenCamera, cameraID is not found."<< std::endl;
137    if (Test_->cameraDevice == nullptr) {
138        std::string cameraId = "qwerty";
139        Test_->CreateDeviceCallback();
140        Test_->rc = Test_->service->OpenCamera(cameraId, Test_->deviceCallback, Test_->cameraDevice);
141        EXPECT_EQ(true, Test_->rc == Camera::INVALID_ARGUMENT);
142    }
143}
144
145/**
146  * @tc.name: OpenCamera
147  * @tc.desc: OpenCamera, cameraID is illegal.
148  * @tc.size: MediumTest
149  * @tc.type: Function
150  */
151HWTEST_F(HdiHostTest, Camera_Hdi_0032, TestSize.Level2)
152{
153    std::cout << "==========[test log]Check hdi_host: OpenCamera, cameraID is illegal."<< std::endl;
154    if (Test_->cameraDevice == nullptr) {
155        std::string cameraId = "1";
156        Test_->CreateDeviceCallback();
157        Test_->rc = Test_->service->OpenCamera(cameraId, Test_->deviceCallback, Test_->cameraDevice);
158        EXPECT_EQ(true, Test_->rc == Camera::INVALID_ARGUMENT);
159    }
160}
161
162/**
163  * @tc.name: OpenCamera
164  * @tc.desc: OpenCamera, cameraID is Empty.
165  * @tc.size: MediumTest
166  * @tc.type: Function
167  */
168HWTEST_F(HdiHostTest, Camera_Hdi_0033, TestSize.Level2)
169{
170    std::cout << "==========[test log]Check hdi_host: OpenCamera, cameraID is Empty."<< std::endl;
171    if (Test_->cameraDevice == nullptr) {
172        std::string cameraId = "";
173        Test_->CreateDeviceCallback();
174        Test_->rc = Test_->service->OpenCamera(cameraId, Test_->deviceCallback, Test_->cameraDevice);
175        EXPECT_EQ(true, Test_->rc == Camera::INVALID_ARGUMENT);
176    }
177}
178
179/**
180  * @tc.name: OpenCamera
181  * @tc.desc: OpenCamera, Callback is Null.
182  * @tc.size: MediumTest
183  * @tc.type: Function
184  */
185HWTEST_F(HdiHostTest, Camera_Hdi_0034, TestSize.Level2)
186{
187    std::cout << "==========[test log]Check hdi_host: OpenCamera, Callback is Null."<< std::endl;
188    if (Test_->cameraDevice == nullptr) {
189        Test_->service->GetCameraIds(Test_->cameraIds);
190        Test_->deviceCallback = nullptr;
191        Test_->rc = Test_->service->OpenCamera(Test_->cameraIds.front(), Test_->deviceCallback, Test_->cameraDevice);
192        EXPECT_EQ(true, Test_->rc == Camera::INVALID_ARGUMENT);
193    }
194}
195
196/**
197  * @tc.name: OpenCamera
198  * @tc.desc: cameraID is not found, callback is null.
199  * @tc.size: MediumTest
200  * @tc.type: Function
201  */
202HWTEST_F(HdiHostTest, Camera_Hdi_0035, TestSize.Level2)
203{
204    std::cout << "==========[test log]Check hdi_host: OpenCamera, cameraID is not found, callback is null."<< std::endl;
205    if (Test_->cameraDevice == nullptr) {
206        std::string cameraId = "abc";
207        Test_->CreateDeviceCallback();
208        Test_->rc = Test_->service->OpenCamera(cameraId, Test_->deviceCallback, Test_->cameraDevice);
209        EXPECT_EQ(true, Test_->rc == Camera::INVALID_ARGUMENT);
210    }
211}
212
213/**
214  * @tc.name: SetFlashlight
215  * @tc.desc: SetFlashlight, normal cameraId.
216  * @tc.size: MediumTest
217  * @tc.type: Function
218  */
219HWTEST_F(HdiHostTest, Camera_Hdi_0040, TestSize.Level0)
220{
221    std::cout << "==========[test log]Check hdi_host: SetFlashlight, normal cameraId." << std::endl;
222    if (Test_->cameraDevice == nullptr) {
223        Test_->service->GetCameraIds(Test_->cameraIds);
224        Test_->status = true;
225        Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
226        EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
227    }
228}
229
230/**
231  * @tc.name: SetFlashlight
232  * @tc.desc: SetFlashlight, cameraId is not found.
233  * @tc.size: MediumTest
234  * @tc.type: Function
235  */
236HWTEST_F(HdiHostTest, Camera_Hdi_0041, TestSize.Level2)
237{
238    std::cout << "==========[test log]Check hdi_host: SetFlashlight, cameraId is not found." << std::endl;
239    if (Test_->cameraDevice == nullptr) {
240        std::string cameraId = "abc";
241        Test_->status = true;
242        Test_->rc = Test_->service->SetFlashlight(cameraId, Test_->status);
243        EXPECT_EQ(true, Test_->rc == Camera::INVALID_ARGUMENT);
244    }
245}
246
247/**
248  * @tc.name: SetFlashlight
249  * @tc.desc: SetFlashlight, cameraId is empty.
250  * @tc.size: MediumTest
251  * @tc.type: Function
252  */
253HWTEST_F(HdiHostTest, Camera_Hdi_0042, TestSize.Level2)
254{
255    std::cout << "==========[test log]Check hdi_host: SetFlashlight, cameraId is empty." << std::endl;
256    if (Test_->cameraDevice == nullptr) {
257        std::string cameraId = "";
258        Test_->status = true;
259        Test_->rc = Test_->service->SetFlashlight(cameraId, Test_->status);
260        EXPECT_EQ(true, Test_->rc == Camera::INVALID_ARGUMENT);
261    }
262}
263
264/**
265  * @tc.name: SetFlashlight
266  * @tc.desc: SetFlashlight, status is true.
267  * @tc.size: MediumTest
268  * @tc.type: Function
269  */
270HWTEST_F(HdiHostTest, Camera_Hdi_0043, TestSize.Level2)
271{
272    std::cout << "==========[test log]Check hdi_host: SetFlashlight, normal cameraId." << std::endl;
273    if (Test_->cameraDevice == nullptr) {
274        Test_->service->GetCameraIds(Test_->cameraIds);
275        Test_->status = true;
276        Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
277        EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
278    }
279}
280
281/**
282  * @tc.name: SetFlashlight
283  * @tc.desc: SetFlashlight, status is false.
284  * @tc.size: MediumTest
285  * @tc.type: Function
286  */
287HWTEST_F(HdiHostTest, Camera_Hdi_0044, TestSize.Level2)
288{
289    std::cout << "==========[test log]Check hdi_host: SetFlashlight, normal cameraId." << std::endl;
290    if (Test_->cameraDevice == nullptr) {
291        Test_->service->GetCameraIds(Test_->cameraIds);
292        Test_->status = false;
293        Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
294        EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
295    }
296}
297