blob: 3469ae4becce58b96ba83ffe0a3a3e80b9929fe1 [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"));
26 EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromName("vpn"));
27 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("bluetooth"));
28 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("wimax"));
29 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName("foo"));
30 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromName(""));
31}
32
33TEST_F(TechnologyTest, NameFromIdentifier) {
34 EXPECT_EQ("ethernet", Technology::NameFromIdentifier(Technology::kEthernet));
35 EXPECT_EQ("wifi", Technology::NameFromIdentifier(Technology::kWifi));
36 EXPECT_EQ("cellular", Technology::NameFromIdentifier(Technology::kCellular));
37 EXPECT_EQ("Tunnel", Technology::NameFromIdentifier(Technology::kTunnel));
38 EXPECT_EQ("vpn", Technology::NameFromIdentifier(Technology::kVPN));
39 EXPECT_EQ("Unknown", Technology::NameFromIdentifier(Technology::kUnknown));
40}
41
42TEST_F(TechnologyTest, IdentifierFromStorageGroup) {
43 EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromStorageGroup("vpn"));
44 EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromStorageGroup("vpn_a"));
45 EXPECT_EQ(Technology::kVPN, Technology::IdentifierFromStorageGroup("vpn__a"));
46 EXPECT_EQ(Technology::kVPN,
47 Technology::IdentifierFromStorageGroup("vpn_a_1"));
48 EXPECT_EQ(Technology::kUnknown,
49 Technology::IdentifierFromStorageGroup("_vpn"));
50 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromStorageGroup("_"));
51 EXPECT_EQ(Technology::kUnknown, Technology::IdentifierFromStorageGroup(""));
52}
53
54TEST_F(TechnologyTest, GetTechnologyVectorFromStringWithValidTechnologyNames) {
55 vector<Technology::Identifier> technologies;
56 Error error;
57
58 EXPECT_TRUE(Technology::GetTechnologyVectorFromString(
59 "", &technologies, &error));
60 EXPECT_THAT(technologies, ElementsAre());
61 EXPECT_TRUE(error.IsSuccess());
62
63 EXPECT_TRUE(Technology::GetTechnologyVectorFromString(
64 "ethernet", &technologies, &error));
65 EXPECT_THAT(technologies, ElementsAre(Technology::kEthernet));
66 EXPECT_TRUE(error.IsSuccess());
67
68 EXPECT_TRUE(Technology::GetTechnologyVectorFromString(
69 "ethernet,vpn", &technologies, &error));
70 EXPECT_THAT(technologies, ElementsAre(Technology::kEthernet,
71 Technology::kVPN));
72 EXPECT_TRUE(error.IsSuccess());
73
74 EXPECT_TRUE(Technology::GetTechnologyVectorFromString(
75 "wifi,ethernet,vpn", &technologies, &error));
76 EXPECT_THAT(technologies, ElementsAre(Technology::kWifi,
77 Technology::kEthernet,
78 Technology::kVPN));
79 EXPECT_TRUE(error.IsSuccess());
80}
81
82TEST_F(TechnologyTest,
83 GetTechnologyVectorFromStringWithInvalidTechnologyNames) {
84 vector<Technology::Identifier> technologies;
85 Error error;
86
87 EXPECT_FALSE(Technology::GetTechnologyVectorFromString(
88 "foo", &technologies, &error));
89 EXPECT_EQ(Error::kInvalidArguments, error.type());
90 EXPECT_EQ("foo is an unknown technology name", error.message());
91
92 EXPECT_FALSE(Technology::GetTechnologyVectorFromString(
93 "ethernet,bar", &technologies, &error));
94 EXPECT_EQ(Error::kInvalidArguments, error.type());
95 EXPECT_EQ("bar is an unknown technology name", error.message());
96
97 EXPECT_FALSE(Technology::GetTechnologyVectorFromString(
98 "ethernet,foo,vpn", &technologies, &error));
99 EXPECT_EQ(Error::kInvalidArguments, error.type());
100 EXPECT_EQ("foo is an unknown technology name", error.message());
101}
102
103TEST_F(TechnologyTest,
104 GetTechnologyVectorFromStringWithDuplicateTechnologyNames) {
105 vector<Technology::Identifier> technologies;
106 Error error;
107
108 EXPECT_FALSE(Technology::GetTechnologyVectorFromString(
109 "ethernet,vpn,ethernet", &technologies, &error));
110 EXPECT_EQ(Error::kInvalidArguments, error.type());
111 EXPECT_EQ("ethernet is duplicated in the list", error.message());
112}
113
114} // namespace shill