180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// 280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// Copyright (C) 2015 Google, Inc. 380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// 480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// Licensed under the Apache License, Version 2.0 (the "License"); 580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// you may not use this file except in compliance with the License. 680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// You may obtain a copy of the License at: 780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// 880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// http://www.apache.org/licenses/LICENSE-2.0 980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// 1080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// Unless required by applicable law or agreed to in writing, software 1180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// distributed under the License is distributed on an "AS IS" BASIS, 1280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// See the License for the specific language governing permissions and 1480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// limitations under the License. 1580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray// 1680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 1780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray#include <gtest/gtest.h> 1880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 19234138e2606dd7a54fbcc540643511abc0a3598dArman Uguray#include "service/common/bluetooth/gatt_identifier.h" 20234138e2606dd7a54fbcc540643511abc0a3598dArman Uguray#include "service/common/bluetooth/uuid.h" 2180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 2280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguraynamespace bluetooth { 2380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguraynamespace { 2480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 2580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Ugurayconst std::string kAddr0 = "00:01:02:03:04:05"; 2680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Ugurayconst std::string kAddr1 = "06:07:08:08:0a:0b"; 2780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 2880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Ugurayconst UUID kUUID0; 2980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Ugurayconst UUID kUUID1("180d"); 3080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 3180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Ugurayconst int kId0 = 0; 3280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Ugurayconst int kId1 = 1; 3380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 3480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman UgurayTEST(GattIdentifierTest, ServiceId) { 3580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto service0 = GattIdentifier::CreateServiceId(kAddr0, kId0, kUUID0, true); 3680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 3780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(service0->IsService()); 3880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(service0->IsCharacteristic()); 3980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(service0->IsDescriptor()); 4080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 4180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(service0->GetOwningServiceId()); 4280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(service0->GetOwningCharacteristicId()); 4380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 4480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray // Create different variants, swapping one entry at a time. 4580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto service1 = GattIdentifier::CreateServiceId(kAddr1, kId0, kUUID0, true); 4680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto service2 = GattIdentifier::CreateServiceId(kAddr0, kId1, kUUID0, true); 4780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto service3 = GattIdentifier::CreateServiceId(kAddr0, kId0, kUUID1, true); 4880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto service4 = GattIdentifier::CreateServiceId(kAddr0, kId0, kUUID0, false); 4980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 5080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*service1 != *service0); 5180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*service2 != *service0); 5280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*service3 != *service0); 5380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*service4 != *service0); 5480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 5580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray GattIdentifier service_copy = *service0; 5680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(service_copy == *service0); 5780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray} 5880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 5980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman UgurayTEST(GattIdentifierTest, CharacteristicId) { 6080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto service0 = GattIdentifier::CreateServiceId(kAddr0, kId0, kUUID0, true); 6180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto char0 = GattIdentifier::CreateCharacteristicId(kId1, kUUID1, *service0); 6280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 6380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(char0->IsService()); 6480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(char0->IsCharacteristic()); 6580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(char0->IsDescriptor()); 6680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 6780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(char0->GetOwningCharacteristicId()); 6880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*char0->GetOwningServiceId() == *service0); 6980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 7080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto service1 = GattIdentifier::CreateServiceId(kAddr1, kId0, kUUID0, true); 7180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 7280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto char1 = GattIdentifier::CreateCharacteristicId(kId0, kUUID1, *service0); 7380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto char2 = GattIdentifier::CreateCharacteristicId(kId1, kUUID0, *service0); 7480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto char3 = GattIdentifier::CreateCharacteristicId(kId1, kUUID1, *service1); 7580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 7680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*char1 != *char0); 7780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*char2 != *char0); 7880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*char3 != *char0); 7980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 8080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray GattIdentifier char_copy = *char0; 8180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(char_copy == *char0); 8280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 8380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*service0 != *char0); 8480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray} 8580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 8680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman UgurayTEST(GattIdentifierTest, DescriptorId) { 8780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto service0 = GattIdentifier::CreateServiceId(kAddr0, kId0, kUUID0, true); 8880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto char0 = GattIdentifier::CreateCharacteristicId(kId1, kUUID1, *service0); 8980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto desc0 = GattIdentifier::CreateDescriptorId(kId0, kUUID0, *char0); 9080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 9180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(desc0->IsService()); 9280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_FALSE(desc0->IsCharacteristic()); 9380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(desc0->IsDescriptor()); 9480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 9580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*desc0->GetOwningCharacteristicId() == *char0); 9680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*desc0->GetOwningServiceId() == *service0); 9780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 9880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto char1 = GattIdentifier::CreateCharacteristicId(kId0, kUUID1, *service0); 9980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 10080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto desc1 = GattIdentifier::CreateDescriptorId(kId1, kUUID0, *char0); 10180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto desc2 = GattIdentifier::CreateDescriptorId(kId0, kUUID1, *char0); 10280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray auto desc3 = GattIdentifier::CreateDescriptorId(kId0, kUUID0, *char1); 10380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 10480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*desc1 != *desc0); 10580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*desc2 != *desc0); 10680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*desc3 != *desc0); 10780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 10880826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray GattIdentifier desc_copy = *desc0; 10980826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(desc_copy == *desc0); 11080826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 11180826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*service0 != *char0); 11280826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*service0 != *desc0); 11380826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray EXPECT_TRUE(*char0 != *desc0); 11480826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray} 11580826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray 11680826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray} // namespace 11780826c9d492b7d6c5d2a14b6e538510b8ce92dc5Arman Uguray} // namespace bluetooth 118