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

Side by Side Diff: device/bluetooth/bluetooth_adapter_mac_unittest.mm

Issue 12929003: Implemented BluetoothAdapterMac::AddDevices(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reverted BluetoothDevice interface. Created 7 years, 9 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #import <IOBluetooth/IOBluetoothUtilities.h>
6 #import <IOBluetooth/objc/IOBluetoothDevice.h>
7
5 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
6 #include "base/test/test_simple_task_runner.h" 9 #include "base/test/test_simple_task_runner.h"
10 #include "device/bluetooth/bluetooth_adapter.h"
7 #include "device/bluetooth/bluetooth_adapter_mac.h" 11 #include "device/bluetooth/bluetooth_adapter_mac.h"
8 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
9 13
14 @interface TestIOBluetoothDevice : IOBluetoothDevice {
15 @private
16 NSString* device_name_;
17 NSString* device_address_;
18 BOOL paired_;
19 }
20
21 + (TestIOBluetoothDevice*)deviceWithName:(NSString*)device_name
22 address:(NSString*)device_address
23 paired:(BOOL)paired;
24 - (id)initWithName:(NSString*)device_name
25 address:(NSString*)device_address
26 paired:(BOOL)paired;
27
28 @property (nonatomic, copy, getter=name) NSString* deviceName;
29 @property (nonatomic, copy, getter=addressString) NSString* deviceAddress;
30 @property (nonatomic, assign, getter=isPaired) BOOL paired;
31
32 @end
33
34 @implementation TestIOBluetoothDevice
35
36 @synthesize deviceName = device_name_;
37 @synthesize deviceAddress = device_address_;
38 @synthesize paired = paired_;
39
40 + (TestIOBluetoothDevice*)deviceWithName:(NSString*)device_name
41 address:(NSString*)device_address
42 paired:(BOOL)paired {
43 return [[[TestIOBluetoothDevice alloc] initWithName:device_name
44 address:device_address
45 paired:paired] autorelease];
46 }
47
48 - (id)initWithName:(NSString*)device_name
49 address:(NSString*)device_address
50 paired:(BOOL)paired {
51 if (self = [super init]) {
52 [self setDeviceName:device_name];
53 [self setDeviceAddress:device_address];
54 [self setPaired:paired];
55 }
56
57 return self;
58 }
59
60 - (void)dealloc {
61 [self setDeviceName:nil];
62 [self setDeviceAddress:nil];
63 [super dealloc];
64 }
65
66 @end
67
68 namespace {
69
70 class AdapterObserver : public device::BluetoothAdapter::Observer {
71 public:
72 AdapterObserver() {
73 Clear();
74 }
75
76 void Clear() {
77 num_device_added_ = 0;
78 num_device_changed_ = 0;
79 num_device_removed_ = 0;
80 }
81
82 virtual void DeviceAdded(
83 device::BluetoothAdapter* adapter,
84 device::BluetoothDevice* device) OVERRIDE {
85 num_device_added_++;
86 }
87
88 virtual void DeviceChanged(
89 device::BluetoothAdapter* adapter,
90 device::BluetoothDevice* device) OVERRIDE {
91 num_device_changed_++;
92 }
93
94 virtual void DeviceRemoved(
95 device::BluetoothAdapter* adapter,
96 device::BluetoothDevice* device) OVERRIDE {
97 num_device_removed_++;
98 }
99
100 int num_device_added() const {
101 return num_device_added_;
102 }
103
104 int num_device_changed() const {
105 return num_device_changed_;
106 }
107
108 int num_device_removed() const {
109 return num_device_removed_;
110 }
111
112 private:
113 int num_device_added_;
114 int num_device_changed_;
115 int num_device_removed_;
116 };
117
118 } // namespace
119
10 namespace device { 120 namespace device {
11 121
12 class BluetoothAdapterMacTest : public testing::Test { 122 class BluetoothAdapterMacTest : public testing::Test {
13 public: 123 public:
14 BluetoothAdapterMacTest() 124 BluetoothAdapterMacTest()
15 : ui_task_runner_(new base::TestSimpleTaskRunner()), 125 : ui_task_runner_(new base::TestSimpleTaskRunner()),
16 adapter_(new BluetoothAdapterMac()), 126 adapter_(new BluetoothAdapterMac()),
17 adapter_mac_(static_cast<BluetoothAdapterMac*>(adapter_.get())) { 127 adapter_mac_(static_cast<BluetoothAdapterMac*>(adapter_.get())) {
18 adapter_mac_->TrackTestAdapter(ui_task_runner_); 128 adapter_mac_->TrackTestAdapter(ui_task_runner_);
129 adapter_mac_->RemoveUnpairedDevices([NSArray array]);
130 adapter_observer_.Clear();
19 } 131 }
20 132
21 virtual void SetUp() OVERRIDE { 133 virtual void SetUp() OVERRIDE {
134 adapter_mac_->AddObserver(&adapter_observer_);
22 } 135 }
23 136
24 virtual void TearDown() OVERRIDE { 137 virtual void TearDown() OVERRIDE {
138 adapter_mac_->RemoveObserver(&adapter_observer_);
139 }
140
141 void AddDevices(NSArray* devices) {
142 adapter_mac_->AddDevices(devices);
143 }
144
145 void RemoveUnpairedDevices(NSArray* devices) {
146 adapter_mac_->RemoveUnpairedDevices(devices);
25 } 147 }
26 148
27 protected: 149 protected:
28 scoped_refptr<base::TestSimpleTaskRunner> ui_task_runner_; 150 scoped_refptr<base::TestSimpleTaskRunner> ui_task_runner_;
29 scoped_refptr<BluetoothAdapter> adapter_; 151 scoped_refptr<BluetoothAdapter> adapter_;
30 BluetoothAdapterMac* adapter_mac_; 152 BluetoothAdapterMac* adapter_mac_;
153 AdapterObserver adapter_observer_;
31 }; 154 };
32 155
33 TEST_F(BluetoothAdapterMacTest, Poll) { 156 TEST_F(BluetoothAdapterMacTest, Poll) {
34 EXPECT_FALSE(ui_task_runner_->GetPendingTasks().empty()); 157 EXPECT_FALSE(ui_task_runner_->GetPendingTasks().empty());
35 } 158 }
36 159
160 TEST_F(BluetoothAdapterMacTest, AddDevices) {
161 TestIOBluetoothDevice* android_device =
162 [TestIOBluetoothDevice deviceWithName:@"android"
163 address:@"11:22:33:44:55:66"
164 paired:false];
165 TestIOBluetoothDevice* laptop_device =
166 [TestIOBluetoothDevice deviceWithName:@"laptop"
167 address:@"77:88:99:aa:bb:cc"
168 paired:false];
169 TestIOBluetoothDevice* iphone_device =
170 [TestIOBluetoothDevice deviceWithName:@"iphone"
171 address:@"dd:ee:ff:11:22:33"
172 paired:false];
173 NSMutableArray* devices = [NSMutableArray arrayWithCapacity:3];
174 [devices addObject:android_device];
175 [devices addObject:laptop_device];
176 [devices addObject:iphone_device];
177 AddDevices(devices);
178 EXPECT_EQ(3, adapter_observer_.num_device_added());
179 adapter_observer_.Clear();
180
181 AddDevices(devices);
182 EXPECT_EQ(0, adapter_observer_.num_device_added());
183 EXPECT_EQ(0, adapter_observer_.num_device_changed());
184
185 [iphone_device setDeviceName:@"apple phone"];
186 AddDevices(devices);
187 EXPECT_EQ(0, adapter_observer_.num_device_added());
188 EXPECT_EQ(1, adapter_observer_.num_device_changed());
189 adapter_observer_.Clear();
190 }
191
192 TEST_F(BluetoothAdapterMacTest, RemoveUnpairedDevices) {
193 TestIOBluetoothDevice* android_device =
194 [TestIOBluetoothDevice deviceWithName:@"android"
195 address:@"11:22:33:44:55:66"
196 paired:true];
197 TestIOBluetoothDevice* laptop_device =
198 [TestIOBluetoothDevice deviceWithName:@"laptop"
199 address:@"77:88:99:aa:bb:cc"
200 paired:false];
201 NSMutableArray* devices = [NSMutableArray arrayWithCapacity:2];
202 [devices addObject:android_device];
203 [devices addObject:laptop_device];
204 AddDevices(devices);
205 adapter_observer_.Clear();
206
207 RemoveUnpairedDevices([NSArray arrayWithObject:android_device]);
208 EXPECT_EQ(0, adapter_observer_.num_device_removed());
209
210 RemoveUnpairedDevices([NSArray array]);
211 EXPECT_EQ(1, adapter_observer_.num_device_removed());
212
213 }
214
37 } // namespace device 215 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698