1c29fa5a6Sopenharmony_ci/* 2c29fa5a6Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License. 5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at 6c29fa5a6Sopenharmony_ci * 7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c29fa5a6Sopenharmony_ci * 9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and 13c29fa5a6Sopenharmony_ci * limitations under the License. 14c29fa5a6Sopenharmony_ci */ 15c29fa5a6Sopenharmony_ci 16c29fa5a6Sopenharmony_ci#include <libudev.h> 17c29fa5a6Sopenharmony_ci 18c29fa5a6Sopenharmony_ci#include <gmock/gmock.h> 19c29fa5a6Sopenharmony_ci#include <gtest/gtest.h> 20c29fa5a6Sopenharmony_ci 21c29fa5a6Sopenharmony_ci#include "test_device.h" 22c29fa5a6Sopenharmony_ci 23c29fa5a6Sopenharmony_ciusing ::testing::ext::TestSize; 24c29fa5a6Sopenharmony_ci 25c29fa5a6Sopenharmony_ciclass UdevTestDevice : public TestDevice { 26c29fa5a6Sopenharmony_cipublic: 27c29fa5a6Sopenharmony_ci UdevTestDevice() 28c29fa5a6Sopenharmony_ci { 29c29fa5a6Sopenharmony_ci udev_ = udev_new(); 30c29fa5a6Sopenharmony_ci } 31c29fa5a6Sopenharmony_ci 32c29fa5a6Sopenharmony_ci ~UdevTestDevice() 33c29fa5a6Sopenharmony_ci { 34c29fa5a6Sopenharmony_ci if (udevDevice_ != nullptr) { 35c29fa5a6Sopenharmony_ci udevDevice_ = udev_device_unref(udevDevice_); 36c29fa5a6Sopenharmony_ci } 37c29fa5a6Sopenharmony_ci udev_unref(udev_); 38c29fa5a6Sopenharmony_ci } 39c29fa5a6Sopenharmony_ci 40c29fa5a6Sopenharmony_ci void Init(bool def = true) 41c29fa5a6Sopenharmony_ci { 42c29fa5a6Sopenharmony_ci ASSERT_NE(udev_, nullptr); 43c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(TestDevice::Init(def)); 44c29fa5a6Sopenharmony_ci udevDevice_ = udev_device_new_from_devnum(udev_, 'c', GetDevNum()); 45c29fa5a6Sopenharmony_ci ASSERT_NE(udevDevice_, nullptr); 46c29fa5a6Sopenharmony_ci } 47c29fa5a6Sopenharmony_ci 48c29fa5a6Sopenharmony_ci auto GetUdev() const 49c29fa5a6Sopenharmony_ci { 50c29fa5a6Sopenharmony_ci return udev_; 51c29fa5a6Sopenharmony_ci } 52c29fa5a6Sopenharmony_ci 53c29fa5a6Sopenharmony_ci auto GetDevice() const 54c29fa5a6Sopenharmony_ci { 55c29fa5a6Sopenharmony_ci return udevDevice_; 56c29fa5a6Sopenharmony_ci } 57c29fa5a6Sopenharmony_ci 58c29fa5a6Sopenharmony_ciprivate: 59c29fa5a6Sopenharmony_ci struct udev* udev_{}; 60c29fa5a6Sopenharmony_ci struct udev_device* udevDevice_{}; 61c29fa5a6Sopenharmony_ci}; 62c29fa5a6Sopenharmony_ci 63c29fa5a6Sopenharmony_ciclass CustomUdevTest : public ::testing::Test { 64c29fa5a6Sopenharmony_cipublic: 65c29fa5a6Sopenharmony_ci UdevTestDevice testDevice_; 66c29fa5a6Sopenharmony_ci}; 67c29fa5a6Sopenharmony_ci 68c29fa5a6Sopenharmony_ci/* 69c29fa5a6Sopenharmony_ci * Tests: 70c29fa5a6Sopenharmony_ci * udev_device_new_from_devnum (uses udev_device_new_from_syspath) 71c29fa5a6Sopenharmony_ci * udev_device_get_udev 72c29fa5a6Sopenharmony_ci * udev_device_ref 73c29fa5a6Sopenharmony_ci * udev_device_unref 74c29fa5a6Sopenharmony_ci */ 75c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestBasics, TestSize.Level1) 76c29fa5a6Sopenharmony_ci{ 77c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 78c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 79c29fa5a6Sopenharmony_ci 80c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_udev(device), testDevice_.GetUdev()); 81c29fa5a6Sopenharmony_ci 82c29fa5a6Sopenharmony_ci auto* res = udev_device_ref(device); 83c29fa5a6Sopenharmony_ci EXPECT_NE(res, nullptr); 84c29fa5a6Sopenharmony_ci EXPECT_EQ(res, device); 85c29fa5a6Sopenharmony_ci 86c29fa5a6Sopenharmony_ci res = udev_device_unref(device); 87c29fa5a6Sopenharmony_ci EXPECT_EQ(res, nullptr); 88c29fa5a6Sopenharmony_ci} 89c29fa5a6Sopenharmony_ci 90c29fa5a6Sopenharmony_ci/* 91c29fa5a6Sopenharmony_ci * Tests negative cases for: 92c29fa5a6Sopenharmony_ci * udev_device_new_from_devnum (uses udev_device_new_from_syspath) 93c29fa5a6Sopenharmony_ci * udev_device_get_udev 94c29fa5a6Sopenharmony_ci * udev_device_ref 95c29fa5a6Sopenharmony_ci * udev_device_unref 96c29fa5a6Sopenharmony_ci */ 97c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestBasicsFail, TestSize.Level1) 98c29fa5a6Sopenharmony_ci{ 99c29fa5a6Sopenharmony_ci errno = 0; 100c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_udev(nullptr), nullptr); 101c29fa5a6Sopenharmony_ci EXPECT_NE(errno, 0); 102c29fa5a6Sopenharmony_ci 103c29fa5a6Sopenharmony_ci errno = 0; 104c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_ref(nullptr), nullptr); 105c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 106c29fa5a6Sopenharmony_ci 107c29fa5a6Sopenharmony_ci errno = 0; 108c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_unref(nullptr), nullptr); 109c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 110c29fa5a6Sopenharmony_ci} 111c29fa5a6Sopenharmony_ci 112c29fa5a6Sopenharmony_ci/* 113c29fa5a6Sopenharmony_ci * Tests negative cases for: 114c29fa5a6Sopenharmony_ci * udev_device_new_from_devnum 115c29fa5a6Sopenharmony_ci */ 116c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestNewFail1, TestSize.Level1) 117c29fa5a6Sopenharmony_ci{ 118c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 119c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 120c29fa5a6Sopenharmony_ci auto devnum = testDevice_.GetDevNum(); 121c29fa5a6Sopenharmony_ci auto* udev = udev_device_get_udev(device); 122c29fa5a6Sopenharmony_ci ASSERT_NE(udev, nullptr); 123c29fa5a6Sopenharmony_ci 124c29fa5a6Sopenharmony_ci errno = 0; 125c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_devnum(nullptr, 'c', devnum), nullptr); 126c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, EINVAL); 127c29fa5a6Sopenharmony_ci 128c29fa5a6Sopenharmony_ci errno = 0; 129c29fa5a6Sopenharmony_ci // Invalid device type 130c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_devnum(udev, 'a', devnum), nullptr); 131c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, EINVAL); 132c29fa5a6Sopenharmony_ci 133c29fa5a6Sopenharmony_ci errno = 0; 134c29fa5a6Sopenharmony_ci // Wrong devnum 135c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_devnum(udev, 'b', devnum), nullptr); 136c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, ENOENT); 137c29fa5a6Sopenharmony_ci 138c29fa5a6Sopenharmony_ci errno = 0; 139c29fa5a6Sopenharmony_ci // Invalid devnum 140c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_devnum(udev, 'c', 0), nullptr); 141c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, ENOENT); 142c29fa5a6Sopenharmony_ci} 143c29fa5a6Sopenharmony_ci 144c29fa5a6Sopenharmony_ci/* 145c29fa5a6Sopenharmony_ci * Tests negative cases for: 146c29fa5a6Sopenharmony_ci * udev_device_new_from_syspath 147c29fa5a6Sopenharmony_ci */ 148c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestNewFail2, TestSize.Level1) 149c29fa5a6Sopenharmony_ci{ 150c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 151c29fa5a6Sopenharmony_ci auto* udev = udev_device_get_udev(testDevice_.GetDevice()); 152c29fa5a6Sopenharmony_ci ASSERT_NE(udev, nullptr); 153c29fa5a6Sopenharmony_ci 154c29fa5a6Sopenharmony_ci errno = 0; 155c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_syspath(nullptr, testDevice_.GetSysPath()), nullptr); 156c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, EINVAL); 157c29fa5a6Sopenharmony_ci 158c29fa5a6Sopenharmony_ci errno = 0; 159c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_syspath(udev, nullptr), nullptr); 160c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, EINVAL); 161c29fa5a6Sopenharmony_ci 162c29fa5a6Sopenharmony_ci errno = 0; 163c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_syspath(udev, "/system"), nullptr); 164c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, EINVAL); 165c29fa5a6Sopenharmony_ci 166c29fa5a6Sopenharmony_ci errno = 0; 167c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_syspath(udev, "/sys/unknown"), nullptr); 168c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, ENOENT); 169c29fa5a6Sopenharmony_ci 170c29fa5a6Sopenharmony_ci errno = 0; 171c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_new_from_syspath(udev, "/sys/char/0:0"), nullptr); 172c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, ENOENT); 173c29fa5a6Sopenharmony_ci} 174c29fa5a6Sopenharmony_ci 175c29fa5a6Sopenharmony_ci/* 176c29fa5a6Sopenharmony_ci * Tests: 177c29fa5a6Sopenharmony_ci * udev_device_get_is_initialized() 178c29fa5a6Sopenharmony_ci */ 179c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestIsInitialized, TestSize.Level1) 180c29fa5a6Sopenharmony_ci{ 181c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 182c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 183c29fa5a6Sopenharmony_ci 184c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_is_initialized(device), 1); 185c29fa5a6Sopenharmony_ci 186c29fa5a6Sopenharmony_ci errno = 0; 187c29fa5a6Sopenharmony_ci EXPECT_LT(udev_device_get_is_initialized(nullptr), 0); 188c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 189c29fa5a6Sopenharmony_ci} 190c29fa5a6Sopenharmony_ci 191c29fa5a6Sopenharmony_ci/* 192c29fa5a6Sopenharmony_ci * Tests: 193c29fa5a6Sopenharmony_ci * udev_device_get_devnode() 194c29fa5a6Sopenharmony_ci */ 195c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestGetDevnode, TestSize.Level1) 196c29fa5a6Sopenharmony_ci{ 197c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 198c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 199c29fa5a6Sopenharmony_ci 200c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_devnode(device), testDevice_.GetDevNode()); 201c29fa5a6Sopenharmony_ci 202c29fa5a6Sopenharmony_ci errno = 0; 203c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_devnode(nullptr), nullptr); 204c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 205c29fa5a6Sopenharmony_ci} 206c29fa5a6Sopenharmony_ci 207c29fa5a6Sopenharmony_ci/* 208c29fa5a6Sopenharmony_ci * Test for: 209c29fa5a6Sopenharmony_ci * udev_device_get_sysname() 210c29fa5a6Sopenharmony_ci */ 211c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestGetSysname, TestSize.Level1) 212c29fa5a6Sopenharmony_ci{ 213c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 214c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 215c29fa5a6Sopenharmony_ci 216c29fa5a6Sopenharmony_ci EXPECT_EQ(std::string("/dev/input/") + udev_device_get_sysname(device), testDevice_.GetDevNode()); 217c29fa5a6Sopenharmony_ci 218c29fa5a6Sopenharmony_ci errno = 0; 219c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_sysname(nullptr), nullptr); 220c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 221c29fa5a6Sopenharmony_ci} 222c29fa5a6Sopenharmony_ci 223c29fa5a6Sopenharmony_ci/* 224c29fa5a6Sopenharmony_ci * Test for: 225c29fa5a6Sopenharmony_ci * udev_device_get_syspath() 226c29fa5a6Sopenharmony_ci */ 227c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestGetSyspath, TestSize.Level1) 228c29fa5a6Sopenharmony_ci{ 229c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 230c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 231c29fa5a6Sopenharmony_ci 232c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_syspath(device), 233c29fa5a6Sopenharmony_ci testDevice_.GetSysPath() + std::string("/") + udev_device_get_sysname(device)); 234c29fa5a6Sopenharmony_ci 235c29fa5a6Sopenharmony_ci errno = 0; 236c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_syspath(nullptr), nullptr); 237c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 238c29fa5a6Sopenharmony_ci} 239c29fa5a6Sopenharmony_ci 240c29fa5a6Sopenharmony_ci/* 241c29fa5a6Sopenharmony_ci * Test for: 242c29fa5a6Sopenharmony_ci * udev_device_get_property_value() 243c29fa5a6Sopenharmony_ci * Properties: 244c29fa5a6Sopenharmony_ci * - DEVNAME 245c29fa5a6Sopenharmony_ci * - MAJOR 246c29fa5a6Sopenharmony_ci * - MINOR 247c29fa5a6Sopenharmony_ci */ 248c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestGetProperty, TestSize.Level1) 249c29fa5a6Sopenharmony_ci{ 250c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 251c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 252c29fa5a6Sopenharmony_ci 253c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(device, "DEVNAME"), testDevice_.GetDevNode()); 254c29fa5a6Sopenharmony_ci 255c29fa5a6Sopenharmony_ci auto devnum = testDevice_.GetDevNum(); 256c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_property_value(device, "MINOR"), std::to_string(minor(devnum))); 257c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_property_value(device, "MAJOR"), std::to_string(major(devnum))); 258c29fa5a6Sopenharmony_ci 259c29fa5a6Sopenharmony_ci errno = 0; 260c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_property_value(nullptr, "DEVNAME"), nullptr); 261c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 262c29fa5a6Sopenharmony_ci 263c29fa5a6Sopenharmony_ci errno = 0; 264c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_property_value(device, nullptr), nullptr); 265c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 266c29fa5a6Sopenharmony_ci 267c29fa5a6Sopenharmony_ci errno = 0; 268c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_property_value(device, "UNKNOWN"), nullptr); 269c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 270c29fa5a6Sopenharmony_ci} 271c29fa5a6Sopenharmony_ci 272c29fa5a6Sopenharmony_ci/* 273c29fa5a6Sopenharmony_ci * Test for: 274c29fa5a6Sopenharmony_ci * udev_device_get_parent() 275c29fa5a6Sopenharmony_ci */ 276c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestGetParent1, TestSize.Level1) 277c29fa5a6Sopenharmony_ci{ 278c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 279c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 280c29fa5a6Sopenharmony_ci 281c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 282c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 283c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_syspath(parent), testDevice_.GetSysPath()); 284c29fa5a6Sopenharmony_ci 285c29fa5a6Sopenharmony_ci errno = 0; 286c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_parent(nullptr), nullptr); 287c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, EINVAL); 288c29fa5a6Sopenharmony_ci} 289c29fa5a6Sopenharmony_ci 290c29fa5a6Sopenharmony_ci/* 291c29fa5a6Sopenharmony_ci * Test for: 292c29fa5a6Sopenharmony_ci * udev_device_get_parent_with_subsystem_devtype() 293c29fa5a6Sopenharmony_ci */ 294c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestGetParent2, TestSize.Level1) 295c29fa5a6Sopenharmony_ci{ 296c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 297c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 298c29fa5a6Sopenharmony_ci 299c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent_with_subsystem_devtype(device, "input", nullptr); 300c29fa5a6Sopenharmony_ci ASSERT_EQ(parent, nullptr); 301c29fa5a6Sopenharmony_ci EXPECT_NE(udev_device_get_syspath(parent), testDevice_.GetSysPath()); 302c29fa5a6Sopenharmony_ci 303c29fa5a6Sopenharmony_ci errno = 0; 304c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_parent_with_subsystem_devtype(nullptr, "input", nullptr), nullptr); 305c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 306c29fa5a6Sopenharmony_ci 307c29fa5a6Sopenharmony_ci errno = 0; 308c29fa5a6Sopenharmony_ci EXPECT_NE(udev_device_get_parent_with_subsystem_devtype(device, "input", ""), nullptr); 309c29fa5a6Sopenharmony_ci EXPECT_NE(errno, EINVAL); 310c29fa5a6Sopenharmony_ci 311c29fa5a6Sopenharmony_ci errno = 0; 312c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_parent_with_subsystem_devtype(device, nullptr, nullptr), nullptr); 313c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, EINVAL); 314c29fa5a6Sopenharmony_ci 315c29fa5a6Sopenharmony_ci errno = 0; 316c29fa5a6Sopenharmony_ci EXPECT_EQ(udev_device_get_parent_with_subsystem_devtype(device, "unknown", nullptr), nullptr); 317c29fa5a6Sopenharmony_ci EXPECT_EQ(errno, 0); 318c29fa5a6Sopenharmony_ci} 319c29fa5a6Sopenharmony_ci 320c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsDefault, TestSize.Level1) 321c29fa5a6Sopenharmony_ci{ 322c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init()); 323c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 324c29fa5a6Sopenharmony_ci 325c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 326c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 327c29fa5a6Sopenharmony_ci 328c29fa5a6Sopenharmony_ci std::string expectedName = std::string{"\""} + TestDevice::TEST_NAME + "\""; 329c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "NAME"), expectedName.c_str()); 330c29fa5a6Sopenharmony_ci std::stringstream expectedProduct; 331c29fa5a6Sopenharmony_ci expectedProduct << std::hex << TestDevice::TEST_BUS << '/' << TestDevice::TEST_VENDOR << '/' << 332c29fa5a6Sopenharmony_ci TestDevice::TEST_PRODUCT << '/' << TestDevice::TEST_VERSION; 333c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "PRODUCT"), expectedProduct.str().c_str()); 334c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 335c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_MOUSE"), "1"); 336c29fa5a6Sopenharmony_ci} 337c29fa5a6Sopenharmony_ci 338c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevWheel, TestSize.Level1) 339c29fa5a6Sopenharmony_ci{ 340c29fa5a6Sopenharmony_ci testDevice_.WheelSetup(); 341c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 342c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 343c29fa5a6Sopenharmony_ci 344c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 345c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 346c29fa5a6Sopenharmony_ci 347c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 348c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_KEY"), "1"); 349c29fa5a6Sopenharmony_ci} 350c29fa5a6Sopenharmony_ci 351c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsKey, TestSize.Level1) 352c29fa5a6Sopenharmony_ci{ 353c29fa5a6Sopenharmony_ci testDevice_.KeyboardSetup(); 354c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 355c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 356c29fa5a6Sopenharmony_ci 357c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 358c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 359c29fa5a6Sopenharmony_ci 360c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 361c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_KEY"), "1"); 362c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_KEYBOARD"), "1"); 363c29fa5a6Sopenharmony_ci} 364c29fa5a6Sopenharmony_ci 365c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsSwitch, TestSize.Level1) 366c29fa5a6Sopenharmony_ci{ 367c29fa5a6Sopenharmony_ci testDevice_.SwitchSetup(); 368c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 369c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 370c29fa5a6Sopenharmony_ci 371c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 372c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 373c29fa5a6Sopenharmony_ci 374c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 375c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_SWITCH"), "1"); 376c29fa5a6Sopenharmony_ci} 377c29fa5a6Sopenharmony_ci 378c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsAccel, TestSize.Level1) 379c29fa5a6Sopenharmony_ci{ 380c29fa5a6Sopenharmony_ci testDevice_.AccelerometerSetup(); 381c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 382c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 383c29fa5a6Sopenharmony_ci 384c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 385c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 386c29fa5a6Sopenharmony_ci 387c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 388c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_ACCELEROMETER"), "1"); 389c29fa5a6Sopenharmony_ci} 390c29fa5a6Sopenharmony_ci 391c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsStick, TestSize.Level1) 392c29fa5a6Sopenharmony_ci{ 393c29fa5a6Sopenharmony_ci testDevice_.StickSetup(); 394c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 395c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 396c29fa5a6Sopenharmony_ci 397c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 398c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 399c29fa5a6Sopenharmony_ci 400c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 401c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_POINTINGSTICK"), "1"); 402c29fa5a6Sopenharmony_ci} 403c29fa5a6Sopenharmony_ci 404c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsTouchpad, TestSize.Level1) 405c29fa5a6Sopenharmony_ci{ 406c29fa5a6Sopenharmony_ci testDevice_.TouchpadSetup(); 407c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 408c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 409c29fa5a6Sopenharmony_ci 410c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 411c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 412c29fa5a6Sopenharmony_ci 413c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 414c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_TOUCHPAD"), "1"); 415c29fa5a6Sopenharmony_ci} 416c29fa5a6Sopenharmony_ci 417c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsTouchscreen, TestSize.Level1) 418c29fa5a6Sopenharmony_ci{ 419c29fa5a6Sopenharmony_ci testDevice_.TouchscreenSetup(); 420c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 421c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 422c29fa5a6Sopenharmony_ci 423c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 424c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 425c29fa5a6Sopenharmony_ci 426c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 427c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_TOUCHSCREEN"), "1"); 428c29fa5a6Sopenharmony_ci} 429c29fa5a6Sopenharmony_ci 430c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsJoystick, TestSize.Level1) 431c29fa5a6Sopenharmony_ci{ 432c29fa5a6Sopenharmony_ci testDevice_.JoystickSetup(); 433c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 434c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 435c29fa5a6Sopenharmony_ci 436c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 437c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 438c29fa5a6Sopenharmony_ci 439c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 440c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_JOYSTICK"), "1"); 441c29fa5a6Sopenharmony_ci} 442c29fa5a6Sopenharmony_ci 443c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsJoystick1, TestSize.Level1) 444c29fa5a6Sopenharmony_ci{ 445c29fa5a6Sopenharmony_ci testDevice_.JoystickSetup1(); 446c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 447c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 448c29fa5a6Sopenharmony_ci 449c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 450c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 451c29fa5a6Sopenharmony_ci 452c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 453c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_JOYSTICK"), "1"); 454c29fa5a6Sopenharmony_ci} 455c29fa5a6Sopenharmony_ci 456c29fa5a6Sopenharmony_ciHWTEST_F(CustomUdevTest, TestUdevPropsTablet, TestSize.Level1) 457c29fa5a6Sopenharmony_ci{ 458c29fa5a6Sopenharmony_ci testDevice_.TabletSetup(); 459c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(testDevice_.Init(false)); 460c29fa5a6Sopenharmony_ci auto* device = testDevice_.GetDevice(); 461c29fa5a6Sopenharmony_ci 462c29fa5a6Sopenharmony_ci auto* parent = udev_device_get_parent(device); 463c29fa5a6Sopenharmony_ci ASSERT_NE(parent, nullptr); 464c29fa5a6Sopenharmony_ci 465c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT"), "1"); 466c29fa5a6Sopenharmony_ci EXPECT_STREQ(udev_device_get_property_value(parent, "ID_INPUT_TABLET"), "1"); 467c29fa5a6Sopenharmony_ci} 468