// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include #include "build/build_config.h" #include "device/hid/hid_device_filter.h" #include "device/hid/hid_device_info.h" #include "device/hid/test_report_descriptors.h" #include "testing/gtest/include/gtest/gtest.h" namespace device { namespace { #if defined(OS_MACOSX) const uint64_t kTestDeviceId = 42; #else const char* kTestDeviceId = "device1"; #endif } // namespace class HidFilterTest : public testing::Test { public: void SetUp() override { device_info_ = new HidDeviceInfo( kTestDeviceId, 0x046d, 0xc31c, "Test Keyboard", "123ABC", kHIDBusTypeUSB, std::vector(kKeyboard, kKeyboard + kKeyboardSize)); } protected: scoped_refptr device_info_; }; TEST_F(HidFilterTest, MatchAny) { HidDeviceFilter filter; ASSERT_TRUE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchVendorId) { HidDeviceFilter filter; filter.SetVendorId(0x046d); ASSERT_TRUE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchVendorIdNegative) { HidDeviceFilter filter; filter.SetVendorId(0x18d1); ASSERT_FALSE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchProductId) { HidDeviceFilter filter; filter.SetVendorId(0x046d); filter.SetProductId(0xc31c); ASSERT_TRUE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchProductIdNegative) { HidDeviceFilter filter; filter.SetVendorId(0x046d); filter.SetProductId(0x0801); ASSERT_FALSE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchUsagePage) { HidDeviceFilter filter; filter.SetUsagePage(HidUsageAndPage::kPageGenericDesktop); ASSERT_TRUE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchUsagePageNegative) { HidDeviceFilter filter; filter.SetUsagePage(HidUsageAndPage::kPageLed); ASSERT_FALSE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchVendorAndUsagePage) { HidDeviceFilter filter; filter.SetVendorId(0x046d); filter.SetUsagePage(HidUsageAndPage::kPageGenericDesktop); ASSERT_TRUE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchUsageAndPage) { HidDeviceFilter filter; filter.SetUsagePage(HidUsageAndPage::kPageGenericDesktop); filter.SetUsage(HidUsageAndPage::kGenericDesktopKeyboard); ASSERT_TRUE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchUsageAndPageNegative) { HidDeviceFilter filter; filter.SetUsagePage(HidUsageAndPage::kPageGenericDesktop); filter.SetUsage(0x02); ASSERT_FALSE(filter.Matches(device_info_)); } TEST_F(HidFilterTest, MatchEmptyFilterListNegative) { std::vector filters; ASSERT_FALSE(HidDeviceFilter::MatchesAny(device_info_, filters)); } TEST_F(HidFilterTest, MatchFilterList) { std::vector filters; HidDeviceFilter filter; filter.SetUsagePage(HidUsageAndPage::kPageGenericDesktop); filters.push_back(filter); ASSERT_TRUE(HidDeviceFilter::MatchesAny(device_info_, filters)); } TEST_F(HidFilterTest, MatchFilterListNegative) { std::vector filters; HidDeviceFilter filter; filter.SetUsagePage(HidUsageAndPage::kPageLed); filters.push_back(filter); ASSERT_FALSE(HidDeviceFilter::MatchesAny(device_info_, filters)); } } // namespace device