// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "device/bluetooth/bluetooth_device.h" #include "base/macros.h" #include "testing/gtest/include/gtest/gtest.h" namespace device { TEST(BluetoothDeviceTest, CanonicalizeAddressFormat_AcceptsAllValidFormats) { // There are three valid separators (':', '-', and none). // Case shouldn't matter. const char* const kValidFormats[] = { "1A:2B:3C:4D:5E:6F", "1a:2B:3c:4D:5e:6F", "1a:2b:3c:4d:5e:6f", "1A-2B-3C-4D-5E-6F", "1a-2B-3c-4D-5e-6F", "1a-2b-3c-4d-5e-6f", "1A2B3C4D5E6F", "1a2B3c4D5e6F", "1a2b3c4d5e6f", }; for (size_t i = 0; i < arraysize(kValidFormats); ++i) { SCOPED_TRACE(std::string("Input format: '") + kValidFormats[i] + "'"); EXPECT_EQ("1A:2B:3C:4D:5E:6F", BluetoothDevice::CanonicalizeAddress(kValidFormats[i])); } } TEST(BluetoothDeviceTest, CanonicalizeAddressFormat_RejectsInvalidFormats) { const char* const kValidFormats[] = { // Empty string. "", // Too short. "1A:2B:3C:4D:5E", // Too long. "1A:2B:3C:4D:5E:6F:70", // Missing a separator. "1A:2B:3C:4D:5E6F", // Mixed separators. "1A:2B-3C:4D-5E:6F", // Invalid characters. "1A:2B-3C:4D-5E:6X", // Separators in the wrong place. "1:A2:B3:C4:D5:E6F", }; for (size_t i = 0; i < arraysize(kValidFormats); ++i) { SCOPED_TRACE(std::string("Input format: '") + kValidFormats[i] + "'"); EXPECT_EQ(std::string(), BluetoothDevice::CanonicalizeAddress(kValidFormats[i])); } } } // namespace device