| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // Unit tests for eliding and formatting utility functions. | 5 // Unit tests for eliding and formatting utility functions. |
| 6 | 6 |
| 7 #include "ui/gfx/text_elider.h" | 7 #include "ui/gfx/text_elider.h" |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 832 SetFontRenderParamsDeviceScaleFactor(1.25f); | 832 SetFontRenderParamsDeviceScaleFactor(1.25f); |
| 833 #define WIDTH(x) GetStringWidthF(UTF8ToUTF16(x), font_list) | 833 #define WIDTH(x) GetStringWidthF(UTF8ToUTF16(x), font_list) |
| 834 EXPECT_EQ(WIDTH("The administrator for this account has"), | 834 EXPECT_EQ(WIDTH("The administrator for this account has"), |
| 835 WIDTH("The ") + WIDTH("administrator ") + WIDTH("for ") + | 835 WIDTH("The ") + WIDTH("administrator ") + WIDTH("for ") + |
| 836 WIDTH("this ") + WIDTH("account ") + WIDTH("has")); | 836 WIDTH("this ") + WIDTH("account ") + WIDTH("has")); |
| 837 #undef WIDTH | 837 #undef WIDTH |
| 838 SetFontRenderParamsDeviceScaleFactor(1.0f); | 838 SetFontRenderParamsDeviceScaleFactor(1.0f); |
| 839 } | 839 } |
| 840 #endif // OS_CHROMEOS | 840 #endif // OS_CHROMEOS |
| 841 | 841 |
| 842 TEST(TextEliderTest, ElideRectangleString) { | 842 // TODO(338784): Enable this on android. |
| 843 #if defined(OS_ANDROID) |
| 844 #define MAYBE_ElideRectangleString DISABLED_ElideRectangleString |
| 845 #else |
| 846 #define MAYBE_ElideRectangleString ElideRectangleString |
| 847 #endif |
| 848 TEST(TextEliderTest, MAYBE_ElideRectangleString) { |
| 843 struct TestData { | 849 struct TestData { |
| 844 const char* input; | 850 const char* input; |
| 845 int max_rows; | 851 int max_rows; |
| 846 int max_cols; | 852 int max_cols; |
| 847 bool result; | 853 bool result; |
| 848 const char* output; | 854 const char* output; |
| 849 } cases[] = { | 855 } cases[] = { |
| 850 { "", 0, 0, false, "" }, | 856 { "", 0, 0, false, "" }, |
| 851 { "", 1, 1, false, "" }, | 857 { "", 1, 1, false, "" }, |
| 852 { "Hi, my name is\nTom", 0, 0, true, "..." }, | 858 { "Hi, my name is\nTom", 0, 0, true, "..." }, |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 915 base::string16 output; | 921 base::string16 output; |
| 916 for (size_t i = 0; i < arraysize(cases); ++i) { | 922 for (size_t i = 0; i < arraysize(cases); ++i) { |
| 917 EXPECT_EQ(cases[i].result, | 923 EXPECT_EQ(cases[i].result, |
| 918 ElideRectangleString(UTF8ToUTF16(cases[i].input), | 924 ElideRectangleString(UTF8ToUTF16(cases[i].input), |
| 919 cases[i].max_rows, cases[i].max_cols, | 925 cases[i].max_rows, cases[i].max_cols, |
| 920 true, &output)); | 926 true, &output)); |
| 921 EXPECT_EQ(cases[i].output, UTF16ToUTF8(output)); | 927 EXPECT_EQ(cases[i].output, UTF16ToUTF8(output)); |
| 922 } | 928 } |
| 923 } | 929 } |
| 924 | 930 |
| 925 TEST(TextEliderTest, ElideRectangleStringNotStrict) { | 931 // TODO(338784): Enable this on android. |
| 932 #if defined(OS_ANDROID) |
| 933 #define MAYBE_ElideRectangleStringNotStrict \ |
| 934 DISABLED_ElideRectangleStringNotStrict |
| 935 #else |
| 936 #define MAYBE_ElideRectangleStringNotStrict ElideRectangleStringNotStrict |
| 937 #endif |
| 938 TEST(TextEliderTest, MAYBE_ElideRectangleStringNotStrict) { |
| 926 struct TestData { | 939 struct TestData { |
| 927 const char* input; | 940 const char* input; |
| 928 int max_rows; | 941 int max_rows; |
| 929 int max_cols; | 942 int max_cols; |
| 930 bool result; | 943 bool result; |
| 931 const char* output; | 944 const char* output; |
| 932 } cases[] = { | 945 } cases[] = { |
| 933 { "", 0, 0, false, "" }, | 946 { "", 0, 0, false, "" }, |
| 934 { "", 1, 1, false, "" }, | 947 { "", 1, 1, false, "" }, |
| 935 { "Hi, my name_is\nDick", 0, 0, true, "..." }, | 948 { "Hi, my name_is\nDick", 0, 0, true, "..." }, |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 997 base::string16 output; | 1010 base::string16 output; |
| 998 for (size_t i = 0; i < arraysize(cases); ++i) { | 1011 for (size_t i = 0; i < arraysize(cases); ++i) { |
| 999 EXPECT_EQ(cases[i].result, | 1012 EXPECT_EQ(cases[i].result, |
| 1000 ElideRectangleString(UTF8ToUTF16(cases[i].input), | 1013 ElideRectangleString(UTF8ToUTF16(cases[i].input), |
| 1001 cases[i].max_rows, cases[i].max_cols, | 1014 cases[i].max_rows, cases[i].max_cols, |
| 1002 false, &output)); | 1015 false, &output)); |
| 1003 EXPECT_EQ(cases[i].output, UTF16ToUTF8(output)); | 1016 EXPECT_EQ(cases[i].output, UTF16ToUTF8(output)); |
| 1004 } | 1017 } |
| 1005 } | 1018 } |
| 1006 | 1019 |
| 1007 TEST(TextEliderTest, ElideRectangleWide16) { | 1020 // TODO(338784): Enable this on android. |
| 1021 #if defined(OS_ANDROID) |
| 1022 #define MAYBE_ElideRectangleWide16 DISABLED_ElideRectangleWide16 |
| 1023 #else |
| 1024 #define MAYBE_ElideRectangleWide16 ElideRectangleWide16 |
| 1025 #endif |
| 1026 TEST(TextEliderTest, MAYBE_ElideRectangleWide16) { |
| 1008 // Two greek words separated by space. | 1027 // Two greek words separated by space. |
| 1009 const base::string16 str(WideToUTF16( | 1028 const base::string16 str(WideToUTF16( |
| 1010 L"\x03a0\x03b1\x03b3\x03ba\x03cc\x03c3\x03bc\x03b9" | 1029 L"\x03a0\x03b1\x03b3\x03ba\x03cc\x03c3\x03bc\x03b9" |
| 1011 L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2")); | 1030 L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2")); |
| 1012 const base::string16 out1(WideToUTF16( | 1031 const base::string16 out1(WideToUTF16( |
| 1013 L"\x03a0\x03b1\x03b3\x03ba\n" | 1032 L"\x03a0\x03b1\x03b3\x03ba\n" |
| 1014 L"\x03cc\x03c3\x03bc\x03b9\n" | 1033 L"\x03cc\x03c3\x03bc\x03b9\n" |
| 1015 L"...")); | 1034 L"...")); |
| 1016 const base::string16 out2(WideToUTF16( | 1035 const base::string16 out2(WideToUTF16( |
| 1017 L"\x03a0\x03b1\x03b3\x03ba\x03cc\x03c3\x03bc\x03b9\x03bf\x03c2\x0020\n" | 1036 L"\x03a0\x03b1\x03b3\x03ba\x03cc\x03c3\x03bc\x03b9\x03bf\x03c2\x0020\n" |
| 1018 L"\x0399\x03c3\x03c4\x03cc\x03c2")); | 1037 L"\x0399\x03c3\x03c4\x03cc\x03c2")); |
| 1019 base::string16 output; | 1038 base::string16 output; |
| 1020 EXPECT_TRUE(ElideRectangleString(str, 2, 4, true, &output)); | 1039 EXPECT_TRUE(ElideRectangleString(str, 2, 4, true, &output)); |
| 1021 EXPECT_EQ(out1, output); | 1040 EXPECT_EQ(out1, output); |
| 1022 EXPECT_FALSE(ElideRectangleString(str, 2, 12, true, &output)); | 1041 EXPECT_FALSE(ElideRectangleString(str, 2, 12, true, &output)); |
| 1023 EXPECT_EQ(out2, output); | 1042 EXPECT_EQ(out2, output); |
| 1024 } | 1043 } |
| 1025 | 1044 |
| 1026 TEST(TextEliderTest, ElideRectangleWide32) { | 1045 // TODO(338784): Enable this on android. |
| 1046 #if defined(OS_ANDROID) |
| 1047 #define MAYBE_ElideRectangleWide32 DISABLED_ElideRectangleWide32 |
| 1048 #else |
| 1049 #define MAYBE_ElideRectangleWide32 ElideRectangleWide32 |
| 1050 #endif |
| 1051 TEST(TextEliderTest, MAYBE_ElideRectangleWide32) { |
| 1027 // Four U+1D49C MATHEMATICAL SCRIPT CAPITAL A followed by space "aaaaa". | 1052 // Four U+1D49C MATHEMATICAL SCRIPT CAPITAL A followed by space "aaaaa". |
| 1028 const base::string16 str(UTF8ToUTF16( | 1053 const base::string16 str(UTF8ToUTF16( |
| 1029 "\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C" | 1054 "\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C" |
| 1030 " aaaaa")); | 1055 " aaaaa")); |
| 1031 const base::string16 out(UTF8ToUTF16( | 1056 const base::string16 out(UTF8ToUTF16( |
| 1032 "\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\n" | 1057 "\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\n" |
| 1033 "\xF0\x9D\x92\x9C \naaa\n...")); | 1058 "\xF0\x9D\x92\x9C \naaa\n...")); |
| 1034 base::string16 output; | 1059 base::string16 output; |
| 1035 EXPECT_TRUE(ElideRectangleString(str, 3, 3, true, &output)); | 1060 EXPECT_TRUE(ElideRectangleString(str, 3, 3, true, &output)); |
| 1036 EXPECT_EQ(out, output); | 1061 EXPECT_EQ(out, output); |
| 1037 } | 1062 } |
| 1038 | 1063 |
| 1039 TEST(TextEliderTest, TruncateString) { | 1064 // TODO(338784): Enable this on android. |
| 1065 #if defined(OS_ANDROID) |
| 1066 #define MAYBE_TruncateString DISABLED_TruncateString |
| 1067 #else |
| 1068 #define MAYBE_TruncateString TruncateString |
| 1069 #endif |
| 1070 TEST(TextEliderTest, MAYBE_TruncateString) { |
| 1040 base::string16 string = ASCIIToUTF16("foooooey bxxxar baz"); | 1071 base::string16 string = ASCIIToUTF16("foooooey bxxxar baz"); |
| 1041 | 1072 |
| 1042 // Tests that apply to both break behaviors: | 1073 // Tests that apply to both break behaviors: |
| 1043 | 1074 |
| 1044 // Make sure it doesn't modify the string if length > string length. | 1075 // Make sure it doesn't modify the string if length > string length. |
| 1045 EXPECT_EQ(string, TruncateString(string, 100, WORD_BREAK)); | 1076 EXPECT_EQ(string, TruncateString(string, 100, WORD_BREAK)); |
| 1046 EXPECT_EQ(string, TruncateString(string, 100, CHARACTER_BREAK)); | 1077 EXPECT_EQ(string, TruncateString(string, 100, CHARACTER_BREAK)); |
| 1047 | 1078 |
| 1048 // Test no characters. | 1079 // Test no characters. |
| 1049 EXPECT_EQ(L"", UTF16ToWide(TruncateString(string, 0, WORD_BREAK))); | 1080 EXPECT_EQ(L"", UTF16ToWide(TruncateString(string, 0, WORD_BREAK))); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1080 // Test adds ... at right spot within a word. | 1111 // Test adds ... at right spot within a word. |
| 1081 EXPECT_EQ(L"f\x2026", UTF16ToWide(TruncateString(string, 2, | 1112 EXPECT_EQ(L"f\x2026", UTF16ToWide(TruncateString(string, 2, |
| 1082 CHARACTER_BREAK))); | 1113 CHARACTER_BREAK))); |
| 1083 | 1114 |
| 1084 // Test removes trailing whitespace if break falls between words. | 1115 // Test removes trailing whitespace if break falls between words. |
| 1085 EXPECT_EQ(L"foooooey\x2026", UTF16ToWide(TruncateString(string, 12, | 1116 EXPECT_EQ(L"foooooey\x2026", UTF16ToWide(TruncateString(string, 12, |
| 1086 CHARACTER_BREAK))); | 1117 CHARACTER_BREAK))); |
| 1087 } | 1118 } |
| 1088 | 1119 |
| 1089 } // namespace gfx | 1120 } // namespace gfx |
| OLD | NEW |