blob: ce401e500c13f642d2b4259b006d4fdefbd50ed7 [file] [log] [blame]
Ben Chanc12cf662012-04-05 14:47:18 -07001// Copyright (c) 2012 The Chromium OS 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 "shill/technology.h"
6
7#include <gmock/gmock.h>
8#include <gtest/gtest.h>
9
10#include "shill/error.h"
11
12using std::string;
13using std::vector;
14using testing::ElementsAre;
15using testing::Test;
16
17namespace shill {
18
19class TechnologyTest : public Test {};
20
21TEST_F(TechnologyTest, IdentifierFromName) {
22 EXPECT_EQ(Technology::kEthernet, Technology::IdentifierFromName("ethernet"));
23 EXPECT_EQ(Technology::kWifi, Technology::IdentifierFromName("wifi"));
24 EXPECT_EQ(Technology::kCellular, Technology::IdentifierFromName("cellular"));
25 EXPECT_EQ(Technology::kTunnel, Technology::IdentifierFromName("Tunnel"));
Paul Stewarte81eb702012-04-11 15:04:53 -070026 EXPECT_EQ(Technology::kLoopback, Technology::IdentifierFromName("Loopback"));
Ben Chanc12cf662012-04-05 14:47:18 -070027 EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromName("vpn"));
28 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("bluetooth"));
29 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("wimax"));
30 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("foo"));
31 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName(""));
32}
33
34TEST_F(TechnologyTest, NameFromIdentifier) {
35 EXPECT_EQ("ethernet", Technology::NameFromIdentifier(Technology::kEthernet));
36 EXPECT_EQ("wifi", Technology::NameFromIdentifier(Technology::kWifi));
37 EXPECT_EQ("cellular", Technology::NameFromIdentifier(Technology::kCellular));
38 EXPECT_EQ("Tunnel", Technology::NameFromIdentifier(Technology::kTunnel));
Paul Stewarte81eb702012-04-11 15:04:53 -070039 EXPECT_EQ("Loopback", Technology::NameFromIdentifier(Technology::kLoopback));
Ben Chanc12cf662012-04-05 14:47:18 -070040 EXPECT_EQ("vpn", Technology::NameFromIdentifier(Technology::kVPN));
41 EXPECT_EQ("Unknown", Technology::NameFromIdentifier(Technology::kUnknown));
42}
43
44TEST_F(TechnologyTest, IdentifierFromStorageGroup) {
45 EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromStorageGroup("vpn"));
46 EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromStorageGroup("vpn_a"));
47 EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromStorageGroup("vpn__a"));
48 EXPECT_EQ(Technology::kVPN,
49 Technology::IdentifierFromStorageGroup("vpn_a_1"));
50 EXPECT_EQ(Technology::kUnknown,
51 Technology::IdentifierFromStorageGroup("_vpn"));
52 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromStorageGroup("_"));
53 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromStorageGroup(""));
54}
55
56TEST_F(TechnologyTest, GetTechnologyVectorFromStringWithValidTechnologyNames) {
57 vector<Technology::Identifier> technologies;
58 Error error;
59
60 EXPECT_TRUE(Technology::GetTechnologyVectorFromString(
61 "", &technologies, &error));
62 EXPECT_THAT(technologies, ElementsAre());
63 EXPECT_TRUE(error.IsSuccess());
64
65 EXPECT_TRUE(Technology::GetTechnologyVectorFromString(
66 "ethernet", &technologies, &error));
67 EXPECT_THAT(technologies, ElementsAre(Technology::kEthernet));
68 EXPECT_TRUE(error.IsSuccess());
69
70 EXPECT_TRUE(Technology::GetTechnologyVectorFromString(
71 "ethernet,vpn", &technologies, &error));
72 EXPECT_THAT(technologies, ElementsAre(Technology::kEthernet,
73 Technology::kVPN));
74 EXPECT_TRUE(error.IsSuccess());
75
76 EXPECT_TRUE(Technology::GetTechnologyVectorFromString(
77 "wifi,ethernet,vpn", &technologies, &error));
78 EXPECT_THAT(technologies, ElementsAre(Technology::kWifi,
79 Technology::kEthernet,
80 Technology::kVPN));
81 EXPECT_TRUE(error.IsSuccess());
82}
83
84TEST_F(TechnologyTest,
85 GetTechnologyVectorFromStringWithInvalidTechnologyNames) {
86 vector<Technology::Identifier> technologies;
87 Error error;
88
89 EXPECT_FALSE(Technology::GetTechnologyVectorFromString(
90 "foo", &technologies, &error));
91 EXPECT_EQ(Error::kInvalidArguments, error.type());
92 EXPECT_EQ("foo is an unknown technology name", error.message());
93
94 EXPECT_FALSE(Technology::GetTechnologyVectorFromString(
95 "ethernet,bar", &technologies, &error));
96 EXPECT_EQ(Error::kInvalidArguments, error.type());
97 EXPECT_EQ("bar is an unknown technology name", error.message());
98
99 EXPECT_FALSE(Technology::GetTechnologyVectorFromString(
100 "ethernet,foo,vpn", &technologies, &error));
101 EXPECT_EQ(Error::kInvalidArguments, error.type());
102 EXPECT_EQ("foo is an unknown technology name", error.message());
103}
104
105TEST_F(TechnologyTest,
106 GetTechnologyVectorFromStringWithDuplicateTechnologyNames) {
107 vector<Technology::Identifier> technologies;
108 Error error;
109
110 EXPECT_FALSE(Technology::GetTechnologyVectorFromString(
111 "ethernet,vpn,ethernet", &technologies, &error));
112 EXPECT_EQ(Error::kInvalidArguments, error.type());
113 EXPECT_EQ("ethernet is duplicated in the list", error.message());
114}
115
116} // namespace shill