summaryrefslogtreecommitdiffstats
path: root/net/base/net_util_unittest.cc
diff options
context:
space:
mode:
authorjshin@chromium.org <jshin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-15 18:05:50 +0000
committerjshin@chromium.org <jshin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-15 18:05:50 +0000
commit0185693d286274e9ddf47073db402f073441c5f7 (patch)
treea1f729a54b84f5f236858427f9d81c178653261f /net/base/net_util_unittest.cc
parentac2b04198d1ab44f5c30687a35c69744b2889e6a (diff)
downloadchromium_src-0185693d286274e9ddf47073db402f073441c5f7.zip
chromium_src-0185693d286274e9ddf47073db402f073441c5f7.tar.gz
chromium_src-0185693d286274e9ddf47073db402f073441c5f7.tar.bz2
Add a few more cases to NetUtilTest.IDN* tests. Because IDN*Slow test is much faster ( > 20 times) than before (on my linux box - single core p4, it takes 5700 ms now.), enable the test under Linux valgrind.
BUG=None TEST=Pass NetUtil*.IDN* and NetUtil*.IDN*Slow runs fast enough under valgrind on Linux. Review URL: http://codereview.chromium.org/149640 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20747 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/net_util_unittest.cc')
-rw-r--r--net/base/net_util_unittest.cc55
1 files changed, 42 insertions, 13 deletions
diff --git a/net/base/net_util_unittest.cc b/net/base/net_util_unittest.cc
index f346e92..feb4be7 100644
--- a/net/base/net_util_unittest.cc
+++ b/net/base/net_util_unittest.cc
@@ -48,7 +48,7 @@ const wchar_t* kLanguages[] = {
L"", L"en", L"zh-CN", L"ja", L"ko",
L"he", L"ar", L"ru", L"el", L"fr",
L"de", L"pt", L"sv", L"th", L"hi",
- L"de,en", L"el,en", L"zh,zh-TW,en", L"ko,ja", L"he,ru,en",
+ L"de,en", L"el,en", L"zh-TW,en", L"ko,ja", L"he,ru,en",
L"zh,ru,en"
};
@@ -88,13 +88,20 @@ const IDNTestCase idn_cases[] = {
true, true, true, true, true,
true}},
// IDN
- // Hanzi (Chinese)
- {"xn--1lq90i.cn", L"\x5317\x4eac.cn",
+ // Hanzi (Traditional Chinese)
+ {"xn--1lq90ic7f1rc.cn", L"\x5317\x4eac\x5927\x5b78.cn",
{true, false, true, true, false,
false, false, false, false, false,
false, false, false, false, false,
false, false, true, true, false,
true}},
+ // Hanzi ('video' in Simplified Chinese : will pass only in zh-CN,zh)
+ {"xn--cy2a840a.com", L"\x89c6\x9891.com",
+ {true, false, true, false, false,
+ false, false, false, false, false,
+ false, false, false, false, false,
+ false, false, false, false, false,
+ true}},
// Hanzi + '123'
{"www.xn--123-p18d.com", L"www.\x4e00" L"123.com",
{true, false, true, true, false,
@@ -102,12 +109,13 @@ const IDNTestCase idn_cases[] = {
false, false, false, false, false,
false, false, true, true, false,
true}},
- // Hanzi + Latin
+ // Hanzi + Latin : U+56FD is simplified and is regarded
+ // as not supported in zh-TW.
{"www.xn--hello-9n1hm04c.com", L"www.hello\x4e2d\x56fd.com",
{false, false, true, true, false,
false, false, false, false, false,
false, false, false, false, false,
- false, false, true, true, false,
+ false, false, false, true, false,
true}},
// Kanji + Kana (Japanese)
{"xn--l8jvb1ey91xtjb.jp", L"\x671d\x65e5\x3042\x3055\x3072.jp",
@@ -116,17 +124,23 @@ const IDNTestCase idn_cases[] = {
false, false, false, false, false,
false, false, false, true, false,
false}},
- #if 0
- // U+30FC is not a part of the Japanese exemplar set.
- // Enable this after 'fixing' ICU data or locally working around it.
+ // Katakana including U+30FC
+ {"xn--tckm4i2e.jp", L"\x30b3\x30de\x30fc\x30b9.jp",
+ {true, false, false, true, false,
+ false, false, false, false, false,
+ false, false, false, false, false,
+ false, false, false, true, false,
+ }},
// Katakana + Latin (Japanese)
+ // TODO(jungshik): Change 'false' in the first element to 'true'
+ // after upgrading to ICU 4.2.1 to use new uspoof_* APIs instead
+ // of our IsIDNComponentInSingleScript().
{"xn--e-efusa1mzf.jp", L"e\x30b3\x30de\x30fc\x30b9.jp",
- {true, false, false, false, false,
- false, false, false, false, false,
+ {false, false, false, true, false,
false, false, false, false, false,
false, false, false, false, false,
+ false, false, false, true, false,
}},
- #endif
// Hangul (Korean)
{"www.xn--or3b17p6jjc.kr", L"www.\xc804\xc790\xc815\xbd80.kr",
{true, false, false, false, true,
@@ -396,6 +410,19 @@ const struct addrinfo* GetIPv6Address(const uint8* bytes) {
return ai;
}
+
+// A helper for IDN*{Fast,Slow}.
+// Append "::<language list>" to |expected| and |actual| to make it
+// easy to tell which sub-case fails without debugging.
+void AppendLanguagesToOutputs(const wchar_t* languages,
+ std::wstring* expected,
+ std::wstring* actual) {
+ expected->append(L"::");
+ expected->append(languages);
+ actual->append(L"::");
+ actual->append(languages);
+}
+
} // anonymous namespace
TEST(NetUtilTest, FileURLConversion) {
@@ -681,7 +708,7 @@ TEST(NetUtilTest, GetFileNameFromCD) {
TEST(NetUtilTest, IDNToUnicodeFast) {
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(idn_cases); i++) {
for (size_t j = 0; j < arraysize(kLanguages); j++) {
- // ja || zh,zh-TW,en || ko,ja -> IDNToUnicodeSlow
+ // ja || zh-TW,en || ko,ja -> IDNToUnicodeSlow
if (j == 3 || j == 17 || j == 18)
continue;
std::wstring output;
@@ -692,6 +719,7 @@ TEST(NetUtilTest, IDNToUnicodeFast) {
std::wstring expected(idn_cases[i].unicode_allowed[j] ?
idn_cases[i].unicode_output :
ASCIIToWide(idn_cases[i].input));
+ AppendLanguagesToOutputs(kLanguages[j], &expected, &output);
EXPECT_EQ(expected, output);
}
}
@@ -700,7 +728,7 @@ TEST(NetUtilTest, IDNToUnicodeFast) {
TEST(NetUtilTest, IDNToUnicodeSlow) {
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(idn_cases); i++) {
for (size_t j = 0; j < arraysize(kLanguages); j++) {
- // !(ja || zh,zh-TW,en || ko,ja) -> IDNToUnicodeFast
+ // !(ja || zh-TW,en || ko,ja) -> IDNToUnicodeFast
if (!(j == 3 || j == 17 || j == 18))
continue;
std::wstring output;
@@ -711,6 +739,7 @@ TEST(NetUtilTest, IDNToUnicodeSlow) {
std::wstring expected(idn_cases[i].unicode_allowed[j] ?
idn_cases[i].unicode_output :
ASCIIToWide(idn_cases[i].input));
+ AppendLanguagesToOutputs(kLanguages[j], &expected, &output);
EXPECT_EQ(expected, output);
}
}