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

Side by Side Diff: device/bluetooth/bluetooth_service_record_mac_unittest.mm

Issue 12539004: Implemented BluetoothServiceRecordMac with unittest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added BluetoothServiceRecordMac::~BluetoothServiceRecordMac() 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
« no previous file with comments | « device/bluetooth/bluetooth_service_record_mac.mm ('k') | device/device.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "device/bluetooth/bluetooth_service_record_mac.h"
6
7 #import <IOBluetooth/objc/IOBluetoothSDPDataElement.h>
8 #import <IOBluetooth/objc/IOBluetoothSDPServiceRecord.h>
9 #import <IOBluetooth/objc/IOBluetoothSDPUUID.h>
10
11 #include <string>
12
13 #include "base/basictypes.h"
14 #include "base/string_number_conversions.h"
15 #include "base/strings/sys_string_conversions.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17
18 namespace {
19
20 const BluetoothSDPServiceAttributeID kServiceClassIDAttributeId = 0x0001;
21 const BluetoothSDPServiceAttributeID kProtocolDescriptorListAttributeId =
22 0x0004;
23 const BluetoothSDPServiceAttributeID kServiceNameAttributeId = 0x0100;
24
25 const uint8 kRfcommChannel = 0x0c;
26 const char kServiceName[] = "Headset Audio Gateway";
27
28 const char kExpectedRfcommUuid[] = "01234567-89ab-cdef-0123-456789abcdef";
29 const char kExpectedSerialUuid[] = "00001101-0000-1000-8000-00805f9b34fb";
30
31 const int kMaxUuidSize = 16;
32
33 } // namespace
34
35 namespace device {
36
37 class BluetoothServiceRecordMacTest : public testing::Test {
38 public:
39
40 IOBluetoothSDPUUID* ConvertUuid(const char* uuid_hex_char, size_t uuid_size) {
41 std::vector<uint8> uuid_bytes_vector;
42 uint8 uuid_buffer[kMaxUuidSize];
43 base::HexStringToBytes(uuid_hex_char, &uuid_bytes_vector);
44 std::copy(uuid_bytes_vector.begin(),
45 uuid_bytes_vector.end(),
46 uuid_buffer);
47 return [IOBluetoothSDPUUID uuidWithBytes:uuid_buffer length:uuid_size];
48 }
49
50 IOBluetoothSDPDataElement* GetServiceClassId(IOBluetoothSDPUUID* uuid) {
51 IOBluetoothSDPDataElement* uuid_element =
52 [IOBluetoothSDPDataElement withElementValue:uuid];
53 return [IOBluetoothSDPDataElement
54 withElementValue:[NSArray arrayWithObject:uuid_element]];
55 }
56
57 IOBluetoothSDPDataElement* GetProtocolDescriptorList(bool supports_rfcomm) {
58 NSMutableArray* protocol_descriptor_list_sequence = [NSMutableArray array];
59
60 const uint8 l2cap_uuid_bytes[] = { 0x01, 0x00 };
61
62 IOBluetoothSDPUUID* l2cap_uuid =
63 [IOBluetoothSDPUUID uuidWithBytes:l2cap_uuid_bytes length:2];
64 [protocol_descriptor_list_sequence
65 addObject:[NSArray arrayWithObject:l2cap_uuid]];
66
67 if (supports_rfcomm) {
68 const uint8 rfcomm_uuid_bytes[] = { 0x00, 0x03 };
69 IOBluetoothSDPUUID* rfcomm_uuid =
70 [IOBluetoothSDPUUID uuidWithBytes:rfcomm_uuid_bytes length:2];
71 NSNumber* rfcomm_channel =
72 [NSNumber numberWithUnsignedChar:kRfcommChannel];
73 [protocol_descriptor_list_sequence
74 addObject:[NSArray
75 arrayWithObjects:rfcomm_uuid, rfcomm_channel, nil]];
76 }
77
78 return [IOBluetoothSDPDataElement
79 withElementValue:protocol_descriptor_list_sequence];
80 }
81
82 IOBluetoothSDPDataElement* GetServiceName(const std::string& service_name) {
83 return [IOBluetoothSDPDataElement
84 withElementValue:base::SysUTF8ToNSString(service_name)];
85 }
86
87 IOBluetoothSDPServiceRecord* GetServiceRecord(
88 IOBluetoothSDPUUID* uuid, bool supports_rfcomm) {
89 NSMutableDictionary* service_attrs = [NSMutableDictionary dictionary];
90
91 if (uuid != nil) {
92 [service_attrs
93 setObject:GetServiceClassId(uuid)
94 forKey:[NSNumber numberWithInt:kServiceClassIDAttributeId]];
95 }
96 [service_attrs
97 setObject:GetProtocolDescriptorList(supports_rfcomm)
98 forKey:[NSNumber numberWithInt:kProtocolDescriptorListAttributeId]];
99 [service_attrs
100 setObject:GetServiceName(kServiceName)
101 forKey:[NSNumber numberWithInt:kServiceNameAttributeId]];
102
103 return [IOBluetoothSDPServiceRecord withServiceDictionary:service_attrs
104 device:nil];
105 }
106 };
107
108 TEST_F(BluetoothServiceRecordMacTest, RfcommService) {
109 const char rfcomm_uuid_bytes[] = "0123456789abcdef0123456789abcdef";
110 IOBluetoothSDPUUID* rfcomm_uuid =
111 ConvertUuid(rfcomm_uuid_bytes, sizeof(rfcomm_uuid_bytes) / 2);
112
113 BluetoothServiceRecordMac record(GetServiceRecord(rfcomm_uuid, true));
114 EXPECT_EQ(kServiceName, record.name());
115 EXPECT_TRUE(record.SupportsRfcomm());
116 EXPECT_EQ(kRfcommChannel, record.rfcomm_channel());
117 EXPECT_EQ(kExpectedRfcommUuid, record.uuid());
118 }
119
120 TEST_F(BluetoothServiceRecordMacTest, ShortUuid) {
121 const char short_uuid_bytes[] = "1101";
122 IOBluetoothSDPUUID* short_uuid =
123 ConvertUuid(short_uuid_bytes, sizeof(short_uuid_bytes) / 2);
124
125 BluetoothServiceRecordMac record(GetServiceRecord(short_uuid, false));
126 EXPECT_EQ(kExpectedSerialUuid, record.uuid());
127 }
128
129 TEST_F(BluetoothServiceRecordMacTest, MediumUuid) {
130 const char medium_uuid_bytes[] = "00001101";
131 IOBluetoothSDPUUID* medium_uuid =
132 ConvertUuid(medium_uuid_bytes, sizeof(medium_uuid_bytes) / 2);
133
134 BluetoothServiceRecordMac record(GetServiceRecord(medium_uuid, false));
135 EXPECT_EQ(kExpectedSerialUuid, record.uuid());
136 }
137
138 TEST_F(BluetoothServiceRecordMacTest, UpperCaseUuid) {
139 const char upper_case_uuid_bytes[] = "0123456789ABCDEF0123456789ABCDEF";
140 IOBluetoothSDPUUID* upper_case_uuid =
141 ConvertUuid(upper_case_uuid_bytes, sizeof(upper_case_uuid_bytes) / 2);
142
143 BluetoothServiceRecordMac record(GetServiceRecord(upper_case_uuid, false));
144 EXPECT_EQ(kExpectedRfcommUuid, record.uuid());
145 }
146
147 TEST_F(BluetoothServiceRecordMacTest, InvalidUuid) {
148 BluetoothServiceRecordMac record(GetServiceRecord(nil, false));
149 EXPECT_EQ("", record.uuid());
150 }
151
152 } // namespace device
OLDNEW
« no previous file with comments | « device/bluetooth/bluetooth_service_record_mac.mm ('k') | device/device.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698