Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: ui/gfx/render_text_unittest.cc

Issue 10543057: Initial RenderTextMac implementation using CoreText. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/gfx/render_text_mac.cc ('k') | ui/ui.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "ui/gfx/render_text.h" 5 #include "ui/gfx/render_text.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/base/l10n/l10n_util.h" 10 #include "ui/base/l10n/l10n_util.h"
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 EXPECT_EQ(ui::Range(0, 3), render_text->style_ranges()[0].range); 300 EXPECT_EQ(ui::Range(0, 3), render_text->style_ranges()[0].range);
301 301
302 SetTextWith2ExtraStyles(render_text.get()); 302 SetTextWith2ExtraStyles(render_text.get());
303 EXPECT_EQ(3U, render_text->style_ranges().size()); 303 EXPECT_EQ(3U, render_text->style_ranges().size());
304 304
305 render_text->SetText(ASCIIToUTF16("a")); 305 render_text->SetText(ASCIIToUTF16("a"));
306 EXPECT_EQ(1U, render_text->style_ranges().size()); 306 EXPECT_EQ(1U, render_text->style_ranges().size());
307 EXPECT_EQ(ui::Range(0, 1), render_text->style_ranges()[0].range); 307 EXPECT_EQ(ui::Range(0, 1), render_text->style_ranges()[0].range);
308 } 308 }
309 309
310 // TODO(asvitkine): Cursor movements tests disabled on Mac because RenderTextMac
311 // does not implement this yet. http://crbug.com/131618
312 #if !defined(OS_MACOSX)
310 void TestVisualCursorMotionInObscuredField(RenderText* render_text, 313 void TestVisualCursorMotionInObscuredField(RenderText* render_text,
311 const string16& text, 314 const string16& text,
312 bool select) { 315 bool select) {
313 render_text->SetText(text); 316 render_text->SetText(text);
314 int len = text.length(); 317 int len = text.length();
315 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, select); 318 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, select);
316 EXPECT_EQ(SelectionModel(ui::Range(select ? 0 : len, len), CURSOR_FORWARD), 319 EXPECT_EQ(SelectionModel(ui::Range(select ? 0 : len, len), CURSOR_FORWARD),
317 render_text->selection_model()); 320 render_text->selection_model());
318 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, select); 321 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, select);
319 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model()); 322 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model());
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 EXPECT_EQ(ui::Range(5), render_text->selection()); 793 EXPECT_EQ(ui::Range(5), render_text->selection());
791 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); 794 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
792 EXPECT_EQ(ui::Range(4), render_text->selection()); 795 EXPECT_EQ(ui::Range(4), render_text->selection());
793 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); 796 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true);
794 EXPECT_EQ(ui::Range(4, 5), render_text->selection()); 797 EXPECT_EQ(ui::Range(4, 5), render_text->selection());
795 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); 798 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true);
796 EXPECT_EQ(ui::Range(4, 6), render_text->selection()); 799 EXPECT_EQ(ui::Range(4, 6), render_text->selection());
797 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); 800 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
798 EXPECT_EQ(ui::Range(4), render_text->selection()); 801 EXPECT_EQ(ui::Range(4), render_text->selection());
799 } 802 }
803 #endif // !defined(OS_MACOSX)
800 804
801 // TODO(xji): Make these work on Windows. 805 // TODO(xji): Make these work on Windows.
802 #if defined(OS_LINUX) 806 #if defined(OS_LINUX)
803 void MoveLeftRightByWordVerifier(RenderText* render_text, 807 void MoveLeftRightByWordVerifier(RenderText* render_text,
804 const wchar_t* str) { 808 const wchar_t* str) {
805 render_text->SetText(WideToUTF16(str)); 809 render_text->SetText(WideToUTF16(str));
806 810
807 // Test moving by word from left ro right. 811 // Test moving by word from left ro right.
808 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false); 812 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
809 bool first_word = true; 813 bool first_word = true;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
961 #endif 965 #endif
962 966
963 TEST_F(RenderTextTest, StringSizeSanity) { 967 TEST_F(RenderTextTest, StringSizeSanity) {
964 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); 968 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
965 render_text->SetText(UTF8ToUTF16("Hello World")); 969 render_text->SetText(UTF8ToUTF16("Hello World"));
966 const Size string_size = render_text->GetStringSize(); 970 const Size string_size = render_text->GetStringSize();
967 EXPECT_GT(string_size.width(), 0); 971 EXPECT_GT(string_size.width(), 0);
968 EXPECT_GT(string_size.height(), 0); 972 EXPECT_GT(string_size.height(), 0);
969 } 973 }
970 974
975 // TODO(asvitkine): This test fails because PlatformFontMac uses point font
976 // sizes instead of pixel sizes like other implementations.
977 #if !defined(OS_MACOSX)
971 TEST_F(RenderTextTest, StringSizeEmptyString) { 978 TEST_F(RenderTextTest, StringSizeEmptyString) {
972 const Font font; 979 const Font font;
973 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); 980 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
974 render_text->SetFontList(FontList(font)); 981 render_text->SetFontList(FontList(font));
975 982
976 render_text->SetText(string16()); 983 render_text->SetText(string16());
977 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); 984 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height());
978 EXPECT_EQ(0, render_text->GetStringSize().width()); 985 EXPECT_EQ(0, render_text->GetStringSize().width());
979 986
980 render_text->SetText(UTF8ToUTF16(" ")); 987 render_text->SetText(UTF8ToUTF16(" "));
981 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); 988 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height());
982 } 989 }
990 #endif // !defined(OS_MACOSX)
983 991
984 TEST_F(RenderTextTest, StringSizeBoldWidth) { 992 TEST_F(RenderTextTest, StringSizeBoldWidth) {
985 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); 993 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
986 render_text->SetText(UTF8ToUTF16("Hello World")); 994 render_text->SetText(UTF8ToUTF16("Hello World"));
987 995
988 const int plain_width = render_text->GetStringSize().width(); 996 const int plain_width = render_text->GetStringSize().width();
989 EXPECT_GT(plain_width, 0); 997 EXPECT_GT(plain_width, 0);
990 998
991 // Apply a bold style and check that the new width is greater. 999 // Apply a bold style and check that the new width is greater.
992 StyleRange bold; 1000 StyleRange bold;
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 1156
1149 const Font& start_font = spans[start_paren_span_index].first; 1157 const Font& start_font = spans[start_paren_span_index].first;
1150 const Font& end_font = spans[end_paren_span_index].first; 1158 const Font& end_font = spans[end_paren_span_index].first;
1151 EXPECT_EQ(start_font.GetFontName(), end_font.GetFontName()); 1159 EXPECT_EQ(start_font.GetFontName(), end_font.GetFontName());
1152 EXPECT_EQ(start_font.GetFontSize(), end_font.GetFontSize()); 1160 EXPECT_EQ(start_font.GetFontSize(), end_font.GetFontSize());
1153 EXPECT_EQ(start_font.GetStyle(), end_font.GetStyle()); 1161 EXPECT_EQ(start_font.GetStyle(), end_font.GetStyle());
1154 } 1162 }
1155 } 1163 }
1156 } 1164 }
1157 1165
1166 // TODO(asvitkine): Cursor movements tests disabled on Mac because RenderTextMac
1167 // does not implement this yet. http://crbug.com/131618
1168 #if !defined(OS_MACOSX)
1158 TEST_F(RenderTextTest, DisplayRectShowsCursorLTR) { 1169 TEST_F(RenderTextTest, DisplayRectShowsCursorLTR) {
1159 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); 1170 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1160 render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg")); 1171 render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg"));
1161 render_text->MoveCursorTo(SelectionModel(render_text->text().length(), 1172 render_text->MoveCursorTo(SelectionModel(render_text->text().length(),
1162 CURSOR_FORWARD)); 1173 CURSOR_FORWARD));
1163 int width = render_text->GetStringSize().width(); 1174 int width = render_text->GetStringSize().width();
1164 ASSERT_GT(width, 10); 1175 ASSERT_GT(width, 10);
1165 1176
1166 // Ensure that the cursor is placed at the width of its preceding text. 1177 // Ensure that the cursor is placed at the width of its preceding text.
1167 render_text->SetDisplayRect(Rect(width + 10, 1)); 1178 render_text->SetDisplayRect(Rect(width + 10, 1));
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 1270
1260 // Ensure that a sufficiently large display rectangle shows all the text. 1271 // Ensure that a sufficiently large display rectangle shows all the text.
1261 render_text->SetDisplayRect(Rect(width + 10, 1)); 1272 render_text->SetDisplayRect(Rect(width + 10, 1));
1262 EXPECT_EQ(render_text->display_rect().width() - width - 1, 1273 EXPECT_EQ(render_text->display_rect().width() - width - 1,
1263 render_text->GetUpdatedCursorBounds().x()); 1274 render_text->GetUpdatedCursorBounds().x());
1264 1275
1265 // Reset the application default text direction to LTR. 1276 // Reset the application default text direction to LTR.
1266 SetRTL(was_rtl); 1277 SetRTL(was_rtl);
1267 EXPECT_EQ(was_rtl, base::i18n::IsRTL()); 1278 EXPECT_EQ(was_rtl, base::i18n::IsRTL());
1268 } 1279 }
1280 #endif // !defined(OS_MACOSX)
1269 1281
1270 } // namespace gfx 1282 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/render_text_mac.cc ('k') | ui/ui.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698