1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "device/bluetooth/bluetooth_device.h" 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/macros.h" 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace device { 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST(BluetoothDeviceTest, CanonicalizeAddressFormat_AcceptsAllValidFormats) { 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // There are three valid separators (':', '-', and none). 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Case shouldn't matter. 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const char* const kValidFormats[] = { 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1A:2B:3C:4D:5E:6F", 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1a:2B:3c:4D:5e:6F", 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1a:2b:3c:4d:5e:6f", 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1A-2B-3C-4D-5E-6F", 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1a-2B-3c-4D-5e-6F", 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1a-2b-3c-4d-5e-6f", 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1A2B3C4D5E6F", 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1a2B3c4D5e6F", 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1a2b3c4d5e6f", 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) }; 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) for (size_t i = 0; i < arraysize(kValidFormats); ++i) { 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SCOPED_TRACE(std::string("Input format: '") + kValidFormats[i] + "'"); 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ("1A:2B:3C:4D:5E:6F", 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) BluetoothDevice::CanonicalizeAddress(kValidFormats[i])); 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST(BluetoothDeviceTest, CanonicalizeAddressFormat_RejectsInvalidFormats) { 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const char* const kValidFormats[] = { 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Empty string. 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "", 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Too short. 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1A:2B:3C:4D:5E", 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Too long. 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1A:2B:3C:4D:5E:6F:70", 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Missing a separator. 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1A:2B:3C:4D:5E6F", 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Mixed separators. 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1A:2B-3C:4D-5E:6F", 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Invalid characters. 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1A:2B-3C:4D-5E:6X", 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Separators in the wrong place. 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "1:A2:B3:C4:D5:E6F", 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) }; 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) for (size_t i = 0; i < arraysize(kValidFormats); ++i) { 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SCOPED_TRACE(std::string("Input format: '") + kValidFormats[i] + "'"); 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(std::string(), 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) BluetoothDevice::CanonicalizeAddress(kValidFormats[i])); 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace device 60