| Index: url/gurl_unittest.cc
|
| diff --git a/url/gurl_unittest.cc b/url/gurl_unittest.cc
|
| index 24dee6c2a65aeca3edb24a69892f500d86b2b783..258ea03e0b2d7e2587fb316f6f69c7f8d14cbe2c 100644
|
| --- a/url/gurl_unittest.cc
|
| +++ b/url/gurl_unittest.cc
|
| @@ -740,4 +740,77 @@ TEST(GURLTest, ContentAndPathForNonStandardURLs) {
|
| }
|
| }
|
|
|
| +TEST(GURLTest, IsAboutBlank) {
|
| + const std::string kAboutBlankUrls[] = {"about:blank", "about:blank?foo",
|
| + "about:blank/#foo",
|
| + "about:blank?foo#foo"};
|
| + for (const auto& url : kAboutBlankUrls)
|
| + EXPECT_TRUE(GURL(url).IsAboutBlank()) << url;
|
| +
|
| + const std::string kNotAboutBlankUrls[] = {
|
| + "http:blank", "about:blan", "about://blank",
|
| + "about:blank/foo", "about://:8000/blank", "about://foo:foo@/blank",
|
| + "foo@about:blank", "foo:bar@about:blank", "about:blank:8000"};
|
| + for (const auto& url : kNotAboutBlankUrls)
|
| + EXPECT_FALSE(GURL(url).IsAboutBlank()) << url;
|
| +}
|
| +
|
| +TEST(GURLTest, EqualsIgnoringRef) {
|
| + const struct {
|
| + const char* url_a;
|
| + const char* url_b;
|
| + bool are_equals;
|
| + } kTestCases[] = {
|
| + // No ref.
|
| + {"http://a.com", "http://a.com", true},
|
| + {"http://a.com", "http://b.com", false},
|
| +
|
| + // Same Ref.
|
| + {"http://a.com#foo", "http://a.com#foo", true},
|
| + {"http://a.com#foo", "http://b.com#foo", false},
|
| +
|
| + // Different Refs.
|
| + {"http://a.com#foo", "http://a.com#bar", true},
|
| + {"http://a.com#foo", "http://b.com#bar", false},
|
| +
|
| + // One has a ref, the other doesn't.
|
| + {"http://a.com#foo", "http://a.com", true},
|
| + {"http://a.com#foo", "http://b.com", false},
|
| +
|
| + // Empty refs.
|
| + {"http://a.com#", "http://a.com#", true},
|
| + {"http://a.com#", "http://a.com", true},
|
| +
|
| + // URLs that differ only by their last character.
|
| + {"http://aaa", "http://aab", false},
|
| + {"http://aaa#foo", "http://aab#foo", false},
|
| +
|
| + // Different size of the part before the ref.
|
| + {"http://123#a", "http://123456#a", false},
|
| +
|
| + // Blob URLs
|
| + {"blob:http://a.com#foo", "blob:http://a.com#foo", true},
|
| + {"blob:http://a.com#foo", "blob:http://a.com#bar", true},
|
| + {"blob:http://a.com#foo", "blob:http://b.com#bar", false},
|
| +
|
| + // Filesystem URLs
|
| + {"filesystem:http://a.com#foo", "filesystem:http://a.com#foo", true},
|
| + {"filesystem:http://a.com#foo", "filesystem:http://a.com#bar", true},
|
| + {"filesystem:http://a.com#foo", "filesystem:http://b.com#bar", false},
|
| + };
|
| +
|
| + for (const auto& test_case : kTestCases) {
|
| + SCOPED_TRACE(testing::Message()
|
| + << std::endl
|
| + << "url_a = " << test_case.url_a << std::endl
|
| + << "url_b = " << test_case.url_b << std::endl);
|
| + // A versus B.
|
| + EXPECT_EQ(test_case.are_equals,
|
| + GURL(test_case.url_a).EqualsIgnoringRef(GURL(test_case.url_b)));
|
| + // B versus A.
|
| + EXPECT_EQ(test_case.are_equals,
|
| + GURL(test_case.url_b).EqualsIgnoringRef(GURL(test_case.url_a)));
|
| + }
|
| +}
|
| +
|
| } // namespace url
|
|
|