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 |