1/****************************************************************************** 2 * 3 * Copyright (C) 2017 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19#include <gtest/gtest.h> 20 21#include "raw_address.h" 22 23static const char* test_addr = "12:34:56:78:9a:bc"; 24static const char* test_addr2 = "cb:a9:87:65:43:21"; 25 26TEST(RawAddressUnittest, test_is_empty) { 27 RawAddress empty; 28 RawAddress::FromString("00:00:00:00:00:00", empty); 29 ASSERT_TRUE(empty.IsEmpty()); 30 31 RawAddress not_empty; 32 RawAddress::FromString("00:00:00:00:00:01", not_empty); 33 ASSERT_FALSE(not_empty.IsEmpty()); 34} 35 36TEST(RawAddressUnittest, test_to_from_str) { 37 RawAddress bdaddr; 38 RawAddress::FromString(test_addr, bdaddr); 39 40 ASSERT_EQ(0x12, bdaddr.address[0]); 41 ASSERT_EQ(0x34, bdaddr.address[1]); 42 ASSERT_EQ(0x56, bdaddr.address[2]); 43 ASSERT_EQ(0x78, bdaddr.address[3]); 44 ASSERT_EQ(0x9A, bdaddr.address[4]); 45 ASSERT_EQ(0xBC, bdaddr.address[5]); 46 47 std::string ret = bdaddr.ToString(); 48 49 ASSERT_STREQ(test_addr, ret.c_str()); 50} 51 52TEST(RawAddressTest, test_equals) { 53 RawAddress bdaddr1; 54 RawAddress bdaddr2; 55 RawAddress bdaddr3; 56 RawAddress::FromString(test_addr, bdaddr1); 57 RawAddress::FromString(test_addr, bdaddr2); 58 EXPECT_TRUE(bdaddr1 == bdaddr2); 59 EXPECT_FALSE(bdaddr1 != bdaddr2); 60 EXPECT_TRUE(bdaddr1 == bdaddr1); 61 EXPECT_FALSE(bdaddr1 != bdaddr1); 62 63 RawAddress::FromString(test_addr2, bdaddr3); 64 EXPECT_FALSE(bdaddr2 == bdaddr3); 65 EXPECT_TRUE(bdaddr2 != bdaddr3); 66} 67 68TEST(RawAddressTest, test_less_than) { 69 RawAddress bdaddr1; 70 RawAddress bdaddr2; 71 RawAddress bdaddr3; 72 RawAddress::FromString(test_addr, bdaddr1); 73 RawAddress::FromString(test_addr, bdaddr2); 74 EXPECT_FALSE(bdaddr1 < bdaddr2); 75 EXPECT_FALSE(bdaddr1 < bdaddr1); 76 77 RawAddress::FromString(test_addr2, bdaddr3); 78 EXPECT_TRUE(bdaddr2 < bdaddr3); 79 EXPECT_FALSE(bdaddr3 < bdaddr2); 80} 81 82TEST(RawAddressTest, test_more_than) { 83 RawAddress bdaddr1; 84 RawAddress bdaddr2; 85 RawAddress bdaddr3; 86 RawAddress::FromString(test_addr, bdaddr1); 87 RawAddress::FromString(test_addr, bdaddr2); 88 EXPECT_FALSE(bdaddr1 > bdaddr2); 89 EXPECT_FALSE(bdaddr1 > bdaddr1); 90 91 RawAddress::FromString(test_addr2, bdaddr3); 92 EXPECT_FALSE(bdaddr2 > bdaddr3); 93 EXPECT_TRUE(bdaddr3 > bdaddr2); 94} 95 96TEST(RawAddressTest, test_less_than_or_equal) { 97 RawAddress bdaddr1; 98 RawAddress bdaddr2; 99 RawAddress bdaddr3; 100 RawAddress::FromString(test_addr, bdaddr1); 101 RawAddress::FromString(test_addr, bdaddr2); 102 EXPECT_TRUE(bdaddr1 <= bdaddr2); 103 EXPECT_TRUE(bdaddr1 <= bdaddr1); 104 105 RawAddress::FromString(test_addr2, bdaddr3); 106 EXPECT_TRUE(bdaddr2 <= bdaddr3); 107 EXPECT_FALSE(bdaddr3 <= bdaddr2); 108} 109 110TEST(RawAddressTest, test_more_than_or_equal) { 111 RawAddress bdaddr1; 112 RawAddress bdaddr2; 113 RawAddress bdaddr3; 114 RawAddress::FromString(test_addr, bdaddr1); 115 RawAddress::FromString(test_addr, bdaddr2); 116 EXPECT_TRUE(bdaddr1 >= bdaddr2); 117 EXPECT_TRUE(bdaddr1 >= bdaddr1); 118 119 RawAddress::FromString(test_addr2, bdaddr3); 120 EXPECT_FALSE(bdaddr2 >= bdaddr3); 121 EXPECT_TRUE(bdaddr3 >= bdaddr2); 122} 123 124TEST(RawAddressTest, test_copy) { 125 RawAddress bdaddr1; 126 RawAddress bdaddr2; 127 RawAddress::FromString(test_addr, bdaddr1); 128 bdaddr2 = bdaddr1; 129 130 EXPECT_TRUE(bdaddr1 == bdaddr2); 131} 132 133TEST(RawAddressTest, IsValidAddress) { 134 EXPECT_FALSE(RawAddress::IsValidAddress("")); 135 EXPECT_FALSE(RawAddress::IsValidAddress("000000000000")); 136 EXPECT_FALSE(RawAddress::IsValidAddress("00:00:00:00:0000")); 137 EXPECT_FALSE(RawAddress::IsValidAddress("00:00:00:00:00:0")); 138 EXPECT_FALSE(RawAddress::IsValidAddress("00:00:00:00:00:0;")); 139 EXPECT_TRUE(RawAddress::IsValidAddress("00:00:00:00:00:00")); 140 EXPECT_TRUE(RawAddress::IsValidAddress("AB:cd:00:00:00:00")); 141 EXPECT_FALSE(RawAddress::IsValidAddress("aB:cD:eF:Gh:iJ:Kl")); 142} 143 144TEST(RawAddressTest, BdAddrFromString) { 145 RawAddress addr; 146 memset(&addr, 0, sizeof(addr)); 147 148 EXPECT_TRUE(RawAddress::FromString("00:00:00:00:00:00", addr)); 149 const RawAddress result0 = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; 150 EXPECT_EQ(0, memcmp(&addr, &result0, sizeof(addr))); 151 152 EXPECT_TRUE(RawAddress::FromString("ab:01:4C:d5:21:9f", addr)); 153 const RawAddress result1 = {{0xab, 0x01, 0x4c, 0xd5, 0x21, 0x9f}}; 154 EXPECT_EQ(0, memcmp(&addr, &result1, sizeof(addr))); 155} 156