| Index: device/bluetooth/bluetooth_adapter_mac_unittest.mm
|
| diff --git a/device/bluetooth/bluetooth_adapter_mac_unittest.mm b/device/bluetooth/bluetooth_adapter_mac_unittest.mm
|
| index 9067820d68e9143a15379ab918bd174bad6163e9..735f59f6842efef5f1f550e52650b85c2e203e95 100644
|
| --- a/device/bluetooth/bluetooth_adapter_mac_unittest.mm
|
| +++ b/device/bluetooth/bluetooth_adapter_mac_unittest.mm
|
| @@ -2,11 +2,125 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#import <IOBluetooth/IOBluetoothUtilities.h>
|
| +#import <IOBluetooth/objc/IOBluetoothDevice.h>
|
| +
|
| #include "base/memory/ref_counted.h"
|
| #include "base/test/test_simple_task_runner.h"
|
| +#include "device/bluetooth/bluetooth_adapter.h"
|
| #include "device/bluetooth/bluetooth_adapter_mac.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +@interface TestIOBluetoothDevice : IOBluetoothDevice {
|
| + @private
|
| + NSString* name_;
|
| + NSString* address_;
|
| + BOOL paired_;
|
| +}
|
| +
|
| ++ (TestIOBluetoothDevice*)deviceWithName:(NSString*)name
|
| + address:(NSString*)address
|
| + paired:(BOOL)paired;
|
| +- (id)initWithName:(NSString*)name
|
| + address:(NSString*)address
|
| + paired:(BOOL)paired;
|
| +
|
| +@property (copy) NSString* name;
|
| +@property (nonatomic, copy) NSString* address;
|
| +@property (nonatomic, assign, getter=isPaired) BOOL paired;
|
| +
|
| +@end
|
| +
|
| +@implementation TestIOBluetoothDevice
|
| +
|
| +@synthesize name = name_;
|
| +@synthesize address = address_;
|
| +@synthesize paired = paired_;
|
| +
|
| ++ (TestIOBluetoothDevice*)deviceWithName:(NSString*)name
|
| + address:(NSString*)address
|
| + paired:(BOOL)paired {
|
| + return [[[TestIOBluetoothDevice alloc] initWithName:name
|
| + address:address
|
| + paired:paired] autorelease];
|
| +}
|
| +
|
| +- (id)initWithName:(NSString*)name
|
| + address:(NSString*)address
|
| + paired:(BOOL)paired {
|
| + if (self = [super init]) {
|
| + [self setName:name];
|
| + [self setAddress:address];
|
| + [self setPaired:paired];
|
| + }
|
| +
|
| + return self;
|
| +}
|
| +
|
| +- (void)dealloc {
|
| + [self setName:nil];
|
| + [self setAddress:nil];
|
| + [super dealloc];
|
| +}
|
| +
|
| +- (NSString*)addressString {
|
| + return [self address];
|
| +}
|
| +
|
| +@end
|
| +
|
| +namespace {
|
| +
|
| +class AdapterObserver : public device::BluetoothAdapter::Observer {
|
| + public:
|
| + AdapterObserver() {
|
| + Clear();
|
| + }
|
| +
|
| + void Clear() {
|
| + num_device_added_ = 0;
|
| + num_device_changed_ = 0;
|
| + num_device_removed_ = 0;
|
| + }
|
| +
|
| + virtual void DeviceAdded(
|
| + device::BluetoothAdapter* adapter,
|
| + device::BluetoothDevice* device) OVERRIDE {
|
| + num_device_added_++;
|
| + }
|
| +
|
| + virtual void DeviceChanged(
|
| + device::BluetoothAdapter* adapter,
|
| + device::BluetoothDevice* device) OVERRIDE {
|
| + num_device_changed_++;
|
| + }
|
| +
|
| + virtual void DeviceRemoved(
|
| + device::BluetoothAdapter* adapter,
|
| + device::BluetoothDevice* device) OVERRIDE {
|
| + num_device_removed_++;
|
| + }
|
| +
|
| + int num_device_added() const {
|
| + return num_device_added_;
|
| + }
|
| +
|
| + int num_device_changed() const {
|
| + return num_device_changed_;
|
| + }
|
| +
|
| + int num_device_removed() const {
|
| + return num_device_removed_;
|
| + }
|
| +
|
| + private:
|
| + int num_device_added_;
|
| + int num_device_changed_;
|
| + int num_device_removed_;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| namespace device {
|
|
|
| class BluetoothAdapterMacTest : public testing::Test {
|
| @@ -16,22 +130,90 @@ class BluetoothAdapterMacTest : public testing::Test {
|
| adapter_(new BluetoothAdapterMac()),
|
| adapter_mac_(static_cast<BluetoothAdapterMac*>(adapter_.get())) {
|
| adapter_mac_->TrackTestAdapter(ui_task_runner_);
|
| + adapter_mac_->RemoveUnpairedDevices([NSArray array]);
|
| + adapter_observer_.Clear();
|
| }
|
|
|
| virtual void SetUp() OVERRIDE {
|
| + adapter_mac_->AddObserver(&adapter_observer_);
|
| }
|
|
|
| virtual void TearDown() OVERRIDE {
|
| + adapter_mac_->RemoveObserver(&adapter_observer_);
|
| + }
|
| +
|
| + void UpdateDevices(NSArray* devices) {
|
| + adapter_mac_->UpdateDevices(devices);
|
| + }
|
| +
|
| + void RemoveUnpairedDevices(NSArray* devices) {
|
| + adapter_mac_->RemoveUnpairedDevices(devices);
|
| }
|
|
|
| protected:
|
| scoped_refptr<base::TestSimpleTaskRunner> ui_task_runner_;
|
| scoped_refptr<BluetoothAdapter> adapter_;
|
| BluetoothAdapterMac* adapter_mac_;
|
| + AdapterObserver adapter_observer_;
|
| };
|
|
|
| TEST_F(BluetoothAdapterMacTest, Poll) {
|
| EXPECT_FALSE(ui_task_runner_->GetPendingTasks().empty());
|
| }
|
|
|
| +TEST_F(BluetoothAdapterMacTest, UpdateDevices) {
|
| + TestIOBluetoothDevice* android_device =
|
| + [TestIOBluetoothDevice deviceWithName:@"android"
|
| + address:@"11:22:33:44:55:66"
|
| + paired:false];
|
| + TestIOBluetoothDevice* laptop_device =
|
| + [TestIOBluetoothDevice deviceWithName:@"laptop"
|
| + address:@"77:88:99:aa:bb:cc"
|
| + paired:false];
|
| + TestIOBluetoothDevice* iphone_device =
|
| + [TestIOBluetoothDevice deviceWithName:@"iphone"
|
| + address:@"dd:ee:ff:11:22:33"
|
| + paired:false];
|
| + NSMutableArray* devices = [NSMutableArray arrayWithCapacity:3];
|
| + [devices addObject:android_device];
|
| + [devices addObject:laptop_device];
|
| + [devices addObject:iphone_device];
|
| + UpdateDevices(devices);
|
| + EXPECT_EQ(3, adapter_observer_.num_device_added());
|
| + adapter_observer_.Clear();
|
| +
|
| + UpdateDevices(devices);
|
| + EXPECT_EQ(0, adapter_observer_.num_device_added());
|
| + EXPECT_EQ(0, adapter_observer_.num_device_changed());
|
| +
|
| + [iphone_device setName:@"apple phone"];
|
| + UpdateDevices(devices);
|
| + EXPECT_EQ(0, adapter_observer_.num_device_added());
|
| + EXPECT_EQ(1, adapter_observer_.num_device_changed());
|
| + adapter_observer_.Clear();
|
| +}
|
| +
|
| +TEST_F(BluetoothAdapterMacTest, RemoveUnpairedDevices) {
|
| + TestIOBluetoothDevice* android_device =
|
| + [TestIOBluetoothDevice deviceWithName:@"android"
|
| + address:@"11:22:33:44:55:66"
|
| + paired:true];
|
| + TestIOBluetoothDevice* laptop_device =
|
| + [TestIOBluetoothDevice deviceWithName:@"laptop"
|
| + address:@"77:88:99:aa:bb:cc"
|
| + paired:false];
|
| + NSMutableArray* devices = [NSMutableArray arrayWithCapacity:2];
|
| + [devices addObject:android_device];
|
| + [devices addObject:laptop_device];
|
| + UpdateDevices(devices);
|
| + adapter_observer_.Clear();
|
| +
|
| + RemoveUnpairedDevices([NSArray arrayWithObject:android_device]);
|
| + EXPECT_EQ(0, adapter_observer_.num_device_removed());
|
| +
|
| + RemoveUnpairedDevices([NSArray array]);
|
| + EXPECT_EQ(1, adapter_observer_.num_device_removed());
|
| +
|
| +}
|
| +
|
| } // namespace device
|
|
|