Home | History | Annotate | Download | only in serial
      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