1 // Copyright 2014 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 "chromeos/network/network_type_pattern.h" 6 7 #include "testing/gtest/include/gtest/gtest.h" 8 #include "third_party/cros_system_api/dbus/service_constants.h" 9 10 namespace chromeos { 11 12 namespace { 13 14 class NetworkTypePatternTest : public testing::Test { 15 public: 16 NetworkTypePatternTest() 17 : cellular_(NetworkTypePattern::Cellular()), 18 default_(NetworkTypePattern::Default()), 19 ethernet_(NetworkTypePattern::Ethernet()), 20 mobile_(NetworkTypePattern::Mobile()), 21 non_virtual_(NetworkTypePattern::NonVirtual()), 22 wimax_(NetworkTypePattern::Wimax()), 23 wireless_(NetworkTypePattern::Wireless()) {} 24 25 bool MatchesPattern(const NetworkTypePattern& a, 26 const NetworkTypePattern& b) { 27 // Verify that NetworkTypePattern::MatchesPattern is symmetric. 28 EXPECT_TRUE(a.MatchesPattern(b) == b.MatchesPattern(a)); 29 return a.MatchesPattern(b); 30 } 31 32 protected: 33 const NetworkTypePattern cellular_; 34 const NetworkTypePattern default_; 35 const NetworkTypePattern ethernet_; 36 const NetworkTypePattern mobile_; 37 const NetworkTypePattern non_virtual_; 38 const NetworkTypePattern wimax_; 39 const NetworkTypePattern wireless_; 40 }; 41 42 } // namespace 43 44 TEST_F(NetworkTypePatternTest, MatchesType) { 45 EXPECT_TRUE(mobile_.MatchesType(shill::kTypeCellular)); 46 EXPECT_TRUE(mobile_.MatchesType(shill::kTypeWimax)); 47 EXPECT_FALSE(mobile_.MatchesType(shill::kTypeWifi)); 48 49 EXPECT_TRUE(wireless_.MatchesType(shill::kTypeWifi)); 50 EXPECT_TRUE(wireless_.MatchesType(shill::kTypeCellular)); 51 EXPECT_TRUE(wireless_.MatchesType(shill::kTypeWimax)); 52 EXPECT_FALSE(wireless_.MatchesType(shill::kTypeEthernet)); 53 } 54 55 TEST_F(NetworkTypePatternTest, MatchesPattern) { 56 // Each pair of {Mobile, Wireless, Cellular} is matching. Matching is 57 // reflexive and symmetric (checked in MatchesPattern). 58 EXPECT_TRUE(MatchesPattern(mobile_, mobile_)); 59 EXPECT_TRUE(MatchesPattern(wireless_, wireless_)); 60 EXPECT_TRUE(MatchesPattern(cellular_, cellular_)); 61 62 EXPECT_TRUE(MatchesPattern(mobile_, wireless_)); 63 EXPECT_TRUE(MatchesPattern(mobile_, cellular_)); 64 EXPECT_TRUE(MatchesPattern(wireless_, cellular_)); 65 66 // Cellular matches NonVirtual. NonVirtual matches Ethernet. But Cellular 67 // doesn't match Ethernet. 68 EXPECT_TRUE(MatchesPattern(cellular_, non_virtual_)); 69 EXPECT_TRUE(MatchesPattern(non_virtual_, ethernet_)); 70 EXPECT_FALSE(MatchesPattern(cellular_, ethernet_)); 71 72 // Default matches anything. 73 EXPECT_TRUE(MatchesPattern(default_, default_)); 74 EXPECT_TRUE(MatchesPattern(default_, non_virtual_)); 75 EXPECT_TRUE(MatchesPattern(default_, cellular_)); 76 } 77 78 TEST_F(NetworkTypePatternTest, Equals) { 79 EXPECT_TRUE(mobile_.Equals(mobile_)); 80 EXPECT_FALSE(mobile_.Equals(cellular_)); 81 EXPECT_FALSE(cellular_.Equals(mobile_)); 82 } 83 84 TEST_F(NetworkTypePatternTest, Primitive) { 85 const NetworkTypePattern primitive_cellular = 86 NetworkTypePattern::Primitive(shill::kTypeCellular); 87 EXPECT_TRUE(cellular_.Equals(primitive_cellular)); 88 EXPECT_TRUE(primitive_cellular.Equals(cellular_)); 89 90 const NetworkTypePattern primitive_wimax = 91 NetworkTypePattern::Primitive(shill::kTypeWimax); 92 EXPECT_TRUE(wimax_.Equals(primitive_wimax)); 93 EXPECT_TRUE(primitive_wimax.Equals(wimax_)); 94 } 95 96 TEST_F(NetworkTypePatternTest, ToDebugString) { 97 EXPECT_EQ(default_.ToDebugString(), "PatternDefault"); 98 EXPECT_EQ(mobile_.ToDebugString(), "PatternMobile"); 99 EXPECT_EQ(cellular_.ToDebugString(), "cellular"); 100 } 101 102 } // namespace chromeos 103