// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/favicon/chrome_fallback_icon_client.h" #include "base/macros.h" #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" TEST(ChromeFallbackIconClientTest, GetFontNameList) { ChromeFallbackIconClient client; // Just ensure non-empty, otherwise not checking the actual font. EXPECT_FALSE(client.GetFontNameList().empty()); } TEST(ChromeFallbackIconClientTest, GetFallbackIconText) { struct { const char* url_str; const char* expected; } test_cases[] = { // Test vacuous or invalid cases. {"", ""}, {"http:///", ""}, {"this is not an URL", ""}, {"!@#$%^&*()", ""}, // Test URLs with a domain in the registry. {"http://www.google.com/", "G"}, {"ftp://GOogLE.com/", "G"}, {"https://www.google.com:8080/path?query#ref", "G"}, {"http://www.amazon.com", "A"}, {"http://zmzaon.co.uk/", "Z"}, {"http://w-3.137.org", "1"}, // Test URLs with a domian not in the registry. {"http://localhost/", "L"}, {"chrome-search://local-ntp/local-ntp.html", "L"}, // Test IP URLs. {"http://192.168.0.1/", "IP"}, {"http://[2001:4860:4860::8888]/", "IP"}, // Miscellaneous edge cases. {"http://www..com/", "."}, {"http://ip.ip/", "I"}, // xn-- related cases: we're not supporint xn-- yet {"http://xn--oogle-60a/", "X"}, {"http://xn-oogle-60a/", "X"}, }; for (size_t i = 0; i < arraysize(test_cases); ++i) { ChromeFallbackIconClient client; base::string16 expected = base::ASCIIToUTF16(test_cases[i].expected); GURL url(test_cases[i].url_str); EXPECT_EQ(expected, client.GetFallbackIconText(url)) << " for test_cases[" << i << "]"; } }