1
2 /*
3 * Copyright (c) 2020 Huawei Device Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 #include "offline_stream_test.h"
17
18 using namespace OHOS;
19 using namespace std;
20 using namespace testing::ext;
21 using namespace OHOS::Camera;
22
SetUpTestCase(void)23 void OfflineStreamTest::SetUpTestCase(void) {}
TearDownTestCase(void)24 void OfflineStreamTest::TearDownTestCase(void) {}
SetUp(void)25 void OfflineStreamTest::SetUp(void)
26 {
27 Test_ = std::make_shared<OHOS::Camera::Test>();
28 Test_->Init();
29 Test_->Open();
30 }
TearDown(void)31 void OfflineStreamTest::TearDown(void)
32 {
33 Test_->Close();
34 }
35
36 /**
37 * @tc.name: OfflineStream
38 * @tc.desc: Preview and still_capture streams, Change still_capture To OfflineStream, excepted success.
39 * @tc.size: MediumTest
40 * @tc.type: Function
41 */
42 HWTEST_F(OfflineStreamTest, Camera_Offline_0001, TestSize.Level0)
43 {
44 std::cout << "==========[test log]Preview and still_capture streams, ";
45 std::cout << " Change still_capture To OfflineStream, excepted success." << std::endl;
46 // Configure two streams of information
47 Test_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
48 Test_->StartStream(Test_->intents);
49 // Capture preview stream
50 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
51 // Capture the photo stream, continuous capture
52 Test_->StartCapture(Test_->streamId_capture, Test_->captureId_capture, false, true);
53 sleep(3); // sleep for 3 seconds
54 // Convert to offline stream
55 Test_->CreateOfflineStreamOperatorCallback();
56 std::vector<int> offlineIds;
57 offlineIds.push_back(Test_->streamId_capture);
58 Test_->rc = Test_->streamOperator->ChangeToOfflineStream(
59 offlineIds, Test_->offlineStreamOperatorCallback, Test_->offlineStreamOperator);
60 ASSERT_EQ(Test_->rc, Camera::NO_ERROR);
61 std::cout << "==========[test log]Check offline: ChangeToOfflineStream rc = " << Test_->rc << std::endl;
62 EXPECT_EQ(true, Test_->offlineStreamOperator != nullptr);
63 if (Test_->rc == Camera::NO_ERROR) {
64 std::cout << "==========[test log]Check offline stream: offline StreamOperator != nullptr" << std::endl;
65 } else {
66 std::cout << "==========[test log]Check offline stream: offline StreamOperator == nullptr" << std::endl;
67 }
68 // Post-processing of the original stream
69 Test_->captureIds = {Test_->captureId_preview, Test_->captureId_capture};
70 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_capture};
71 Test_->StopStream(Test_->captureIds, Test_->streamIds);
72 // Post-processing of offline streams
73 Test_->cameraDevice->Close();
74 std::cout << "==========[test log]Check offline stream: Pretend to wait 5s for callback..." << std::endl;
75 sleep(2);
76 Test_->StopOfflineStream(Test_->captureId_capture);
77 }
78
79 /**
80 * @tc.name: OfflineStream
81 * @tc.desc: Preview and still_capture streams, Change Preview To OfflineStream, excepted fail.
82 * @tc.size: MediumTest
83 * @tc.type: Function
84 */
85 HWTEST_F(OfflineStreamTest, Camera_Offline_0002, TestSize.Level2)
86 {
87 std::cout << "==========[test log]Check offline stream: Preview and still_capture streams, ";
88 std::cout << " Change Preview To OfflineStream, excepted fail." << std::endl;
89 // Configure two streams of information
90 Test_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
91 Test_->StartStream(Test_->intents);
92 // Capture preview stream
93 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
94 // Capture the photo stream, continuous capture
95 Test_->StartCapture(Test_->streamId_capture, Test_->captureId_capture, false, true);
96 sleep(2);
97 // Convert to offline stream
98 Test_->CreateOfflineStreamOperatorCallback();
99 std::vector<int> offlineIds;
100 offlineIds.push_back(Test_->streamId_preview);
101 Test_->rc = Test_->streamOperator->ChangeToOfflineStream(
102 offlineIds, Test_->offlineStreamOperatorCallback, Test_->offlineStreamOperator);
103 ASSERT_EQ(Test_->rc, Camera::METHOD_NOT_SUPPORTED);
104 std::cout << "==========[test log]Check offline: ChangeToOfflineStream rc = " << Test_->rc << std::endl;
105 ASSERT_EQ(true, Test_->offlineStreamOperator == nullptr);
106 std::cout << "==========[test log]Check offline stream: offline StreamOperator == nullptr." << std::endl;
107 // Post-processing of the original stream
108 Test_->captureIds = {Test_->captureId_preview, Test_->captureId_capture};
109 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_capture};
110 Test_->StopStream(Test_->captureIds, Test_->streamIds);
111 }
112
113 /**
114 * @tc.name: OfflineStream
115 * @tc.desc: Preview and video streams, Change video To OfflineStream, excepted fail.
116 * @tc.size: MediumTest
117 * @tc.type: Function
118 */
119 HWTEST_F(OfflineStreamTest, Camera_Offline_0003, TestSize.Level2)
120 {
121 std::cout << "==========[test log]Check offline stream: Preview and video streams, ";
122 std::cout << "Change video To OfflineStream, excepted fail." << std::endl;
123 // Configure two streams of information
124 Test_->intents = {Camera::PREVIEW, Camera::VIDEO};
125 Test_->StartStream(Test_->intents);
126 // Capture preview stream
127 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
128 // Capture the photo stream, continuous capture
129 Test_->StartCapture(Test_->streamId_video, Test_->captureId_video, false, true);
130 sleep(2);
131 // Convert to offline stream
132 Test_->CreateOfflineStreamOperatorCallback();
133 std::vector<int> offlineIds;
134 offlineIds.push_back(Test_->streamId_video);
135 Test_->rc = Test_->streamOperator->ChangeToOfflineStream(
136 offlineIds, Test_->offlineStreamOperatorCallback, Test_->offlineStreamOperator);
137 ASSERT_EQ(Test_->rc, Camera::METHOD_NOT_SUPPORTED);
138 std::cout << "==========[test log]Check offline: ChangeToOfflineStream rc = " << Test_->rc << std::endl;
139 ASSERT_EQ(Test_->offlineStreamOperator, nullptr);
140 std::cout << "==========[test log]Check offline stream: offline StreamOperator == nullptr." << std::endl;
141 // Post-processing of the original stream
142 Test_->captureIds = {Test_->captureId_preview, Test_->captureId_video};
143 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_video};
144 Test_->StopStream(Test_->captureIds, Test_->streamIds);
145 }