| // Copyright (c) 2012 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 "base/strings/string_util.h" |
| #include "chrome/browser/extensions/api/serial/serial_port_enumerator.h" |
| #include "chrome/common/extensions/extension_test_util.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| TEST(SerialPortEnumeratorTest, ValidPortNamePatterns) { |
| #if defined(OS_WIN) |
| // TODO(miket): implement |
| #else |
| const extensions::SerialPortEnumerator::StringSet port_patterns( |
| extensions::SerialPortEnumerator::GenerateValidPatterns()); |
| |
| const char *kValidNames[] = { |
| "/dev/867serial5309", |
| "/dev/tty.usbmodem999999", |
| "/dev/ttyACM0", |
| "/dev/xxxxxmodemxxxxxxxxxx", |
| }; |
| |
| for (size_t i = 0; i < arraysize(kValidNames); ++i) { |
| std::set<std::string>::const_iterator j = port_patterns.begin(); |
| for (; j != port_patterns.end(); ++j) { |
| if (MatchPattern(kValidNames[i], *j)) { |
| break; |
| } |
| } |
| EXPECT_TRUE(j != port_patterns.end()) << kValidNames[i] << |
| " should have matched at least one pattern"; |
| } |
| #endif |
| } |
| |
| TEST(SerialPortEnumeratorTest, InvalidPortNamePatterns) { |
| #if defined(OS_WIN) |
| #else |
| const extensions::SerialPortEnumerator::StringSet port_patterns( |
| extensions::SerialPortEnumerator::GenerateValidPatterns()); |
| |
| const char *kInvalidNames[] = { |
| "", |
| ".", |
| "..", |
| "//COM0", |
| "/dev/../home/you/your_secrets", |
| "/dev/cdrom", |
| "/dev/laserbeam", |
| "/home/you/your_secrets", |
| "/proc/cpuinfo", |
| "COM0", |
| "\\\\COM0", |
| "modem", |
| "serial", |
| "tty", |
| }; |
| |
| for (size_t i = 0; i < arraysize(kInvalidNames); ++i) { |
| std::set<std::string>::const_iterator j = port_patterns.begin(); |
| for (; j != port_patterns.end(); ++j) |
| EXPECT_FALSE(MatchPattern(kInvalidNames[i], *j)) << |
| kInvalidNames[i] << " should not have matched " << *j; |
| } |
| #endif |
| } |