diff options
author | jshin@chromium.org <jshin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-15 18:05:50 +0000 |
---|---|---|
committer | jshin@chromium.org <jshin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-15 18:05:50 +0000 |
commit | 0185693d286274e9ddf47073db402f073441c5f7 (patch) | |
tree | a1f729a54b84f5f236858427f9d81c178653261f /net/base/net_util_unittest.cc | |
parent | ac2b04198d1ab44f5c30687a35c69744b2889e6a (diff) | |
download | chromium_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.cc | 55 |
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); } } |