mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-16 15:36:12 -04:00
Add BLE conversion utils
PiperOrigin-RevId: 547958170
This commit is contained in:
committed by
Copybara-Service
parent
47de9bdfaa
commit
96348b6ba7
@@ -24,6 +24,7 @@ objc_library(
|
||||
testonly = True,
|
||||
srcs = [
|
||||
"GNCBLEGATTCharacteristicTest.mm",
|
||||
"GNCBLEUtilsTest.mm",
|
||||
"GNCBleTest.mm",
|
||||
"GNCBluetoothAdapterTest.mm",
|
||||
"GNCCryptoTest.mm",
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
// Copyright 2023 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// https://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#import <CoreBluetooth/CoreBluetooth.h>
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "internal/platform/implementation/apple/Mediums/BLEv2/GNCBLEGATTCharacteristic.h"
|
||||
#import "internal/platform/implementation/apple/ble_utils.h"
|
||||
|
||||
#include "internal/platform/implementation/ble_v2.h"
|
||||
|
||||
using GattCharacteristic = ::nearby::api::ble_v2::GattCharacteristic;
|
||||
using Property = ::nearby::api::ble_v2::GattCharacteristic::Property;
|
||||
using Permission = ::nearby::api::ble_v2::GattCharacteristic::Permission;
|
||||
using WriteType = ::nearby::api::ble_v2::GattClient::WriteType;
|
||||
using Uuid = ::nearby::Uuid;
|
||||
|
||||
@interface GNCBLEUtilsTest : XCTestCase
|
||||
@end
|
||||
|
||||
@implementation GNCBLEUtilsTest
|
||||
|
||||
#pragma mark - C++ to Objective-C
|
||||
|
||||
- (void)testCBUUID16FromCPP {
|
||||
CBUUID *expected = [CBUUID UUIDWithString:@"FEF3"];
|
||||
CBUUID *actual = ::nearby::apple::CBUUID16FromCPP(Uuid(0x0000FEF300001000, 0x800000805F9B34FB));
|
||||
XCTAssertEqualObjects(actual.UUIDString, expected.UUIDString);
|
||||
}
|
||||
|
||||
- (void)testCBUUID128FromCPP {
|
||||
CBUUID *expected = [CBUUID UUIDWithString:@"0000FEF3-0000-1000-8000-00805F9B34FB"];
|
||||
CBUUID *actual = ::nearby::apple::CBUUID128FromCPP(Uuid(0x0000FEF300001000, 0x800000805F9B34FB));
|
||||
XCTAssertEqualObjects(actual.UUIDString, expected.UUIDString);
|
||||
}
|
||||
|
||||
- (void)testCBCharacteristicWriteTypeFromCPPWithResponse {
|
||||
CBCharacteristicWriteType expected = CBCharacteristicWriteWithResponse;
|
||||
CBCharacteristicWriteType actual =
|
||||
::nearby::apple::CBCharacteristicWriteTypeFromCPP(WriteType::kWithResponse);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCBCharacteristicWriteTypeFromCPPWithoutResponse {
|
||||
CBCharacteristicWriteType expected = CBCharacteristicWriteWithoutResponse;
|
||||
CBCharacteristicWriteType actual =
|
||||
::nearby::apple::CBCharacteristicWriteTypeFromCPP(WriteType::kWithoutResponse);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCBCharacteristicPropertiesFromCPPEmptyProperty {
|
||||
CBCharacteristicProperties expected = 0;
|
||||
CBCharacteristicProperties actual =
|
||||
::nearby::apple::CBCharacteristicPropertiesFromCPP(Property::kNone);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCBCharacteristicPropertiesFromCPPSingleProperty {
|
||||
CBCharacteristicProperties expected = CBCharacteristicPropertyRead;
|
||||
CBCharacteristicProperties actual =
|
||||
::nearby::apple::CBCharacteristicPropertiesFromCPP(Property::kRead);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCBCharacteristicPropertiesFromCPPMultipleProperties {
|
||||
CBCharacteristicProperties expected = CBCharacteristicPropertyWrite |
|
||||
CBCharacteristicPropertyNotify |
|
||||
CBCharacteristicPropertyIndicate;
|
||||
CBCharacteristicProperties actual = ::nearby::apple::CBCharacteristicPropertiesFromCPP(
|
||||
Property::kWrite | Property::kNotify | Property::kIndicate);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCBAttributePermissionsFromCPPEmptyPermission {
|
||||
CBAttributePermissions expected = 0;
|
||||
CBAttributePermissions actual = ::nearby::apple::CBAttributePermissionsFromCPP(Permission::kNone);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCBAttributePermissionsFromCPPSinglePermission {
|
||||
CBAttributePermissions expected = CBAttributePermissionsReadable;
|
||||
CBAttributePermissions actual =
|
||||
::nearby::apple::CBAttributePermissionsFromCPP(Permission::kRead);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCBAttributePermissionsFromCPPMultiplePermissions {
|
||||
CBAttributePermissions expected =
|
||||
CBAttributePermissionsReadable | CBAttributePermissionsWriteable;
|
||||
CBAttributePermissions actual =
|
||||
::nearby::apple::CBAttributePermissionsFromCPP(Permission::kRead | Permission::kWrite);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testObjCGATTCharacteristicFromCPP {
|
||||
CBUUID *characteristicUUID = [CBUUID UUIDWithString:@"00000000-0000-3000-8000-000000000000"];
|
||||
CBUUID *serviceUUID = [CBUUID UUIDWithString:@"0000FEF3-0000-1000-8000-00805F9B34FB"];
|
||||
CBAttributePermissions permissions = CBAttributePermissionsReadable;
|
||||
CBCharacteristicProperties properties = CBCharacteristicPropertyRead;
|
||||
|
||||
GattCharacteristic characteristic = {Uuid(0x0000000000003000, 0x8000000000000000),
|
||||
Uuid(0x0000FEF300001000, 0x800000805F9B34FB),
|
||||
Permission::kRead, Property::kRead};
|
||||
|
||||
GNCBLEGATTCharacteristic *actual = ::nearby::apple::ObjCGATTCharacteristicFromCPP(characteristic);
|
||||
XCTAssertEqualObjects(actual.characteristicUUID, characteristicUUID);
|
||||
XCTAssertEqualObjects(actual.serviceUUID, serviceUUID);
|
||||
XCTAssertEqual(actual.permissions, permissions);
|
||||
XCTAssertEqual(actual.properties, properties);
|
||||
}
|
||||
|
||||
#pragma mark - Objective-C to C++
|
||||
|
||||
- (void)testCPPUUIDFromObjC16Bit {
|
||||
Uuid expected = Uuid(0x0000FEF300001000, 0x800000805F9B34FB);
|
||||
Uuid actual = ::nearby::apple::CPPUUIDFromObjC([CBUUID UUIDWithString:@"FEF3"]);
|
||||
XCTAssertEqualObjects(@(std::string(actual).c_str()), @(std::string(expected).c_str()));
|
||||
}
|
||||
|
||||
- (void)testCPPUUIDFromObjC128Bit {
|
||||
Uuid expected = Uuid(0x0000FEF300001000, 0x800000805F9B34FB);
|
||||
Uuid actual = ::nearby::apple::CPPUUIDFromObjC(
|
||||
[CBUUID UUIDWithString:@"0000FEF3-0000-1000-8000-00805F9B34FB"]);
|
||||
XCTAssertEqualObjects(@(std::string(actual).c_str()), @(std::string(expected).c_str()));
|
||||
}
|
||||
|
||||
- (void)testCPPGATTCharacteristicPropertyFromObjCEmptyProperty {
|
||||
Property expected = Property::kNone;
|
||||
Property actual = ::nearby::apple::CPPGATTCharacteristicPropertyFromObjC(0);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCPPGATTCharacteristicPropertyFromObjCSingleProperty {
|
||||
Property expected = Property::kRead;
|
||||
Property actual =
|
||||
::nearby::apple::CPPGATTCharacteristicPropertyFromObjC(CBCharacteristicPropertyRead);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCPPGATTCharacteristicPropertyFromObjCMultipleProperties {
|
||||
Property expected = Property::kWrite | Property::kNotify | Property::kIndicate;
|
||||
Property actual = ::nearby::apple::CPPGATTCharacteristicPropertyFromObjC(
|
||||
CBCharacteristicPropertyWrite | CBCharacteristicPropertyNotify |
|
||||
CBCharacteristicPropertyIndicate);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCPPGATTCharacteristicPermissionFromObjCEmptyPermission {
|
||||
Permission expected = Permission::kNone;
|
||||
Permission actual = ::nearby::apple::CPPGATTCharacteristicPermissionFromObjC(0);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCPPGATTCharacteristicPermissionFromObjCSinglePermission {
|
||||
Permission expected = Permission::kRead;
|
||||
Permission actual =
|
||||
::nearby::apple::CPPGATTCharacteristicPermissionFromObjC(CBAttributePermissionsReadable);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCPPGATTCharacteristicPermissionFromObjCMultiplePermissions {
|
||||
Permission expected = Permission::kRead | Permission::kWrite;
|
||||
Permission actual = ::nearby::apple::CPPGATTCharacteristicPermissionFromObjC(
|
||||
CBAttributePermissionsReadable | CBAttributePermissionsWriteable);
|
||||
XCTAssertEqual(actual, expected);
|
||||
}
|
||||
|
||||
- (void)testCPPGATTCharacteristicFromObjC {
|
||||
CBUUID *characteristicUUID = [CBUUID UUIDWithString:@"00000000-0000-3000-8000-000000000000"];
|
||||
CBUUID *serviceUUID = [CBUUID UUIDWithString:@"0000FEF3-0000-1000-8000-00805F9B34FB"];
|
||||
CBAttributePermissions permissions = CBAttributePermissionsReadable;
|
||||
CBCharacteristicProperties properties = CBCharacteristicPropertyRead;
|
||||
|
||||
GNCBLEGATTCharacteristic *characteristic =
|
||||
[[GNCBLEGATTCharacteristic alloc] initWithUUID:characteristicUUID
|
||||
serviceUUID:serviceUUID
|
||||
permissions:permissions
|
||||
properties:properties];
|
||||
|
||||
GattCharacteristic actual = ::nearby::apple::CPPGATTCharacteristicFromObjC(characteristic);
|
||||
XCTAssertEqual(actual.uuid, Uuid(0x0000000000003000, 0x8000000000000000));
|
||||
XCTAssertEqual(actual.service_uuid, Uuid(0x0000FEF300001000, 0x800000805F9B34FB));
|
||||
XCTAssertEqual(actual.permission, Permission::kRead);
|
||||
XCTAssertEqual(actual.property, Property::kRead);
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user