1 /*
2 * Copyright (c) 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_accessory_test.h"
17
18 #include <cstdint>
19 #include <cstdio>
20 #include <iostream>
21 #include <vector>
22 #include <string>
23
24 #include "hdf_log.h"
25 #include "usbd_wrapper.h"
26 #include "v2_0/iusb_device_interface.h"
27
28 using namespace testing::ext;
29 using namespace OHOS;
30 using namespace OHOS::USB;
31 using namespace std;
32 using namespace OHOS::HDI::Usb::V2_0;
33
34 sptr<UsbSubTest> UsbdAccessoryTest::subscriber_ = nullptr;
35
36 sptr<OHOS::HDI::Usb::V2_0::IUsbDeviceInterface> g_usbDeviceInterface = nullptr;
37
SetUpTestCase(void)38 void UsbdAccessoryTest::SetUpTestCase(void)
39 {
40 g_usbDeviceInterface = OHOS::HDI::Usb::V2_0::IUsbDeviceInterface::Get();
41 if (g_usbDeviceInterface == nullptr) {
42 HDF_LOGE("%{public}s:IUsbInterface::Get() failed.", __func__);
43 exit(0);
44 }
45 std::cout << "please connect accessory, press enter to continue" << std::endl;
46 int c;
47 do {
48 c = getchar();
49 } while (c != '\n' && c != EOF);
50 }
51
TearDownTestCase(void)52 void UsbdAccessoryTest::TearDownTestCase(void) {}
53
SetUp(void)54 void UsbdAccessoryTest::SetUp(void) {}
55
TearDown(void)56 void UsbdAccessoryTest::TearDown(void) {}
57
58 /**
59 * @tc.name: GetAccessoryInfo001
60 * @tc.desc: Test functions to GetAccessoryInfo
61 * @tc.type: FUNC
62 */
63 HWTEST_F(UsbdAccessoryTest, GetAccessoryInfo001, TestSize.Level1)
64 {
65 HDF_LOGI("Case Start : GetAccessoryInfo001 : GetAccessoryInfo");
66 vector<string> accessoryInfo;
67 auto ret = g_usbDeviceInterface->GetAccessoryInfo(accessoryInfo);
68 EXPECT_TRUE(ret == 0);
69 HDF_LOGI("UsbdAccessoryTest::GetAccessoryInfo001 %{public}d ret=%{public}d", __LINE__, ret);
70
71 EXPECT_TRUE(!accessoryInfo.empty()) << "accessoryInfo NULL";
72 HDF_LOGI("UsbdAccessoryTest::GetAccessoryInfo001 %{public}d size=%{public}zu", __LINE__, accessoryInfo.size());
73 }
74
75 /**
76 * @tc.name: OpenAccessory001
77 * @tc.desc: Test functions to OpenAccessory
78 * @tc.type: FUNC
79 */
80 HWTEST_F(UsbdAccessoryTest, OpenAccessory001, TestSize.Level1)
81 {
82 HDF_LOGI("Case Start : OpenAccessory001 : OpenAccessory");
83 int32_t fd;
84 auto ret = g_usbDeviceInterface->OpenAccessory(fd);
85 EXPECT_TRUE(ret == 0);
86 HDF_LOGI("UsbdAccessoryTest::OpenAccessory001 %{public}d ret=%{public}d", __LINE__, ret);
87 g_usbDeviceInterface->CloseAccessory(fd);
88 }
89
90 /**
91 * @tc.name: OpenAccessory002
92 * @tc.desc: Test functions to OpenAccessory
93 * @tc.type: FUNC
94 */
95 HWTEST_F(UsbdAccessoryTest, OpenAccessory002, TestSize.Level1)
96 {
97 HDF_LOGI("Case Start : OpenAccessory001 : OpenAccessory");
98 int32_t fd;
99 auto ret = g_usbDeviceInterface->OpenAccessory(fd);
100 EXPECT_TRUE(ret == 0);
101 HDF_LOGI("UsbdAccessoryTest::OpenAccessory002 %{public}d ret=%{public}d", __LINE__, ret);
102 ret = g_usbDeviceInterface->OpenAccessory(fd);
103 EXPECT_TRUE(ret != 0);
104 HDF_LOGI("UsbdAccessoryTest::OpenAccessory002 %{public}d ret=%{public}d", __LINE__, ret);
105 g_usbDeviceInterface->CloseAccessory(fd);
106 }
107
108 /**
109 * @tc.name: CloseAccessory001
110 * @tc.desc: Test functions to CloseAccessory
111 * @tc.type: FUNC
112 */
113 HWTEST_F(UsbdAccessoryTest, CloseAccessory001, TestSize.Level1)
114 {
115 HDF_LOGI("Case Start : CloseAccessory001 : CloseAccessory");
116 int32_t fd;
117 auto ret = g_usbDeviceInterface->OpenAccessory(fd);
118 EXPECT_TRUE(ret == 0);
119 HDF_LOGI("UsbdAccessoryTest::CloseAccessory001 %{public}d ret=%{public}d", __LINE__, ret);
120 ret = g_usbDeviceInterface->CloseAccessory(fd);
121 EXPECT_TRUE(ret == 0);
122 HDF_LOGI("UsbdAccessoryTest::CloseAccessory001 %{public}d ret=%{public}d", __LINE__, ret);
123 }
124