1 /*
2 * Copyright (c) 2022-2024 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
18 #include "dcamera_device.h"
19
20 using namespace testing::ext;
21
22 namespace OHOS {
23 namespace DistributedHardware {
24 class DCameraDeviceTest : public testing::Test {
25 public:
26 static void SetUpTestCase(void);
27 static void TearDownTestCase(void);
28 void SetUp(void);
29 void TearDown(void);
30
31 sptr<DCameraDevice> dcameraDevice_ = nullptr;
32 };
33
34 constexpr const char* TEST_DEVICE_ID = "bb536a637105409e904d4da83790a4a7";
35 constexpr const char* TEST_CAMERA_DH_ID_0 = "camera_0";
36 constexpr const char* TEST_ABILITY = R"({"CodecType": ["avenc_mpeg4"],
37 "Position": "BACK",
38 "ProtocolVer": "1.0",
39 "MetaData": "",
40 "Photo": {
41 "OutputFormat": [2, 4],
42 "Resolution": {
43 "2": ["1920*1080", "1504*720", "1440*1080", "1280*960", "1280*720", "1232*768", "1152*720", "960*720",
44 "960*544", "880*720", "720*720", "720*480", "640*480", "352*288", "320*240"],
45 "4": ["1920*1080", "1504*720", "1440*1080", "1280*960", "1280*720", "1232*768", "1152*720", "960*720",
46 "960*544", "880*720", "720*720", "720*480", "640*480", "352*288", "320*240"]
47 }
48 },
49 "Preview": {
50 "OutputFormat": [2, 3],
51 "Resolution": {
52 "2": ["1920*1080", "1504*720", "1440*1080", "1280*960", "1280*720", "1232*768", "1152*720", "960*720",
53 "960*544", "880*720", "720*720", "720*480", "640*480", "352*288", "320*240"],
54 "3": ["1920*1080", "1504*720", "1440*1080", "1280*960", "1280*720", "1232*768", "1152*720", "960*720",
55 "960*544", "880*720", "720*720", "720*480", "640*480", "352*288", "320*240"]
56 }
57 },
58 "Video": {
59 "OutputFormat": [2, 3],
60 "Resolution": {
61 "2": ["1920*1080", "1504*720", "1440*1080", "1280*960", "1280*720", "1232*768", "1152*720", "960*720",
62 "960*544", "880*720", "720*720", "720*480", "640*480", "352*288", "320*240"],
63 "3": ["1920*1080", "1504*720", "1440*1080", "1280*960", "1280*720", "1232*768", "1152*720", "960*720",
64 "960*544", "880*720", "720*720", "720*480", "640*480", "352*288", "320*240"]
65 }
66 }})";
67
SetUpTestCase(void)68 void DCameraDeviceTest::SetUpTestCase(void)
69 {
70 }
71
TearDownTestCase(void)72 void DCameraDeviceTest::TearDownTestCase(void)
73 {
74 }
75
SetUp(void)76 void DCameraDeviceTest::SetUp(void)
77 {
78 DHBase dhBase = {TEST_DEVICE_ID, TEST_CAMERA_DH_ID_0};
79 dcameraDevice_ = sptr<DCameraDevice>(new (std::nothrow) DCameraDevice(dhBase, TEST_ABILITY, TEST_ABILITY));
80 }
81
TearDown(void)82 void DCameraDeviceTest::TearDown(void)
83 {
84 }
85
86 /**
87 * @tc.name: dcamera_device_test_001
88 * @tc.desc: Verify SetResultMode
89 * @tc.type: FUNC
90 * @tc.require: AR
91 */
92 HWTEST_F(DCameraDeviceTest, dcamera_device_test_001, TestSize.Level0)
93 {
94 EXPECT_EQ(false, dcameraDevice_ == nullptr);
95
96 ResultCallbackMode mode = PER_FRAME;
97 int32_t rc = dcameraDevice_->SetResultMode(mode);
98 EXPECT_EQ(true, rc == CamRetCode::NO_ERROR);
99 }
100
101 /**
102 * @tc.name: dcamera_device_test_002
103 * @tc.desc: Verify GetEnabledResults
104 * @tc.type: FUNC
105 * @tc.require: AR
106 */
107 HWTEST_F(DCameraDeviceTest, dcamera_device_test_002, TestSize.Level1)
108 {
109 EXPECT_EQ(false, dcameraDevice_ == nullptr);
110
111 std::vector<int32_t> results;
112 int32_t rc = dcameraDevice_->GetEnabledResults(results);
113 EXPECT_EQ(true, rc == CamRetCode::NO_ERROR);
114 }
115
116 /**
117 * @tc.name: dcamera_device_test_003
118 * @tc.desc: Verify SetResultMode ON_CHANGED
119 * @tc.type: FUNC
120 * @tc.require: AR
121 */
122 HWTEST_F(DCameraDeviceTest, dcamera_device_test_003, TestSize.Level1)
123 {
124 EXPECT_EQ(false, dcameraDevice_ == nullptr);
125
126 ResultCallbackMode mode = ON_CHANGED;
127 int32_t rc = dcameraDevice_->SetResultMode(mode);
128 EXPECT_EQ(true, rc == CamRetCode::NO_ERROR);
129
130 std::vector<int32_t> results;
131 rc = dcameraDevice_->GetEnabledResults(results);
132 EXPECT_EQ(true, rc == CamRetCode::NO_ERROR);
133 }
134
135 /**
136 * @tc.name: dcamera_device_test_004
137 * @tc.desc: Verify GetDCameraAbility
138 * @tc.type: FUNC
139 * @tc.require: AR
140 */
141 HWTEST_F(DCameraDeviceTest, dcamera_device_test_004, TestSize.Level1)
142 {
143 EXPECT_EQ(false, dcameraDevice_ == nullptr);
144
145 std::shared_ptr<CameraAbility> ability = nullptr;
146 CamRetCode rc = dcameraDevice_->GetDCameraAbility(ability);
147 EXPECT_EQ(true, rc == CamRetCode::NO_ERROR);
148 }
149
150 /**
151 * @tc.name: dcamera_device_test_005
152 * @tc.desc: Verify GetDCameraAbility
153 * @tc.type: FUNC
154 * @tc.require: AR
155 */
156 HWTEST_F(DCameraDeviceTest, dcamera_device_test_005, TestSize.Level1)
157 {
158 EXPECT_EQ(false, dcameraDevice_ == nullptr);
159
160 std::shared_ptr<CameraAbility> ability = nullptr;
161 std::string sinkAbility = "sink";
162 dcameraDevice_->SetDcameraAbility(sinkAbility);
163 CamRetCode rc = dcameraDevice_->GetDCameraAbility(ability);
164 EXPECT_EQ(true, rc == CamRetCode::INVALID_ARGUMENT);
165
166 dcameraDevice_->SetDcameraAbility(TEST_ABILITY);
167 rc = dcameraDevice_->GetDCameraAbility(ability);
168 EXPECT_EQ(true, rc == CamRetCode::NO_ERROR);
169 }
170 }
171 }