1 /*
2  * Copyright (c) 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 #include "open_camera_test.h"
16 
SetUpTestCase(void)17 void UtestOpenCameraTest::SetUpTestCase(void)
18 {}
TearDownTestCase(void)19 void UtestOpenCameraTest::TearDownTestCase(void)
20 {}
SetUp(void)21 void UtestOpenCameraTest::SetUp(void)
22 {
23     if (cameraBase == nullptr) {
24         cameraBase = std::make_shared<TestCameraBase>();
25         cameraBase->Init();
26     }
27 }
TearDown(void)28 void UtestOpenCameraTest::TearDown(void)
29 {
30     cameraBase->Close();
31 }
32 
33 /**
34   * @tc.name: OpenCamera
35   * @tc.desc: OpenCamera, success.
36   * @tc.level: Level0
37   * @tc.size: MediumTest
38   * @tc.type: Function
39   */
TEST_F(UtestOpenCameraTest,camera_open_0001)40 TEST_F(UtestOpenCameraTest, camera_open_0001)
41 {
42     CAMERA_LOGD("OpenCamera, success.");
43     std::vector<std::string> cameraIds;
44     cameraBase->cameraHost->GetCameraIds(cameraIds);
45     for (const auto &cameraId : cameraIds) {
46         CAMERA_LOGI("cameraId = %{public}s", cameraId.c_str());
47     }
48     std::string cameraId = cameraIds.front();
49     const OHOS::sptr<ICameraDeviceCallback> callback = new DemoCameraDeviceCallback();
50     OHOS::sptr<ICameraDevice> cameraDevice;
51     cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraDevice);
52     EXPECT_EQ(true, cameraBase->rc == HDI::Camera::V1_0::NO_ERROR);
53 }
54 
55 /**
56   * @tc.name: OpenCamera cameraID input error
57   * @tc.desc: OpenCamera, cameraID is not found.
58   * @tc.level: Level2
59   * @tc.size: MediumTest
60   * @tc.type: Function
61   */
TEST_F(UtestOpenCameraTest,camera_open_0010)62 TEST_F(UtestOpenCameraTest, camera_open_0010)
63 {
64     CAMERA_LOGD("OpenCamera, cameraID is not found.");
65     std::string cameraId = "qwerty";
66     OHOS::sptr<ICameraDeviceCallback> callback = new DemoCameraDeviceCallback();
67     CAMERA_LOGD("opencamera begin");
68     cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraBase->cameraDevice);
69     CAMERA_LOGD("opencamera end");
70     EXPECT_EQ(INVALID_ARGUMENT, cameraBase->rc);
71 }
72 
73 /**
74   * @tc.name: OpenCamera cameraID input error
75   * @tc.desc: OpenCamera, cameraID is illegal.
76   * @tc.level: Level2
77   * @tc.size: MediumTest
78   * @tc.type: Function
79   */
TEST_F(UtestOpenCameraTest,camera_open_0011)80 TEST_F(UtestOpenCameraTest, camera_open_0011)
81 {
82     CAMERA_LOGD("OpenCamera, cameraID is illegal.");
83     std::string cameraId = "1";
84     OHOS::sptr<ICameraDeviceCallback> callback = new DemoCameraDeviceCallback();
85     cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraBase->cameraDevice);
86     EXPECT_EQ(INVALID_ARGUMENT, cameraBase->rc);
87 }
88 
89 /**
90   * @tc.name: OpenCamera cameraID input error
91   * @tc.desc: OpenCamera, cameraID is Empty.
92   * @tc.level: Level2
93   * @tc.size: MediumTest
94   * @tc.type: Function
95   */
TEST_F(UtestOpenCameraTest,camera_open_0012)96 TEST_F(UtestOpenCameraTest, camera_open_0012)
97 {
98     CAMERA_LOGD("OpenCamera, cameraID is Empty.");
99     std::string cameraId;
100     OHOS::sptr<ICameraDeviceCallback> callback = new DemoCameraDeviceCallback();
101     cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraBase->cameraDevice);
102     EXPECT_EQ(INVALID_ARGUMENT, cameraBase->rc);
103 }
104 
105 /**
106   * @tc.name: OpenCamera Callback input error
107   * @tc.desc: OpenCamera, Callback is Null.
108   * @tc.level: Level2
109   * @tc.size: MediumTest
110   * @tc.type: Function
111   */
TEST_F(UtestOpenCameraTest,camera_open_0020)112 TEST_F(UtestOpenCameraTest, camera_open_0020)
113 {
114     CAMERA_LOGD("OpenCamera, Callback is Null.");
115     std::string cameraId = "CAMERA_FIRST";
116     OHOS::sptr<ICameraDeviceCallback> callback = nullptr;
117     cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraBase->cameraDevice);
118     EXPECT_EQ(INVALID_ARGUMENT, cameraBase->rc);
119 }
120 
121 /**
122   * @tc.name: OpenCamera cameraID & Callback input error
123   * @tc.desc: OpenCamera, cameraID is not found, callback is null.
124   * @tc.level: Level1
125   * @tc.size: MediumTest
126   * @tc.type: Function
127   */
TEST_F(UtestOpenCameraTest,camera_open_0030)128 TEST_F(UtestOpenCameraTest, camera_open_0030)
129 {
130     CAMERA_LOGD("OpenCamera, cameraID is not found, callback is null.");
131     std::string cameraId = "qwerty";
132     OHOS::sptr<ICameraDeviceCallback> callback = nullptr;
133     CAMERA_LOGD("opencamera begin");
134     cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraBase->cameraDevice);
135     CAMERA_LOGD("opencamera end");
136     EXPECT_EQ(INVALID_ARGUMENT, cameraBase-> rc);
137 }
138 
139 /**
140   * @tc.name: OpenCamera cameraID & Callback input error
141   * @tc.desc: OpenCamera, cameraID is illegal, callback is null.
142   * @tc.level: Level1
143   * @tc.size: MediumTest
144   * @tc.type: Function
145   */
TEST_F(UtestOpenCameraTest,camera_open_0031)146 TEST_F(UtestOpenCameraTest, camera_open_0031)
147 {
148     CAMERA_LOGD("OpenCamera, cameraID is illegal, callback is null.");
149     std::string cameraId = "1";
150     OHOS::sptr<ICameraDeviceCallback> callback = nullptr;
151     cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraBase->cameraDevice);
152     EXPECT_EQ(INVALID_ARGUMENT, cameraBase-> rc);
153 }
154 
155 /**
156   * @tc.name: OpenCamera cameraID & Callback input error
157   * @tc.desc: OpenCamera, cameraID is Empty, callback is null.
158   * @tc.level: Level1
159   * @tc.size: MediumTest
160   * @tc.type: Function
161   */
TEST_F(UtestOpenCameraTest,camera_open_0032)162 TEST_F(UtestOpenCameraTest, camera_open_0032)
163 {
164     CAMERA_LOGD("OpenCamera, cameraID is Empty, callback is null.");
165     std::string cameraId;
166     OHOS::sptr<ICameraDeviceCallback> callback = nullptr;
167     cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraBase->cameraDevice);
168     EXPECT_EQ(INVALID_ARGUMENT, cameraBase->rc);
169 }
170 
171 /**
172   * @tc.name: Open all Cameras
173   * @tc.desc: Open every Cameras what the getCameraId get.
174   * @tc.level: Level2
175   * @tc.size: MediumTest
176   * @tc.type: Function
177   */
TEST_F(UtestOpenCameraTest,camera_open_0050)178 TEST_F(UtestOpenCameraTest, camera_open_0050)
179 {
180     CAMERA_LOGD("Open all Cameras.");
181     std::vector<std::string> cameraIds;
182     cameraBase->cameraHost->GetCameraIds(cameraIds);
183     for (auto &cameraId : cameraIds) {
184         CAMERA_LOGI("cameraId = %{public}s", cameraId.c_str());
185         const OHOS::sptr<ICameraDeviceCallback> callback = new DemoCameraDeviceCallback();
186         cameraBase->rc = (CamRetCode)cameraBase->cameraHost->OpenCamera(cameraId, callback, cameraBase->cameraDevice);
187         EXPECT_EQ(true, cameraBase->rc == HDI::Camera::V1_0::NO_ERROR);
188         if (cameraBase->rc == HDI::Camera::V1_0::NO_ERROR) {
189             CAMERA_LOGI("OpenCamera success, cameraId = %{public}s", cameraId.c_str());
190         } else {
191             CAMERA_LOGE("OpenCamera fail, rc = %{public}d, cameraId = %{public}s", cameraBase->rc, cameraId.c_str());
192         }
193     }
194 }
195