1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "device/hid/hid_device_filter.h" 6#include "device/hid/hid_device_info.h" 7#include "testing/gtest/include/gtest/gtest.h" 8 9namespace device { 10 11namespace { 12 13class HidFilterTest : public testing::Test { 14 public: 15 virtual void SetUp() OVERRIDE { 16 device_info_.vendor_id = 0x046d; 17 device_info_.product_id = 0xc31c; 18 19 HidCollectionInfo collection; 20 collection.usage.usage_page = HidUsageAndPage::kPageKeyboard; 21 collection.usage.usage = 0x01; 22 device_info_.collections.push_back(collection); 23 } 24 25 protected: 26 HidDeviceInfo device_info_; 27}; 28 29TEST_F(HidFilterTest, MatchAny) { 30 HidDeviceFilter filter; 31 ASSERT_TRUE(filter.Matches(device_info_)); 32} 33 34TEST_F(HidFilterTest, MatchVendorId) { 35 HidDeviceFilter filter; 36 filter.SetVendorId(0x046d); 37 ASSERT_TRUE(filter.Matches(device_info_)); 38} 39 40TEST_F(HidFilterTest, MatchVendorIdNegative) { 41 HidDeviceFilter filter; 42 filter.SetVendorId(0x18d1); 43 ASSERT_FALSE(filter.Matches(device_info_)); 44} 45 46TEST_F(HidFilterTest, MatchProductId) { 47 HidDeviceFilter filter; 48 filter.SetVendorId(0x046d); 49 filter.SetProductId(0xc31c); 50 ASSERT_TRUE(filter.Matches(device_info_)); 51} 52 53TEST_F(HidFilterTest, MatchProductIdNegative) { 54 HidDeviceFilter filter; 55 filter.SetVendorId(0x046d); 56 filter.SetProductId(0x0801); 57 ASSERT_FALSE(filter.Matches(device_info_)); 58} 59 60TEST_F(HidFilterTest, MatchUsagePage) { 61 HidDeviceFilter filter; 62 filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); 63 ASSERT_TRUE(filter.Matches(device_info_)); 64} 65 66TEST_F(HidFilterTest, MatchUsagePageNegative) { 67 HidDeviceFilter filter; 68 filter.SetUsagePage(HidUsageAndPage::kPageLed); 69 ASSERT_FALSE(filter.Matches(device_info_)); 70} 71 72TEST_F(HidFilterTest, MatchVendorAndUsagePage) { 73 HidDeviceFilter filter; 74 filter.SetVendorId(0x046d); 75 filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); 76 ASSERT_TRUE(filter.Matches(device_info_)); 77} 78 79TEST_F(HidFilterTest, MatchUsageAndPage) { 80 HidDeviceFilter filter; 81 filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); 82 filter.SetUsage(0x01); 83 ASSERT_TRUE(filter.Matches(device_info_)); 84} 85 86TEST_F(HidFilterTest, MatchUsageAndPageNegative) { 87 HidDeviceFilter filter; 88 filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); 89 filter.SetUsage(0x02); 90 ASSERT_FALSE(filter.Matches(device_info_)); 91} 92 93TEST_F(HidFilterTest, MatchEmptyFilterListNegative) { 94 std::vector<HidDeviceFilter> filters; 95 ASSERT_FALSE(HidDeviceFilter::MatchesAny(device_info_, filters)); 96} 97 98TEST_F(HidFilterTest, MatchFilterList) { 99 std::vector<HidDeviceFilter> filters; 100 HidDeviceFilter filter; 101 filter.SetUsagePage(HidUsageAndPage::kPageKeyboard); 102 filters.push_back(filter); 103 ASSERT_TRUE(HidDeviceFilter::MatchesAny(device_info_, filters)); 104} 105 106TEST_F(HidFilterTest, MatchFilterListNegative) { 107 std::vector<HidDeviceFilter> filters; 108 HidDeviceFilter filter; 109 filter.SetUsagePage(HidUsageAndPage::kPageLed); 110 filters.push_back(filter); 111 ASSERT_FALSE(HidDeviceFilter::MatchesAny(device_info_, filters)); 112} 113 114} // namespace 115 116} // namespace device 117