Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Side by Side Diff: device/usb/usb_device_filter_unittest.cc

Issue 562763002: Convert device::UsbConfigDescriptor and friends to structs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add interface and endpoint descriptor iterator typedefs. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « device/usb/usb_device_filter.cc ('k') | device/usb/usb_device_handle.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "device/usb/usb_descriptors.h"
8 #include "device/usb/usb_device.h" 9 #include "device/usb/usb_device.h"
9 #include "device/usb/usb_device_filter.h" 10 #include "device/usb/usb_device_filter.h"
10 #include "device/usb/usb_device_handle.h" 11 #include "device/usb/usb_device_handle.h"
11 #include "device/usb/usb_interface.h" 12 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
14 namespace device { 15 namespace device {
15 16
16 namespace { 17 namespace {
17 18
18 class MockUsbInterfaceAltSettingDescriptor 19 using testing::NiceMock;
19 : public UsbInterfaceAltSettingDescriptor { 20 using testing::ReturnRef;
20 public:
21 MockUsbInterfaceAltSettingDescriptor(int interface_number,
22 int alternate_setting,
23 int interface_class,
24 int interface_subclass,
25 int interface_protocol)
26 : interface_number_(interface_number),
27 alternate_setting_(alternate_setting),
28 interface_class_(interface_class),
29 interface_subclass_(interface_subclass),
30 interface_protocol_(interface_protocol) {}
31
32 virtual size_t GetNumEndpoints() const OVERRIDE { return 0; }
33 virtual scoped_refptr<const UsbEndpointDescriptor> GetEndpoint(
34 size_t index) const OVERRIDE {
35 return NULL;
36 }
37 virtual int GetInterfaceNumber() const OVERRIDE { return interface_number_; }
38 virtual int GetAlternateSetting() const OVERRIDE {
39 return alternate_setting_;
40 }
41 virtual int GetInterfaceClass() const OVERRIDE { return interface_class_; }
42 virtual int GetInterfaceSubclass() const OVERRIDE {
43 return interface_subclass_;
44 }
45 virtual int GetInterfaceProtocol() const OVERRIDE {
46 return interface_protocol_;
47 }
48
49 protected:
50 virtual ~MockUsbInterfaceAltSettingDescriptor() {}
51
52 private:
53 int interface_number_;
54 int alternate_setting_;
55 int interface_class_;
56 int interface_subclass_;
57 int interface_protocol_;
58 };
59
60 typedef std::vector<scoped_refptr<UsbInterfaceAltSettingDescriptor> >
61 UsbInterfaceAltSettingDescriptorList;
62
63 class MockUsbInterfaceDescriptor : public UsbInterfaceDescriptor {
64 public:
65 MockUsbInterfaceDescriptor(
66 const UsbInterfaceAltSettingDescriptorList& alt_settings)
67 : alt_settings_(alt_settings) {}
68
69 virtual size_t GetNumAltSettings() const OVERRIDE {
70 return alt_settings_.size();
71 }
72 virtual scoped_refptr<const UsbInterfaceAltSettingDescriptor> GetAltSetting(
73 size_t index) const OVERRIDE {
74 return alt_settings_[index];
75 }
76
77 protected:
78 virtual ~MockUsbInterfaceDescriptor() {}
79
80 private:
81 UsbInterfaceAltSettingDescriptorList alt_settings_;
82 };
83
84 typedef std::vector<scoped_refptr<UsbInterfaceDescriptor> >
85 UsbInterfaceDescriptorList;
86
87 class MockUsbConfigDescriptor : public UsbConfigDescriptor {
88 public:
89 MockUsbConfigDescriptor(const UsbInterfaceDescriptorList& interfaces)
90 : interfaces_(interfaces) {}
91
92 virtual size_t GetNumInterfaces() const OVERRIDE {
93 return interfaces_.size();
94 }
95 virtual scoped_refptr<const UsbInterfaceDescriptor> GetInterface(
96 size_t index) const OVERRIDE {
97 return interfaces_[index];
98 }
99
100 protected:
101 virtual ~MockUsbConfigDescriptor() {}
102
103 private:
104 UsbInterfaceDescriptorList interfaces_;
105 };
106 21
107 class MockUsbDevice : public UsbDevice { 22 class MockUsbDevice : public UsbDevice {
108 public: 23 public:
109 MockUsbDevice(uint16 vendor_id, 24 MockUsbDevice(uint16 vendor_id, uint16 product_id, uint32 unique_id)
110 uint16 product_id, 25 : UsbDevice(vendor_id, product_id, unique_id) {}
111 uint32 unique_id,
112 scoped_refptr<UsbConfigDescriptor> config_desc)
113 : UsbDevice(vendor_id, product_id, unique_id),
114 config_desc_(config_desc) {}
115 26
116 virtual scoped_refptr<UsbDeviceHandle> Open() OVERRIDE { return NULL; } 27 MOCK_METHOD0(Open, scoped_refptr<UsbDeviceHandle>());
117 virtual bool Close(scoped_refptr<UsbDeviceHandle> handle) OVERRIDE { 28 MOCK_METHOD1(Close, bool(scoped_refptr<UsbDeviceHandle>));
118 NOTREACHED();
119 return true;
120 }
121 #if defined(OS_CHROMEOS) 29 #if defined(OS_CHROMEOS)
122 virtual void RequestUsbAccess( 30 MOCK_METHOD2(RequestUsbAccess, void(int, const base::Callback<void(bool)>&));
123 int interface_id, 31 #endif
124 const base::Callback<void(bool success)>& callback) OVERRIDE { 32 MOCK_METHOD0(GetConfiguration, const UsbConfigDescriptor&());
125 NOTREACHED();
126 }
127 #endif // OS_CHROMEOS
128 virtual scoped_refptr<UsbConfigDescriptor> ListInterfaces() OVERRIDE {
129 return config_desc_;
130 }
131
132 protected:
133 virtual ~MockUsbDevice() {}
134 33
135 private: 34 private:
136 scoped_refptr<UsbConfigDescriptor> config_desc_; 35 virtual ~MockUsbDevice() {}
137 }; 36 };
138 37
139 class UsbFilterTest : public testing::Test { 38 class UsbFilterTest : public testing::Test {
140 public: 39 public:
141 virtual void SetUp() OVERRIDE { 40 virtual void SetUp() OVERRIDE {
142 UsbInterfaceAltSettingDescriptorList alt_settings; 41 UsbInterfaceDescriptor interface;
143 alt_settings.push_back(make_scoped_refptr( 42 interface.interface_number = 1;
144 new MockUsbInterfaceAltSettingDescriptor(1, 0, 0xFF, 0x42, 1))); 43 interface.alternate_setting = 0;
44 interface.interface_class = 0xFF;
45 interface.interface_subclass = 0x42;
46 interface.interface_protocol = 0x01;
47 config_.interfaces.push_back(interface);
145 48
146 UsbInterfaceDescriptorList interfaces; 49 android_phone_ = new MockUsbDevice(0x18d1, 0x4ee2, 0);
147 interfaces.push_back( 50 ON_CALL(*android_phone_.get(), GetConfiguration())
148 make_scoped_refptr(new MockUsbInterfaceDescriptor(alt_settings))); 51 .WillByDefault(ReturnRef(config_));
149
150 scoped_refptr<UsbConfigDescriptor> config_desc(
151 new MockUsbConfigDescriptor(interfaces));
152
153 android_phone_ = new MockUsbDevice(0x18d1, 0x4ee2, 0, config_desc);
154 } 52 }
155 53
156 protected: 54 protected:
157 scoped_refptr<UsbDevice> android_phone_; 55 UsbConfigDescriptor config_;
56 scoped_refptr<MockUsbDevice> android_phone_;
158 }; 57 };
159 58
160 TEST_F(UsbFilterTest, MatchAny) { 59 TEST_F(UsbFilterTest, MatchAny) {
161 UsbDeviceFilter filter; 60 UsbDeviceFilter filter;
162 ASSERT_TRUE(filter.Matches(android_phone_)); 61 ASSERT_TRUE(filter.Matches(android_phone_));
163 } 62 }
164 63
165 TEST_F(UsbFilterTest, MatchVendorId) { 64 TEST_F(UsbFilterTest, MatchVendorId) {
166 UsbDeviceFilter filter; 65 UsbDeviceFilter filter;
167 filter.SetVendorId(0x18d1); 66 filter.SetVendorId(0x18d1);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 142
244 TEST_F(UsbFilterTest, MatchesAnyVendorIdNegative) { 143 TEST_F(UsbFilterTest, MatchesAnyVendorIdNegative) {
245 std::vector<UsbDeviceFilter> filters(1); 144 std::vector<UsbDeviceFilter> filters(1);
246 filters.back().SetVendorId(0x1d6b); 145 filters.back().SetVendorId(0x1d6b);
247 ASSERT_FALSE(UsbDeviceFilter::MatchesAny(android_phone_, filters)); 146 ASSERT_FALSE(UsbDeviceFilter::MatchesAny(android_phone_, filters));
248 } 147 }
249 148
250 } // namespace 149 } // namespace
251 150
252 } // namespace device 151 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/usb_device_filter.cc ('k') | device/usb/usb_device_handle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698