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

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

Powered by Google App Engine
This is Rietveld 408576698