blob: 1f5483dc257108ecb394d785515c9be6a0baa3ce [file] [log] [blame]
Prathmesh Prabhuba99b592013-04-17 15:13:14 -07001// Copyright (c) 2013 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/ip_address_store.h"
6
7#include <string>
8
9#include <gtest/gtest.h>
10
11using ::std::string;
12using ::std::vector;
13using ::testing::Test;
14
15namespace shill {
16
17namespace {
Prathmesh Prabhuba99b592013-04-17 15:13:14 -070018const char kIPAddress_0_0_0_0[] = "0.0.0.0";
19const char kIPAddress_8_8_8_8[] = "8.8.8.8";
20const char kIPAddress_7_7_7_7[] = "7.7.7.7";
Alex Vakulenko8a532292014-06-16 17:18:44 -070021} // namespace
Prathmesh Prabhuba99b592013-04-17 15:13:14 -070022
23class IPAddressStoreTest : public Test {
24 public:
25 IPAddressStoreTest() {}
26
27 protected:
Paul Stewart3b30ca52015-06-16 13:13:10 -070028 IPAddress StringToIPv4Address(const string& address_string) {
Prathmesh Prabhuba99b592013-04-17 15:13:14 -070029 IPAddress ip_address(IPAddress::kFamilyIPv4);
30 EXPECT_TRUE(ip_address.SetAddressFromString(address_string));
31 return ip_address;
32 }
33
34 void PopulateIPAddressStore() {
35 ip_address_store_.AddUnique(StringToIPv4Address(kIPAddress_0_0_0_0));
36 ip_address_store_.AddUnique(StringToIPv4Address(kIPAddress_8_8_8_8));
37 ip_address_store_.AddUnique(StringToIPv4Address(kIPAddress_7_7_7_7));
38 }
39
Prathmesh Prabhuba99b592013-04-17 15:13:14 -070040 IPAddressStore ip_address_store_;
41};
42
43TEST_F(IPAddressStoreTest, AddUnique) {
44 IPAddress ip_0_0_0_0 = StringToIPv4Address(kIPAddress_0_0_0_0);
45 IPAddress ip_8_8_8_8 = StringToIPv4Address(kIPAddress_8_8_8_8);
46 IPAddress ip_7_7_7_7 = StringToIPv4Address(kIPAddress_7_7_7_7);
47
48 EXPECT_EQ(0, ip_address_store_.Count());
49 ip_address_store_.AddUnique(ip_0_0_0_0);
Samuel Tanaba10002014-08-18 17:13:56 -070050 EXPECT_TRUE(ip_address_store_.Contains(ip_0_0_0_0));
51 EXPECT_FALSE(ip_address_store_.Contains(ip_8_8_8_8));
52 EXPECT_FALSE(ip_address_store_.Contains(ip_7_7_7_7));
Prathmesh Prabhuba99b592013-04-17 15:13:14 -070053 EXPECT_EQ(1, ip_address_store_.Count());
54 ip_address_store_.AddUnique(ip_8_8_8_8);
Samuel Tanaba10002014-08-18 17:13:56 -070055 EXPECT_TRUE(ip_address_store_.Contains(ip_8_8_8_8));
56 EXPECT_FALSE(ip_address_store_.Contains(ip_7_7_7_7));
Prathmesh Prabhuba99b592013-04-17 15:13:14 -070057 EXPECT_EQ(2, ip_address_store_.Count());
58 ip_address_store_.AddUnique(ip_8_8_8_8);
Samuel Tanaba10002014-08-18 17:13:56 -070059 EXPECT_TRUE(ip_address_store_.Contains(ip_0_0_0_0));
60 EXPECT_TRUE(ip_address_store_.Contains(ip_8_8_8_8));
Prathmesh Prabhuba99b592013-04-17 15:13:14 -070061 EXPECT_EQ(2, ip_address_store_.Count());
62 ip_address_store_.AddUnique(ip_0_0_0_0);
63 EXPECT_EQ(2, ip_address_store_.Count());
64 ip_address_store_.AddUnique(ip_7_7_7_7);
Samuel Tanaba10002014-08-18 17:13:56 -070065 EXPECT_TRUE(ip_address_store_.Contains(ip_7_7_7_7));
Prathmesh Prabhuba99b592013-04-17 15:13:14 -070066 EXPECT_EQ(3, ip_address_store_.Count());
67}
68
69} // namespace shill