1 /*
2 * Copyright (c) 2023 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 #include <hdf_log.h>
18 #include <linux/uinput.h>
19 #include "v1_0/ihid_ddk.h"
20
21 using namespace OHOS::HDI::Input::Ddk::V1_0;
22 using namespace testing::ext;
23
24 namespace {
25 sptr<IHidDdk> g_hidDdk = nullptr;
26 }
27
28 class HidDdkTest : public testing::Test {
29 public:
30 static void SetUpTestCase();
31 static void TearDownTestCase();
SetUp()32 void SetUp() override {};
TearDown()33 void TearDown() override {};
34 };
35
SetUpTestCase()36 void HidDdkTest::SetUpTestCase()
37 {
38 g_hidDdk = IHidDdk::Get();
39 }
40
TearDownTestCase()41 void HidDdkTest::TearDownTestCase()
42 {
43 g_hidDdk = nullptr;
44 }
45
46 HWTEST_F(HidDdkTest, CheckIHidDdkGet001, TestSize.Level1)
47 {
48 ASSERT_NE(g_hidDdk, nullptr);
49 }
50
51 HWTEST_F(HidDdkTest, CreateDevice001, TestSize.Level1)
52 {
53 struct Hid_Device hidDevice = {
54 .deviceName = "VSoC keyboard",
55 .vendorId = 0x6006,
56 .productId = 0x6008,
57 .version = 1,
58 .bustype = BUS_USB
59 };
60
61 struct Hid_EventProperties hidEventProp = {
62 .hidEventTypes = {HID_EV_KEY},
63 .hidKeys = {HID_KEY_1, HID_KEY_SPACE, HID_KEY_BACKSPACE, HID_KEY_ENTER}
64 };
65
66 uint32_t deviceId = 0;
67 int32_t ret = g_hidDdk->CreateDevice(hidDevice, hidEventProp, deviceId);
68 ASSERT_EQ(ret, 0);
69 }
70
71 HWTEST_F(HidDdkTest, EmitEvent001, TestSize.Level1)
72 {
73 struct Hid_Device hidDevice = {
74 .deviceName = "VSoC keyboard",
75 .vendorId = 0x6006,
76 .productId = 0x6008,
77 .version = 1,
78 .bustype = BUS_USB
79 };
80
81 struct Hid_EventProperties hidEventProp = {
82 .hidEventTypes = {HID_EV_KEY},
83 .hidKeys = {HID_KEY_1, HID_KEY_SPACE, HID_KEY_BACKSPACE, HID_KEY_ENTER}
84 };
85
86 uint32_t deviceId = 0;
87 int32_t ret = g_hidDdk->CreateDevice(hidDevice, hidEventProp, deviceId);
88 ASSERT_EQ(ret, 0);
89
90 std::vector<struct Hid_EmitItem> items = {
91 {1, 0x14a, 108},
92 {3, 0, 50 },
93 {3, 1, 50 }
94 };
95
96 ret = g_hidDdk->EmitEvent(deviceId, items);
97 ASSERT_EQ(ret, 0);
98 }
99
100 HWTEST_F(HidDdkTest, EmitEvent002, TestSize.Level1)
101 {
102 std::vector<struct Hid_EmitItem> items = {
103 {1, 0x14a, 108},
104 {3, 0, 50 },
105 {3, 1, 50 }
106 };
107 uint32_t deviceId = -1;
108 int32_t ret = g_hidDdk->EmitEvent(deviceId, items);
109 ASSERT_NE(ret, 0);
110 }
111
112 HWTEST_F(HidDdkTest, DestroyDevice001, TestSize.Level1)
113 {
114 struct Hid_Device hidDevice = {
115 .deviceName = "VSoC keyboard",
116 .vendorId = 0x6006,
117 .productId = 0x6008,
118 .version = 1,
119 .bustype = BUS_USB
120 };
121
122 struct Hid_EventProperties hidEventProp = {
123 .hidEventTypes = {HID_EV_KEY},
124 .hidKeys = {HID_KEY_1, HID_KEY_SPACE, HID_KEY_BACKSPACE, HID_KEY_ENTER}
125 };
126
127 uint32_t deviceId = 0;
128 int32_t ret = g_hidDdk->CreateDevice(hidDevice, hidEventProp, deviceId);
129 ASSERT_EQ(ret, 0);
130
131 ret = g_hidDdk->DestroyDevice(deviceId);
132 ASSERT_EQ(ret, 0);
133 }
134
135 HWTEST_F(HidDdkTest, DestroyDevice002, TestSize.Level1)
136 {
137 uint32_t deviceId = -1;
138 int32_t ret = g_hidDdk->DestroyDevice(deviceId);
139 ASSERT_NE(ret, 0);
140 }
141