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 expected 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 "flashlight_test.h"
16
17 using namespace OHOS;
18 using namespace std;
19 using namespace testing::ext;
20 using namespace OHOS::Camera;
21
SetUpTestCase(void)22 void FlashlightTest::SetUpTestCase(void) {}
TearDownTestCase(void)23 void FlashlightTest::TearDownTestCase(void) {}
SetUp(void)24 void FlashlightTest::SetUp(void)
25 {
26 Test_ = std::make_shared<OHOS::Camera::Test>();
27 Test_->Init();
28 Test_->GetCameraAbility();
29 }
TearDown(void)30 void FlashlightTest::TearDown(void)
31 {
32 Test_->Close();
33 }
34
35 /**
36 * @tc.name: flashlight
37 * @tc.desc: Turn on the flashlight, not the camera, success.
38 * @tc.size: MediumTest
39 * @tc.type: Function
40 */
41 HWTEST_F(FlashlightTest, Camera_Flashlight_0001, TestSize.Level0)
42 {
43 std::cout << "==========[test log]Turn on the flashlight, not the camera, success." << std::endl;
44 Test_->status = true;
45 Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
46 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
47 sleep(3); // sleep for 3 seconds
48 }
49
50 /**
51 * @tc.name: flashlight
52 * @tc.desc: Turn off the flashlight, not the camera, success.
53 * @tc.size: MediumTest
54 * @tc.type: Function
55 */
56 HWTEST_F(FlashlightTest, Camera_Flashlight_0002, TestSize.Level0)
57 {
58 std::cout << "==========[test log]Flashlight turn off, not the camera, success." << std::endl;
59 std::cout << "==========[test log]1. turn on flashlight for 5s." << std::endl;
60 Test_->status = true;
61 Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
62 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
63 sleep(3); // sleep for 3 seconds
64 std::cout << "==========[test log]2. turn off flashlight." << std::endl;
65 Test_->status = false;
66 Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
67 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
68 }
69
70 /**
71 * @tc.name: flashlight
72 * @tc.desc: Turn on/off the flashlight for 10 times, not the camera, success.
73 * @tc.size: MediumTest
74 * @tc.type: Function
75 */
76 HWTEST_F(FlashlightTest, Camera_Flashlight_0003, TestSize.Level3)
77 {
78 std::cout << "==========[test log]Turn on/off the flashlight for 10 times,";
79 std::cout <<" not the camera, success." << std::endl;
80 for (int i = 0; i < 10; i++) {
81 if (i%2 == 0) {
82 Test_->status = true;
83 } else {
84 Test_->status = false;
85 }
86 Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
87 if (Test_->rc != Camera::NO_ERROR) {
88 std::cout << "==========[test log]Flashlight turn on fail, at the ";
89 std::cout << (i+1) <<"times, RetCode is " << Test_->rc << std::endl;
90 }
91 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
92 }
93 }
94
95 /**
96 * @tc.name: flashlight
97 * @tc.desc: Open the camera, preview, then turn on the flashlight, expected return errorcode.
98 * @tc.size: MediumTest
99 * @tc.type: Function
100 */
101 HWTEST_F(FlashlightTest, Camera_Flashlight_0010, TestSize.Level1)
102 {
103 std::cout << "==========[test log]Open the camera, preview, then turn on the flashlight,";
104 std::cout <<" expected return errorcode." << std::endl;
105 Test_->Open();
106 // Start stream
107 Test_->intents = {Camera::PREVIEW};
108 Test_->StartStream(Test_->intents);
109 // Get preview
110 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
111 Test_->status = true;
112 Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
113 EXPECT_EQ(Test_->rc, Camera::METHOD_NOT_SUPPORTED);
114 if (Test_->rc == Camera::NO_ERROR) {
115 std::cout << "==========[test log]turn on the flashlight success." << std::endl;
116 } else {
117 std::cout << "==========[test log]turn on the flashlight fail, Test_->rc = ";
118 std::cout << Test_->rc << std::endl;
119 }
120 std::cout << "==========[test log]turn off/on flashlight fail, preview go on, for 5s." << std::endl;
121 sleep(3); // sleep for 3 seconds
122 // release stream
123 Test_->captureIds = {Test_->captureId_preview};
124 Test_->streamIds = {Test_->streamId_preview};
125 Test_->StopStream(Test_->captureIds, Test_->streamIds);
126 Test_->StopConsumer(Test_->intents);
127 }
128
129 /**
130 * @tc.name: flashlight
131 * @tc.desc: Open the camera, preview, then turn off the flashlight, expected return errorcode.
132 * @tc.size: MediumTest
133 * @tc.type: Function
134 */
135 HWTEST_F(FlashlightTest, Camera_Flashlight_0011, TestSize.Level1)
136 {
137 std::cout << "==========[test log]Open the camera, preview, then turn on the flashlight,";
138 std::cout <<" expected return errorcode." << std::endl;
139 Test_->Open();
140 // Start stream
141 Test_->intents = {Camera::PREVIEW};
142 Test_->StartStream(Test_->intents);
143 // Get preview
144 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
145 Test_->status = false;
146 Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
147 EXPECT_EQ(Test_->rc, Camera::METHOD_NOT_SUPPORTED);
148 if (Test_->rc == Camera::NO_ERROR) {
149 std::cout << "==========[test log]turn off the flashlight success." << std::endl;
150 } else {
151 std::cout << "==========[test log]turn off the flashlight fail,rc = " << Test_->rc << std::endl;
152 }
153 std::cout << "==========[test log]turn off the flashlight fail, preview go on, for 5s." << std::endl;
154 sleep(3); // sleep for 3 seconds
155 // release stream
156 Test_->captureIds = {Test_->captureId_preview};
157 Test_->streamIds = {Test_->streamId_preview};
158 Test_->StopStream(Test_->captureIds, Test_->streamIds);
159 Test_->StopConsumer(Test_->intents);
160 }
161
162 /**
163 * @tc.name: flashlight
164 * @tc.desc: Turn on the flashlight ,then open the camera, the light will turn off.
165 * @tc.size: MediumTest
166 * @tc.type: Function
167 */
168 HWTEST_F(FlashlightTest, Camera_Flashlight_0020, TestSize.Level1)
169 {
170 std::cout << "==========[test log]Turn on the flashlight for 5s,then open the camera,";
171 std::cout <<" the light will turn off." << std::endl;
172 Test_->status = true;
173 Test_->rc = Test_->service->SetFlashlight(Test_->cameraIds.front(), Test_->status);
174 sleep(3); // sleep for 3 seconds
175 // Open the camera, preview
176 Test_->Open();
177 // query the status of the flashlight, currently only supports callback reporting
178 std::cout << "==========[test log]check the flashlight status is off." << std::endl;
179 sleep(3); // sleep for 3 seconds
180 }
181