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

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: DeviceRemoved obsolete in OSX. 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;
Mark Mentovai 2013/03/19 19:14:20 This doesn’t follow the Chromium convention of usi
youngki 2013/03/20 18:48:27 Done.
17 NSString* _address;
18 }
19
20 + (TestIOBluetoothDevice*)deviceWithName:(NSString*)name
21 address:(NSString*)address;
22 - (id)initWithName:(NSString*)name address:(NSString*)address;
23
24 @property (copy) NSString* name;
Mark Mentovai 2013/03/19 19:14:20 You don’t need either property to be atomic, right
youngki 2013/03/20 18:48:27 Putting nonatomic here throws an error: error: 'a
Mark Mentovai 2013/03/20 19:01:16 youngki wrote:
youngki 2013/03/20 20:30:50 Done. This has to be IOBluetoothDevice instance, s
25 @property (copy) NSString* address;
26
27 @end
28
29 @implementation TestIOBluetoothDevice
30
31 @synthesize name = _name;
32 @synthesize address = _address;
33
34 + (TestIOBluetoothDevice*)deviceWithName:(NSString*)name
35 address:(NSString*)address {
36 return [[[TestIOBluetoothDevice alloc] initWithName:name
37 address:address] autorelease];
38 }
39
40 - (id)initWithName:(NSString*)name address:(NSString*)address {
41 if (self = [super init]) {
42 [self setName:name];
43 [self setAddress:address];
44 }
45
46 return self;
47 }
48
49 - (void)dealloc {
50 [self setName:nil];
51 [self setAddress:nil];
52 [super dealloc];
53 }
54
55 - (NSString*)addressString {
56 return [self address];
57 }
58
59 @end
60
61 namespace {
62
63 class AdapterObserver : public device::BluetoothAdapter::Observer {
64 public:
65 AdapterObserver() {
66 Clear();
67 }
68
69 void Clear() {
70 num_device_added_ = 0;
71 num_device_changed_ = 0;
72 }
73
74 virtual void DeviceAdded(
75 device::BluetoothAdapter* adapter,
76 device::BluetoothDevice* device) OVERRIDE {
77 num_device_added_++;
78 }
79
80 virtual void DeviceChanged(
81 device::BluetoothAdapter* adapter,
82 device::BluetoothDevice* device) OVERRIDE {
83 num_device_changed_++;
84 }
85
86 int num_device_added() const {
87 return num_device_added_;
88 }
89
90 int num_device_changed() const {
91 return num_device_changed_;
92 }
93
94 private:
95 int num_device_added_;
96 int num_device_changed_;
97 };
98
99 } // namespace
100
10 namespace device { 101 namespace device {
11 102
12 class BluetoothAdapterMacTest : public testing::Test { 103 class BluetoothAdapterMacTest : public testing::Test {
13 public: 104 public:
14 BluetoothAdapterMacTest() 105 BluetoothAdapterMacTest()
15 : ui_task_runner_(new base::TestSimpleTaskRunner()), 106 : ui_task_runner_(new base::TestSimpleTaskRunner()),
16 adapter_(new BluetoothAdapterMac()), 107 adapter_(new BluetoothAdapterMac()),
17 adapter_mac_(static_cast<BluetoothAdapterMac*>(adapter_.get())) { 108 adapter_mac_(static_cast<BluetoothAdapterMac*>(adapter_.get())) {
18 adapter_mac_->TrackTestAdapter(ui_task_runner_); 109 adapter_mac_->TrackTestAdapter(ui_task_runner_);
110 adapter_observer_.Clear();
19 } 111 }
20 112
21 virtual void SetUp() OVERRIDE { 113 virtual void SetUp() OVERRIDE {
114 adapter_mac_->AddObserver(&adapter_observer_);
22 } 115 }
23 116
24 virtual void TearDown() OVERRIDE { 117 virtual void TearDown() OVERRIDE {
118 adapter_mac_->RemoveObserver(&adapter_observer_);
119 }
120
121 void UpdateDevices(NSArray* devices) {
122 adapter_mac_->UpdateDevices(devices);
25 } 123 }
26 124
27 protected: 125 protected:
28 scoped_refptr<base::TestSimpleTaskRunner> ui_task_runner_; 126 scoped_refptr<base::TestSimpleTaskRunner> ui_task_runner_;
29 scoped_refptr<BluetoothAdapter> adapter_; 127 scoped_refptr<BluetoothAdapter> adapter_;
30 BluetoothAdapterMac* adapter_mac_; 128 BluetoothAdapterMac* adapter_mac_;
129 AdapterObserver adapter_observer_;
31 }; 130 };
32 131
33 TEST_F(BluetoothAdapterMacTest, Poll) { 132 TEST_F(BluetoothAdapterMacTest, Poll) {
34 EXPECT_FALSE(ui_task_runner_->GetPendingTasks().empty()); 133 EXPECT_FALSE(ui_task_runner_->GetPendingTasks().empty());
35 } 134 }
36 135
136 TEST_F(BluetoothAdapterMacTest, UpdateDevices) {
137 TestIOBluetoothDevice* android_device =
138 [TestIOBluetoothDevice deviceWithName:@"android"
139 address:@"11:22:33:44:55:66"];
140 TestIOBluetoothDevice* laptop_device =
141 [TestIOBluetoothDevice deviceWithName:@"laptop"
142 address:@"77:88:99:aa:bb:cc"];
143 TestIOBluetoothDevice* iphone_device =
144 [TestIOBluetoothDevice deviceWithName:@"iphone"
145 address:@"dd:ee:ff:11:22:33"];
146 NSMutableArray* devices = [NSMutableArray arrayWithCapacity:3];
147 [devices addObject:android_device];
148 [devices addObject:laptop_device];
149 [devices addObject:iphone_device];
150 UpdateDevices(devices);
151 EXPECT_EQ(3, adapter_observer_.num_device_added());
152 adapter_observer_.Clear();
153
154 UpdateDevices(devices);
155 EXPECT_EQ(0, adapter_observer_.num_device_added());
156 EXPECT_EQ(0, adapter_observer_.num_device_changed());
157
158 [iphone_device setName:@"apple phone"];
159 UpdateDevices(devices);
160 EXPECT_EQ(0, adapter_observer_.num_device_added());
161 EXPECT_EQ(1, adapter_observer_.num_device_changed());
162 adapter_observer_.Clear();
163 }
164
37 } // namespace device 165 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698