// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "device/bluetooth/test/mock_bluetooth_cbservice_mac.h"
#include "base/apple/foundation_util.h"
#include "device/bluetooth/test/bluetooth_test.h"
#include "device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.h"
using base::apple::ObjCCast;
@interface MockCBService () {
// Owner of this instance.
CBPeripheral* __weak _peripheral;
CBUUID* __strong _UUID;
BOOL _primary;
NSMutableArray* __strong _characteristics;
}
@end
@implementation MockCBService
@synthesize isPrimary = _primary;
- (instancetype)initWithPeripheral:(CBPeripheral*)peripheral
CBUUID:(CBUUID*)uuid
primary:(BOOL)isPrimary {
self = [super init];
if (self) {
_UUID = uuid;
_primary = isPrimary;
_peripheral = peripheral;
_characteristics = [[NSMutableArray alloc] init];
}
return self;
}
- (BOOL)isKindOfClass:(Class)aClass {
if (aClass == [CBService class] ||
[aClass isSubclassOfClass:[CBService class]]) {
return YES;
}
return [super isKindOfClass:aClass];
}
- (BOOL)isMemberOfClass:(Class)aClass {
if (aClass == [CBService class] ||
[aClass isSubclassOfClass:[CBService class]]) {
return YES;
}
return [super isKindOfClass:aClass];
}
- (CBPeripheral*)peripheral {
return _peripheral;
}
- (CBUUID*)UUID {
return _UUID;
}
- (void)addCharacteristicWithUUID:(CBUUID*)cb_uuid properties:(int)properties {
MockCBCharacteristic* characteristicMock =
[[MockCBCharacteristic alloc] initWithService:self.service
CBUUID:cb_uuid
properties:properties];
[_characteristics addObject:characteristicMock];
}
- (void)removeCharacteristicMock:(MockCBCharacteristic*)characteristicMock {
[_characteristics removeObject:characteristicMock];
}
- (CBService*)service {
return ObjCCast<CBService>(self);
}
- (NSArray*)characteristics {
return _characteristics;
}
@end