blob: d998179c0a829e6f685e472d2488b98c876d1c52 [file] [log] [blame]
/******************************************************************************
*
* Copyright (C) 2016 Google, Inc.
*
* 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:
*
* http://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.
*
******************************************************************************/
#include <gtest/gtest.h>
#include <string>
#include <vector>
using std::vector;
#include "bt_address.h"
namespace {
const std::string kTestAddr1 = "12:34:56:78:9a:bc";
const std::string kTestAddr2 = "cb:a9:87:65:43:21";
const std::string kTestAddr3 = "cb:a9:56:78:9a:bc";
const std::string kUpperMask = "ff:ff:00:00:00:00";
const std::string kLowerMask = "00:00:ff:ff:ff:ff";
const std::string kZeros = "00:00:00:00:00:00";
const vector<uint8_t> kZeros_octets = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
const vector<uint8_t> kTestAddr1_octets = {0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12};
}
namespace test_vendor_lib {
class BtAddressTest : public ::testing::Test {
public:
BtAddressTest() {}
~BtAddressTest() {}
};
TEST_F(BtAddressTest, IsValid) {
EXPECT_FALSE(BtAddress::IsValid(""));
EXPECT_FALSE(BtAddress::IsValid("000000000000"));
EXPECT_FALSE(BtAddress::IsValid("00:00:00:00:0000"));
EXPECT_FALSE(BtAddress::IsValid("00:00:00:00:00:0"));
EXPECT_FALSE(BtAddress::IsValid("00:00:00:00:00:0;"));
EXPECT_FALSE(BtAddress::IsValid("00:00:000:00:00:0;"));
EXPECT_TRUE(BtAddress::IsValid("00:00:00:00:00:00"));
EXPECT_FALSE(BtAddress::IsValid("aB:cD:eF:Gh:iJ:Kl"));
EXPECT_TRUE(BtAddress::IsValid(kTestAddr1));
EXPECT_TRUE(BtAddress::IsValid(kTestAddr2));
EXPECT_TRUE(BtAddress::IsValid(kTestAddr3));
}
TEST_F(BtAddressTest, test_comparisons) {
BtAddress btaddr1;
BtAddress btaddr1_copy;
BtAddress btaddr2;
EXPECT_TRUE(btaddr1.FromString(kTestAddr1));
EXPECT_TRUE(btaddr1_copy.FromString(kTestAddr1));
EXPECT_TRUE(btaddr2.FromString(kTestAddr2));
EXPECT_TRUE(btaddr1 == btaddr1_copy);
EXPECT_FALSE(btaddr1 == btaddr2);
EXPECT_FALSE(btaddr1 != btaddr1_copy);
EXPECT_TRUE(btaddr1 != btaddr2);
EXPECT_FALSE(btaddr1 < btaddr1_copy);
EXPECT_TRUE(btaddr1 < btaddr2);
EXPECT_FALSE(btaddr2 < btaddr1);
EXPECT_FALSE(btaddr1 > btaddr1_copy);
EXPECT_FALSE(btaddr1 > btaddr2);
EXPECT_TRUE(btaddr2 > btaddr1);
EXPECT_TRUE(btaddr1 <= btaddr1_copy);
EXPECT_TRUE(btaddr1 <= btaddr2);
EXPECT_FALSE(btaddr2 <= btaddr1);
EXPECT_TRUE(btaddr1 >= btaddr1_copy);
EXPECT_FALSE(btaddr1 >= btaddr2);
EXPECT_TRUE(btaddr2 >= btaddr1);
}
TEST_F(BtAddressTest, test_assignment) {
BtAddress btaddr1;
BtAddress btaddr2;
BtAddress btaddr3;
EXPECT_TRUE(btaddr1.FromString(kTestAddr1));
EXPECT_TRUE(btaddr2.FromString(kTestAddr2));
EXPECT_TRUE(btaddr3.FromString(kTestAddr3));
EXPECT_TRUE(btaddr1 != btaddr2);
EXPECT_TRUE(btaddr2 != btaddr3);
EXPECT_TRUE(btaddr1 != btaddr3);
btaddr1 = btaddr2;
EXPECT_TRUE(btaddr1 == btaddr2);
EXPECT_TRUE(btaddr2 != btaddr3);
EXPECT_TRUE(btaddr1 != btaddr3);
btaddr3 = btaddr2;
EXPECT_TRUE(btaddr1 == btaddr2);
EXPECT_TRUE(btaddr2 == btaddr3);
EXPECT_TRUE(btaddr1 == btaddr3);
}
TEST_F(BtAddressTest, test_bitoperations) {
BtAddress btaddr1;
BtAddress btaddr2;
BtAddress btaddr3;
BtAddress btaddr_lowmask;
BtAddress btaddr_upmask;
EXPECT_TRUE(btaddr1.FromString(kTestAddr1));
EXPECT_TRUE(btaddr2.FromString(kTestAddr2));
EXPECT_TRUE(btaddr3.FromString(kTestAddr3));
EXPECT_TRUE(btaddr_lowmask.FromString(kLowerMask));
EXPECT_TRUE(btaddr_upmask.FromString(kUpperMask));
EXPECT_TRUE(btaddr1 != btaddr2);
EXPECT_TRUE(btaddr2 != btaddr3);
btaddr1 &= btaddr_lowmask;
btaddr2 &= btaddr_upmask;
btaddr1 |= btaddr2;
EXPECT_TRUE(btaddr1 == btaddr3);
}
TEST_F(BtAddressTest, FromString) {
BtAddress btaddrA;
BtAddress btaddrB;
BtAddress btaddrC;
EXPECT_TRUE(btaddrA.FromString(kTestAddr1));
EXPECT_TRUE(btaddrA != btaddrB);
EXPECT_TRUE(btaddrC == btaddrB);
EXPECT_TRUE(btaddrB.FromString(kTestAddr1));
EXPECT_TRUE(btaddrC.FromString(kTestAddr1));
EXPECT_TRUE(btaddrA == btaddrB);
EXPECT_TRUE(btaddrC == btaddrB);
}
TEST_F(BtAddressTest, FromVector) {
BtAddress btaddr1;
EXPECT_TRUE(btaddr1.FromString(kTestAddr1));
BtAddress btaddrA;
BtAddress btaddrB;
EXPECT_TRUE(btaddrA.FromVector(kTestAddr1_octets));
EXPECT_TRUE(btaddrA != btaddrB);
EXPECT_TRUE(btaddrB.FromVector(kTestAddr1_octets));
EXPECT_TRUE(btaddrA == btaddrB);
EXPECT_TRUE(btaddr1 == btaddrB);
}
TEST_F(BtAddressTest, ToVector) {
BtAddress btaddr1;
BtAddress btaddr1_copy;
BtAddress btaddr2;
vector<uint8_t> octets1;
vector<uint8_t> octets1_copy;
vector<uint8_t> octets2;
EXPECT_TRUE(btaddr1.FromString(kTestAddr1));
EXPECT_TRUE(btaddr1_copy.FromString(kTestAddr1));
EXPECT_TRUE(btaddr2.FromString(kTestAddr2));
EXPECT_TRUE(btaddr1 == btaddr1_copy);
EXPECT_TRUE(btaddr1 != btaddr2);
btaddr1.ToVector(octets1);
btaddr2.ToVector(octets2);
btaddr1_copy.ToVector(octets1_copy);
EXPECT_TRUE(octets1 != octets2);
EXPECT_TRUE(octets1 == octets1_copy);
EXPECT_TRUE(octets1.size() == BtAddress::kOctets);
btaddr1.ToVector(octets1);
EXPECT_TRUE(octets1.size() == (2 * BtAddress::kOctets));
}
TEST_F(BtAddressTest, ToString) {
BtAddress btaddr_zeros;
BtAddress btaddr1;
EXPECT_TRUE(btaddr_zeros.FromString(kZeros));
EXPECT_TRUE(btaddr1.FromString(kTestAddr1));
EXPECT_TRUE(btaddr_zeros.ToString() == kZeros);
EXPECT_TRUE(btaddr1.ToString() == kTestAddr1);
EXPECT_TRUE(btaddr_zeros.ToString() != kTestAddr1);
EXPECT_TRUE(btaddr1.ToString() != kZeros);
}
} // namespace test_vendor_lib