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..ba642270b685097f6f470fc6dc932ea870c56ff5 100644 |
--- a/ui/base/text/text_elider_unittest.cc |
+++ b/ui/base/text/text_elider_unittest.cc |
@@ -55,6 +55,66 @@ 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}, |
+ }; |
+ |
+ 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); |