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 }