1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/strings/string_util.h" 6 #include "chrome/browser/extensions/api/serial/serial_port_enumerator.h" 7 #include "chrome/common/extensions/extension_test_util.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 10 TEST(SerialPortEnumeratorTest, ValidPortNamePatterns) { 11 #if defined(OS_WIN) 12 // TODO(miket): implement 13 #else 14 const extensions::SerialPortEnumerator::StringSet port_patterns( 15 extensions::SerialPortEnumerator::GenerateValidPatterns()); 16 17 const char *kValidNames[] = { 18 "/dev/867serial5309", 19 "/dev/tty.usbmodem999999", 20 "/dev/ttyACM0", 21 "/dev/xxxxxmodemxxxxxxxxxx", 22 }; 23 24 for (size_t i = 0; i < arraysize(kValidNames); ++i) { 25 std::set<std::string>::const_iterator j = port_patterns.begin(); 26 for (; j != port_patterns.end(); ++j) { 27 if (MatchPattern(kValidNames[i], *j)) { 28 break; 29 } 30 } 31 EXPECT_TRUE(j != port_patterns.end()) << kValidNames[i] << 32 " should have matched at least one pattern"; 33 } 34 #endif 35 } 36 37 TEST(SerialPortEnumeratorTest, InvalidPortNamePatterns) { 38 #if defined(OS_WIN) 39 #else 40 const extensions::SerialPortEnumerator::StringSet port_patterns( 41 extensions::SerialPortEnumerator::GenerateValidPatterns()); 42 43 const char *kInvalidNames[] = { 44 "", 45 ".", 46 "..", 47 "//COM0", 48 "/dev/../home/you/your_secrets", 49 "/dev/cdrom", 50 "/dev/laserbeam", 51 "/home/you/your_secrets", 52 "/proc/cpuinfo", 53 "COM0", 54 "\\\\COM0", 55 "modem", 56 "serial", 57 "tty", 58 }; 59 60 for (size_t i = 0; i < arraysize(kInvalidNames); ++i) { 61 std::set<std::string>::const_iterator j = port_patterns.begin(); 62 for (; j != port_patterns.end(); ++j) 63 EXPECT_FALSE(MatchPattern(kInvalidNames[i], *j)) << 64 kInvalidNames[i] << " should not have matched " << *j; 65 } 66 #endif 67 } 68