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.
5 #include "net/base/host_port_pair.h"
7 #include "base/logging.h"
8 #include "net/test/gtest_util.h"
9 #include "testing/gtest/include/gtest/gtest.h"
23 { "www.google.com", 80, "www.google.com:80", "www.google.com" },
24 { "www.google.com", 443, "www.google.com:443", "www.google.com" },
25 { "127.0.0.1", 80, "127.0.0.1:80", "127.0.0.1" },
26 { "192.168.1.1", 80, "192.168.1.1:80", "192.168.1.1" },
27 { "::1", 80, "[::1]:80", "[::1]" },
28 { "2001:db8::42", 80, "[2001:db8::42]:80", "[2001:db8::42]" },
31 TEST(HostPortPairTest
, Parsing
) {
32 HostPortPair
foo("foo.com", 10);
33 string foo_str
= foo
.ToString();
34 EXPECT_EQ("foo.com:10", foo_str
);
35 HostPortPair bar
= HostPortPair::FromString(foo_str
);
36 EXPECT_TRUE(foo
.Equals(bar
));
39 TEST(HostPortPairTest
, BadString
) {
40 HostPortPair foo
= HostPortPair::FromString("foo.com:2:3");
41 EXPECT_TRUE(foo
.host().empty());
42 EXPECT_EQ(0, foo
.port());
44 HostPortPair bar
= HostPortPair::FromString("bar.com:two");
45 EXPECT_TRUE(bar
.host().empty());
46 EXPECT_EQ(0, bar
.port());
49 TEST(HostPortPairTest
, Emptiness
) {
51 EXPECT_TRUE(foo
.IsEmpty());
52 foo
= HostPortPair::FromString("foo.com:8080");
53 EXPECT_FALSE(foo
.IsEmpty());
56 TEST(HostPortPairTest
, ToString
) {
57 for (size_t index
= 0; index
< arraysize(tests
); ++index
) {
58 HostPortPair
foo(tests
[index
].host
, tests
[index
].port
);
59 EXPECT_EQ(tests
[index
].to_string
, foo
.ToString());
62 // Test empty hostname.
63 HostPortPair
foo(string(), 10);
66 TEST(HostPortPairTest
, HostForURL
) {
67 for (size_t index
= 0; index
< arraysize(tests
); ++index
) {
68 HostPortPair
foo(tests
[index
].host
, tests
[index
].port
);
69 EXPECT_EQ(tests
[index
].host_for_url
, foo
.HostForURL());
72 // Test hostname with null character.
73 string
bar_hostname("a\0.\0com", 7);
74 HostPortPair
bar(bar_hostname
, 80);
75 string
expected_error("Host has a null char: a%00.%00com");
76 EXPECT_DFATAL(bar
.HostForURL(), expected_error
);
79 TEST(HostPortPairTest
, LessThan
) {
80 HostPortPair
a_10("a.com", 10);
81 HostPortPair
a_11("a.com", 11);
82 HostPortPair
b_10("b.com", 10);
83 HostPortPair
b_11("b.com", 11);
85 EXPECT_FALSE(a_10
< a_10
);
86 EXPECT_TRUE(a_10
< a_11
);
87 EXPECT_TRUE(a_10
< b_10
);
88 EXPECT_TRUE(a_10
< b_11
);
90 EXPECT_FALSE(a_11
< a_10
);
91 EXPECT_FALSE(a_11
< b_10
);
93 EXPECT_FALSE(b_10
< a_10
);
94 EXPECT_TRUE(b_10
< a_11
);
96 EXPECT_FALSE(b_11
< a_10
);
99 TEST(HostPortPairTest
, Equals
) {
100 HostPortPair
a_10("a.com", 10);
101 HostPortPair
a_11("a.com", 11);
102 HostPortPair
b_10("b.com", 10);
103 HostPortPair
b_11("b.com", 11);
105 HostPortPair
new_a_10("a.com", 10);
107 EXPECT_TRUE(new_a_10
.Equals(a_10
));
108 EXPECT_FALSE(new_a_10
.Equals(a_11
));
109 EXPECT_FALSE(new_a_10
.Equals(b_10
));
110 EXPECT_FALSE(new_a_10
.Equals(b_11
));