- add sources.
[platform/framework/web/crosswalk.git] / src / chromeos / network / network_util_unittest.cc
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 "chromeos/network/network_util.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/cros_system_api/dbus/service_constants.h"
9
10 using chromeos::CellularScanResult;
11 using chromeos::network_util::NetmaskToPrefixLength;
12 using chromeos::network_util::PrefixLengthToNetmask;
13 using chromeos::network_util::ParseCellularScanResults;
14
15 typedef testing::Test NetworkUtilTest;
16
17 TEST_F(NetworkUtilTest, NetmaskToPrefixLength) {
18   // Valid netmasks
19   EXPECT_EQ(32, NetmaskToPrefixLength("255.255.255.255"));
20   EXPECT_EQ(31, NetmaskToPrefixLength("255.255.255.254"));
21   EXPECT_EQ(30, NetmaskToPrefixLength("255.255.255.252"));
22   EXPECT_EQ(29, NetmaskToPrefixLength("255.255.255.248"));
23   EXPECT_EQ(28, NetmaskToPrefixLength("255.255.255.240"));
24   EXPECT_EQ(27, NetmaskToPrefixLength("255.255.255.224"));
25   EXPECT_EQ(26, NetmaskToPrefixLength("255.255.255.192"));
26   EXPECT_EQ(25, NetmaskToPrefixLength("255.255.255.128"));
27   EXPECT_EQ(24, NetmaskToPrefixLength("255.255.255.0"));
28   EXPECT_EQ(23, NetmaskToPrefixLength("255.255.254.0"));
29   EXPECT_EQ(22, NetmaskToPrefixLength("255.255.252.0"));
30   EXPECT_EQ(21, NetmaskToPrefixLength("255.255.248.0"));
31   EXPECT_EQ(20, NetmaskToPrefixLength("255.255.240.0"));
32   EXPECT_EQ(19, NetmaskToPrefixLength("255.255.224.0"));
33   EXPECT_EQ(18, NetmaskToPrefixLength("255.255.192.0"));
34   EXPECT_EQ(17, NetmaskToPrefixLength("255.255.128.0"));
35   EXPECT_EQ(16, NetmaskToPrefixLength("255.255.0.0"));
36   EXPECT_EQ(15, NetmaskToPrefixLength("255.254.0.0"));
37   EXPECT_EQ(14, NetmaskToPrefixLength("255.252.0.0"));
38   EXPECT_EQ(13, NetmaskToPrefixLength("255.248.0.0"));
39   EXPECT_EQ(12, NetmaskToPrefixLength("255.240.0.0"));
40   EXPECT_EQ(11, NetmaskToPrefixLength("255.224.0.0"));
41   EXPECT_EQ(10, NetmaskToPrefixLength("255.192.0.0"));
42   EXPECT_EQ(9, NetmaskToPrefixLength("255.128.0.0"));
43   EXPECT_EQ(8, NetmaskToPrefixLength("255.0.0.0"));
44   EXPECT_EQ(7, NetmaskToPrefixLength("254.0.0.0"));
45   EXPECT_EQ(6, NetmaskToPrefixLength("252.0.0.0"));
46   EXPECT_EQ(5, NetmaskToPrefixLength("248.0.0.0"));
47   EXPECT_EQ(4, NetmaskToPrefixLength("240.0.0.0"));
48   EXPECT_EQ(3, NetmaskToPrefixLength("224.0.0.0"));
49   EXPECT_EQ(2, NetmaskToPrefixLength("192.0.0.0"));
50   EXPECT_EQ(1, NetmaskToPrefixLength("128.0.0.0"));
51   EXPECT_EQ(0, NetmaskToPrefixLength("0.0.0.0"));
52   // Invalid netmasks
53   EXPECT_EQ(-1, NetmaskToPrefixLength("255.255.255"));
54   EXPECT_EQ(-1, NetmaskToPrefixLength("255.255.255.255.255"));
55   EXPECT_EQ(-1, NetmaskToPrefixLength("255.255.255.255.0"));
56   EXPECT_EQ(-1, NetmaskToPrefixLength("255.255.255.256"));
57   EXPECT_EQ(-1, NetmaskToPrefixLength("255.255.255.1"));
58   EXPECT_EQ(-1, NetmaskToPrefixLength("255.255.240.255"));
59   EXPECT_EQ(-1, NetmaskToPrefixLength("255.0.0.255"));
60   EXPECT_EQ(-1, NetmaskToPrefixLength("255.255.255.FF"));
61   EXPECT_EQ(-1, NetmaskToPrefixLength("255,255,255,255"));
62   EXPECT_EQ(-1, NetmaskToPrefixLength("255 255 255 255"));
63 }
64
65 TEST_F(NetworkUtilTest, PrefixLengthToNetmask) {
66   // Valid Prefix Lengths
67   EXPECT_EQ("255.255.255.255", PrefixLengthToNetmask(32));
68   EXPECT_EQ("255.255.255.254", PrefixLengthToNetmask(31));
69   EXPECT_EQ("255.255.255.252", PrefixLengthToNetmask(30));
70   EXPECT_EQ("255.255.255.248", PrefixLengthToNetmask(29));
71   EXPECT_EQ("255.255.255.240", PrefixLengthToNetmask(28));
72   EXPECT_EQ("255.255.255.224", PrefixLengthToNetmask(27));
73   EXPECT_EQ("255.255.255.192", PrefixLengthToNetmask(26));
74   EXPECT_EQ("255.255.255.128", PrefixLengthToNetmask(25));
75   EXPECT_EQ("255.255.255.0", PrefixLengthToNetmask(24));
76   EXPECT_EQ("255.255.254.0", PrefixLengthToNetmask(23));
77   EXPECT_EQ("255.255.252.0", PrefixLengthToNetmask(22));
78   EXPECT_EQ("255.255.248.0", PrefixLengthToNetmask(21));
79   EXPECT_EQ("255.255.240.0", PrefixLengthToNetmask(20));
80   EXPECT_EQ("255.255.224.0", PrefixLengthToNetmask(19));
81   EXPECT_EQ("255.255.192.0", PrefixLengthToNetmask(18));
82   EXPECT_EQ("255.255.128.0", PrefixLengthToNetmask(17));
83   EXPECT_EQ("255.255.0.0", PrefixLengthToNetmask(16));
84   EXPECT_EQ("255.254.0.0", PrefixLengthToNetmask(15));
85   EXPECT_EQ("255.252.0.0", PrefixLengthToNetmask(14));
86   EXPECT_EQ("255.248.0.0", PrefixLengthToNetmask(13));
87   EXPECT_EQ("255.240.0.0", PrefixLengthToNetmask(12));
88   EXPECT_EQ("255.224.0.0", PrefixLengthToNetmask(11));
89   EXPECT_EQ("255.192.0.0", PrefixLengthToNetmask(10));
90   EXPECT_EQ("255.128.0.0", PrefixLengthToNetmask(9));
91   EXPECT_EQ("255.0.0.0", PrefixLengthToNetmask(8));
92   EXPECT_EQ("254.0.0.0", PrefixLengthToNetmask(7));
93   EXPECT_EQ("252.0.0.0", PrefixLengthToNetmask(6));
94   EXPECT_EQ("248.0.0.0", PrefixLengthToNetmask(5));
95   EXPECT_EQ("240.0.0.0", PrefixLengthToNetmask(4));
96   EXPECT_EQ("224.0.0.0", PrefixLengthToNetmask(3));
97   EXPECT_EQ("192.0.0.0", PrefixLengthToNetmask(2));
98   EXPECT_EQ("128.0.0.0", PrefixLengthToNetmask(1));
99   EXPECT_EQ("0.0.0.0", PrefixLengthToNetmask(0));
100   // Invalid Prefix Lengths
101   EXPECT_EQ("", PrefixLengthToNetmask(-1));
102   EXPECT_EQ("", PrefixLengthToNetmask(33));
103   EXPECT_EQ("", PrefixLengthToNetmask(255));
104 }
105
106 TEST_F(NetworkUtilTest, ParseScanResults) {
107   ListValue list;
108   std::vector<CellularScanResult> scan_results;
109
110   // Empty list value.
111   EXPECT_TRUE(ParseCellularScanResults(list, &scan_results));
112
113   // List contains invalid item.
114   list.AppendInteger(0);
115   EXPECT_FALSE(ParseCellularScanResults(list, &scan_results));
116
117   // Scan result has no network id.
118   list.Clear();
119   DictionaryValue* dict_value = new DictionaryValue();
120   dict_value->SetString(shill::kStatusProperty, "available");
121   list.Append(dict_value);
122   EXPECT_TRUE(ParseCellularScanResults(list, &scan_results));
123   EXPECT_TRUE(scan_results.empty());
124
125   // Mixed parse results.
126   dict_value = new DictionaryValue();
127   dict_value->SetString(shill::kNetworkIdProperty, "000001");
128   dict_value->SetString(shill::kStatusProperty, "unknown");
129   dict_value->SetString(shill::kTechnologyProperty, "GSM");
130   list.Append(dict_value);
131
132   dict_value = new DictionaryValue();
133   dict_value->SetString(shill::kNetworkIdProperty, "000002");
134   dict_value->SetString(shill::kStatusProperty, "available");
135   dict_value->SetString(shill::kLongNameProperty, "Long Name");
136   list.Append(dict_value);
137
138   EXPECT_TRUE(ParseCellularScanResults(list, &scan_results));
139   EXPECT_EQ(static_cast<size_t>(2), scan_results.size());
140   EXPECT_EQ("000001", scan_results[0].network_id);
141   EXPECT_EQ("unknown", scan_results[0].status);
142   EXPECT_EQ("GSM", scan_results[0].technology);
143   EXPECT_TRUE(scan_results[0].long_name.empty());
144   EXPECT_TRUE(scan_results[0].short_name.empty());
145
146   EXPECT_EQ("000002", scan_results[1].network_id);
147   EXPECT_EQ("available", scan_results[1].status);
148   EXPECT_EQ("Long Name", scan_results[1].long_name);
149   EXPECT_TRUE(scan_results[1].short_name.empty());
150   EXPECT_TRUE(scan_results[1].technology.empty());
151 }