• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2025 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 "usbd_manage_interface_test.h"
17 
18 #include <iostream>
19 #include <vector>
20 
21 #include "hdf_log.h"
22 #include "v1_0/iusb_interface.h"
23 #include "v1_0/usb_types.h"
24 
25 const int SLEEP_TIME = 3;
26 const uint8_t BUS_NUM_INVALID = 255;
27 const uint8_t DEV_ADDR_INVALID = 255;
28 const uint8_t INTERFACEID_OK = 1;
29 const uint8_t INTERFACEID_OK_NEW = 0;
30 const uint8_t INTERFACEID_INVALID = 255;
31 
32 using namespace testing::ext;
33 using namespace OHOS;
34 using namespace OHOS::USB;
35 using namespace std;
36 using namespace OHOS::HDI::Usb::V1_0;
37 namespace OHOS {
38 namespace USB {
39 namespace ManageInterface {
40 UsbDev UsbdManageInterfaceTest::dev_ = {0, 0};
41 sptr<UsbSubscriberTest> UsbdManageInterfaceTest::subscriber_ = nullptr;
42 sptr<IUsbInterface> g_usbInterface = nullptr;
43 
SetUpTestCase(void)44 void UsbdManageInterfaceTest::SetUpTestCase(void)
45 {
46     g_usbInterface = IUsbInterface::Get();
47     if (g_usbInterface == nullptr) {
48         HDF_LOGE("%{public}s:IUsbInterface::Get() failed.", __func__);
49         exit(0);
50     }
51     auto ret = g_usbInterface->SetPortRole(1, 1, 1);
52     sleep(SLEEP_TIME);
53     HDF_LOGI("UsbdManageInterfaceTest::[Device] %{public}d SetPortRole=%{public}d", __LINE__, ret);
54     if (ret != 0) {
55         ASSERT_EQ(HDF_ERR_NOT_SUPPORT, ret);
56     } else {
57         ASSERT_EQ(0, ret);
58     }
59 
60     subscriber_ = new UsbSubscriberTest();
61     if (g_usbInterface->BindUsbdSubscriber(subscriber_) != HDF_SUCCESS) {
62         HDF_LOGE("%{public}s: bind usbd subscriber_ failed", __func__);
63         exit(0);
64     }
65 
66     std::cout << "please connect device, press enter to continue" << std::endl;
67     int c;
68     while ((c = getchar()) != '\n' && c != EOF) {}
69     dev_ = {subscriber_->busNum_, subscriber_->devAddr_};
70 
71     ret = g_usbInterface->OpenDevice(dev_);
72     HDF_LOGI("UsbdManageInterfaceTest:: %{public}d OpenDevice=%{public}d", __LINE__, ret);
73     ASSERT_EQ(0, ret);
74 }
75 
TearDownTestCase(void)76 void UsbdManageInterfaceTest::TearDownTestCase(void)
77 {
78     g_usbInterface->UnbindUsbdSubscriber(subscriber_);
79     dev_ = {subscriber_->busNum_, subscriber_->devAddr_};
80     auto ret = g_usbInterface->CloseDevice(dev_);
81     HDF_LOGI("UsbdManageInterfaceTest:: %{public}d Close=%{public}d", __LINE__, ret);
82     ASSERT_EQ(0, ret);
83 }
84 
SetUp(void)85 void UsbdManageInterfaceTest::SetUp(void) {}
86 
TearDown(void)87 void UsbdManageInterfaceTest::TearDown(void) {}
88 
89 /**
90  * @tc.name: SUB_USB_HostManager_HDI_Func_1500
91  * @tc.desc: Test functions to ManageInterface
92  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
93  * @tc.desc: Positive test: parameters correctly
94  * @tc.type: FUNC
95  */
96 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Func_1500, Function | MediumTest | Level1)
97 {
98     uint8_t interfaceId = INTERFACEID_OK_NEW;
99     struct UsbDev dev = dev_;
100     int32_t ret = -1;
101     for (; interfaceId < INTERFACEID_INVALID; interfaceId++) {
102         ret = g_usbInterface->ManageInterface(dev, interfaceId, true);
103         if (ret == 0) {
104             break;
105         }
106     }
107     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Func_1500 %{public}d ManageInterface=%{public}d",
108         __LINE__, ret);
109     ASSERT_EQ(0, ret);
110 }
111 
112 /**
113  * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7300
114  * @tc.desc: Test functions to ManageInterface
115  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
116  * @tc.desc: Negative test: parameters exception, busNum error
117  * @tc.type: FUNC
118  */
119 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Compatibility_7300, Function | MediumTest | Level1)
120 {
121     uint8_t interfaceId = INTERFACEID_OK;
122     struct UsbDev dev = dev_;
123     dev.busNum = BUS_NUM_INVALID;
124     auto ret = g_usbInterface->ManageInterface(dev, interfaceId, true);
125     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Compatibility_7300 %{public}d ret=%{public}d",
126         __LINE__, ret);
127     ASSERT_NE(ret, 0);
128 }
129 
130 /**
131  * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7400
132  * @tc.desc: Test functions to ManageInterface
133  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
134  * @tc.desc: Negative test: parameters exception, devAddr error
135  * @tc.type: FUNC
136  */
137 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Compatibility_7400, Function | MediumTest | Level1)
138 {
139     uint8_t interfaceId = INTERFACEID_OK;
140     struct UsbDev dev = {dev_.busNum, DEV_ADDR_INVALID};
141     auto ret = g_usbInterface->ManageInterface(dev, interfaceId, true);
142     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Compatibility_7400 %{public}d ret=%{public}d",
143         __LINE__, ret);
144     ASSERT_NE(ret, 0);
145 }
146 
147 /**
148  * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7500
149  * @tc.desc: Test functions to ManageInterface
150  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
151  * @tc.desc: Negative test: parameters exception, interfaceid error
152  * @tc.type: FUNC
153  */
154 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Compatibility_7500, Function | MediumTest | Level1)
155 {
156     uint8_t interfaceId = INTERFACEID_OK;
157     struct UsbDev dev = dev_;
158     interfaceId = INTERFACEID_INVALID;
159     auto ret = g_usbInterface->ManageInterface(dev, interfaceId, true);
160     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Compatibility_7500 %{public}d ret=%{public}d",
161         __LINE__, ret);
162     ASSERT_NE(ret, 0);
163 }
164 
165 /**
166  * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7600
167  * @tc.desc: Test functions to ManageInterface
168  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
169  * @tc.desc: Negative test: parameters exception, busNum && devAddr error
170  * @tc.type: FUNC
171  */
172 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Compatibility_7600, Function | MediumTest | Level1)
173 {
174     uint8_t interfaceId = INTERFACEID_OK;
175     struct UsbDev dev = {BUS_NUM_INVALID, DEV_ADDR_INVALID};
176     auto ret = g_usbInterface->ManageInterface(dev, interfaceId, true);
177     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Compatibility_7600 %{public}d ret=%{public}d",
178         __LINE__, ret);
179     ASSERT_NE(ret, 0);
180 }
181 
182 /**
183  * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7700
184  * @tc.desc: Test functions to ManageInterface
185  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
186  * @tc.desc: Negative test: parameters exception, busNum && interfaceid error
187  * @tc.type: FUNC
188  */
189 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Compatibility_7700, Function | MediumTest | Level1)
190 {
191     uint8_t interfaceId = INTERFACEID_INVALID;
192     struct UsbDev dev = {BUS_NUM_INVALID, dev_.devAddr};
193     auto ret = g_usbInterface->ManageInterface(dev, interfaceId, true);
194     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Compatibility_7700 %{public}d ret=%{public}d",
195         __LINE__, ret);
196     ASSERT_NE(ret, 0);
197 }
198 
199 /**
200  * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7800
201  * @tc.desc: Test functions to ManageInterface
202  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
203  * @tc.desc: Negative test: parameters exception, devAddr && interfaceid error
204  * @tc.type: FUNC
205  */
206 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Compatibility_7800, Function | MediumTest | Level1)
207 {
208     uint8_t interfaceId = INTERFACEID_INVALID;
209     struct UsbDev dev = {dev_.busNum, DEV_ADDR_INVALID};
210     auto ret = g_usbInterface->ManageInterface(dev, interfaceId, true);
211     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Compatibility_7800 %{public}d ret=%{public}d",
212         __LINE__, ret);
213     ASSERT_NE(ret, 0);
214 }
215 
216 /**
217  * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7900
218  * @tc.desc: Test functions to ManageInterface
219  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
220  * @tc.desc: Negative test: parameters exception, busNum && devAddr && interfaceid error
221  * @tc.type: FUNC
222  */
223 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Compatibility_7900, Function | MediumTest | Level1)
224 {
225     uint8_t interfaceId = INTERFACEID_INVALID;
226     struct UsbDev dev = {BUS_NUM_INVALID, DEV_ADDR_INVALID};
227     auto ret = g_usbInterface->ManageInterface(dev, interfaceId, true);
228     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Compatibility_7900 %{public}d ret=%{public}d",
229         __LINE__, ret);
230     ASSERT_NE(ret, 0);
231 }
232 
233 /**
234  * @tc.name: SUB_USB_HostManager_HDI_Func_1600
235  * @tc.desc: Test functions to ManageInterface
236  * @tc.desc: int32_t  ManageInterface(const UsbDev &dev, uint8_t interfaceId, bool disable);
237  * @tc.desc: Positive test: parameters correctly
238  * @tc.type: FUNC
239  */
240 HWTEST_F(UsbdManageInterfaceTest, SUB_USB_HostManager_HDI_Func_1600, Function | MediumTest | Level1)
241 {
242     uint8_t interfaceId = INTERFACEID_OK_NEW;
243     struct UsbDev dev = dev_;
244         int32_t ret = -1;
245     for (; interfaceId < INTERFACEID_INVALID; interfaceId++) {
246         ret = g_usbInterface->ManageInterface(dev, interfaceId, false);
247         if (ret == 0) {
248             break;
249         }
250     }
251     HDF_LOGI("UsbdManageInterfaceTest::SUB_USB_HostManager_HDI_Func_1600 %{public}d ManageInterface=%{public}d",
252         __LINE__, ret);
253     ASSERT_EQ(0, ret);
254 }
255 } // ManageInterface
256 } // USB
257 } // OHOS
258