| Index: ui/base/text/text_elider_unittest.cc
|
| diff --git a/ui/base/text/text_elider_unittest.cc b/ui/base/text/text_elider_unittest.cc
|
| index 217170c812c0ab22813390f61dec2b9b660e8e2a..64affac4e45261927ac2fcd6552dfe0668b676e7 100644
|
| --- a/ui/base/text/text_elider_unittest.cc
|
| +++ b/ui/base/text/text_elider_unittest.cc
|
| @@ -55,6 +55,76 @@ void RunUrlTest(Testcase* testcases, size_t num_testcases) {
|
|
|
| } // namespace
|
|
|
| +TEST(TextEliderTest, ElideEmail) {
|
| + const std::string kEllipsisStr(kEllipsis);
|
| +
|
| + Testcase testcases[] = {
|
| + {"g@g.c", "g@g.c"},
|
| + {"g@g.c", kEllipsisStr},
|
| + {"ga@co.ca", "ga@c" + kEllipsisStr + "a"},
|
| + {"short@small.com", "s" + kEllipsisStr + "@s" + kEllipsisStr},
|
| + {"short@small.com", "s" + kEllipsisStr + "@small.com"},
|
| + {"short@longbutlotsofspace.com", "short@longbutlotsofspace.com"},
|
| + {"short@longbutnotverymuchspace.com",
|
| + "short@long" + kEllipsisStr + ".com"},
|
| + {"short@longbutverytightspace.ca",
|
| + "sh" + kEllipsisStr + "@l" + kEllipsisStr + "a"},
|
| + {"longusername@gmail.com", "long" + kEllipsisStr + "@gmail.com"},
|
| + {"elidetothemax@justfits.com", "e" + kEllipsisStr + "@justfits.com"},
|
| + {"somelongemail@thatdoesntfit.com",
|
| + "somelo" + kEllipsisStr + "@tha" + kEllipsisStr + "om"},
|
| + {"namefits@butthedomaindoesnt.com",
|
| + "namefits@butthedo" + kEllipsisStr + "snt.com"},
|
| + {"widthtootight@nospace.com", kEllipsisStr},
|
| + {"nospaceforusername@l", kEllipsisStr},
|
| + {"little@littlespace.com", "l" + kEllipsisStr + "@l" + kEllipsisStr},
|
| + {"l@lllllllll.com", "l@lllll" + kEllipsisStr + ".com"},
|
| + {"mmm@llllll", "m" + kEllipsisStr + "@l" + kEllipsisStr + "l"},
|
| + {"messed\"up@whyanat\"++@notgoogley.com",
|
| + "messed\"up@whyanat\"++@notgoogley.com"},
|
| + {"messed\"up@whyanat\"++@notgoogley.com",
|
| + "messed\"up@why" + kEllipsisStr + "@notgoogley.com"},
|
| + {"messed\"up@whyanat\"++@notgoogley.com",
|
| + "messe" + kEllipsisStr + "@not" + kEllipsisStr + "om"},
|
| + {"at\"@@@@@@@@@...@@.@.@.@@@\"@madness.com",
|
| + "at\"@@@@@@@@@...@@.@." + kEllipsisStr + "@madness.com"},
|
| + };
|
| +
|
| + const gfx::Font font;
|
| + for (size_t i = 0; i < arraysize(testcases); ++i) {
|
| + const string16 expected_output = UTF8ToUTF16(testcases[i].output);
|
| + EXPECT_EQ(expected_output,
|
| + ElideEmail(UTF8ToUTF16(testcases[i].input),
|
| + font,
|
| + font.GetStringWidth(expected_output)));
|
| + }
|
| +}
|
| +
|
| +TEST(TextEliderTest, ElideEmailMoreSpace) {
|
| + const int test_width_factors[] = {
|
| + 100,
|
| + 10000,
|
| + 1000000,
|
| + };
|
| + const std::string test_emails[] = {
|
| + "a@c",
|
| + "test@email.com",
|
| + "short@verysuperdupperlongdomain.com",
|
| + "supermegalongusername@withasuperlonnnggggdomain.gouv.qc.ca",
|
| + };
|
| +
|
| + const gfx::Font font;
|
| + for (size_t i = 0; i < arraysize(test_width_factors); ++i) {
|
| + const int test_width = test_width_factors[i] *
|
| + font.GetAverageCharacterWidth();
|
| + for (size_t j = 0; j < arraysize(test_emails); ++j) {
|
| + // Extra space is available: the email should not be elided.
|
| + const string16 test_email = UTF8ToUTF16(test_emails[j]);
|
| + EXPECT_EQ(test_email, ElideEmail(test_email, font, test_width));
|
| + }
|
| + }
|
| +}
|
| +
|
| // Test eliding of commonplace URLs.
|
| TEST(TextEliderTest, TestGeneralEliding) {
|
| const std::string kEllipsisStr(kEllipsis);
|
|
|