blob: e10f3b76c8550e335bc3134e509c086d2b29df11 [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 {
18const char kInterfaceName[] = "int0";
19const char kIPAddress_0_0_0_0[] = "0.0.0.0";
20const char kIPAddress_8_8_8_8[] = "8.8.8.8";
21const char kIPAddress_7_7_7_7[] = "7.7.7.7";
22} // namespace {}
23
24class IPAddressStoreTest : public Test {
25 public:
26 IPAddressStoreTest() {}
27
28 protected:
29 IPAddress StringToIPv4Address(const string &address_string) {
30 IPAddress ip_address(IPAddress::kFamilyIPv4);
31 EXPECT_TRUE(ip_address.SetAddressFromString(address_string));
32 return ip_address;
33 }
34
35 void PopulateIPAddressStore() {
36 ip_address_store_.AddUnique(StringToIPv4Address(kIPAddress_0_0_0_0));
37 ip_address_store_.AddUnique(StringToIPv4Address(kIPAddress_8_8_8_8));
38 ip_address_store_.AddUnique(StringToIPv4Address(kIPAddress_7_7_7_7));
39 }
40
41 bool Contains(const IPAddress& ip) {
42 return ip_address_store_.ip_addresses_.find(ip) !=
43 ip_address_store_.ip_addresses_.end();
44 }
45
46 IPAddressStore ip_address_store_;
47};
48
49TEST_F(IPAddressStoreTest, AddUnique) {
50 IPAddress ip_0_0_0_0 = StringToIPv4Address(kIPAddress_0_0_0_0);
51 IPAddress ip_8_8_8_8 = StringToIPv4Address(kIPAddress_8_8_8_8);
52 IPAddress ip_7_7_7_7 = StringToIPv4Address(kIPAddress_7_7_7_7);
53
54 EXPECT_EQ(0, ip_address_store_.Count());
55 ip_address_store_.AddUnique(ip_0_0_0_0);
56 EXPECT_TRUE(Contains(ip_0_0_0_0));
57 EXPECT_EQ(1, ip_address_store_.Count());
58 ip_address_store_.AddUnique(ip_8_8_8_8);
59 EXPECT_TRUE(Contains(ip_8_8_8_8));
60 EXPECT_EQ(2, ip_address_store_.Count());
61 ip_address_store_.AddUnique(ip_8_8_8_8);
62 EXPECT_TRUE(Contains(ip_0_0_0_0));
63 EXPECT_TRUE(Contains(ip_8_8_8_8));
64 EXPECT_EQ(2, ip_address_store_.Count());
65 ip_address_store_.AddUnique(ip_0_0_0_0);
66 EXPECT_EQ(2, ip_address_store_.Count());
67 ip_address_store_.AddUnique(ip_7_7_7_7);
68 EXPECT_TRUE(Contains(ip_7_7_7_7));
69 EXPECT_EQ(3, ip_address_store_.Count());
70}
71
72} // namespace shill