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

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

Issue 7265011: RenderText API Outline. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add TODO comments, revise cursor movement API, etc. Created 9 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
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/gfx/render_text.h"
6
7 #include "base/utf_string_conversions.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace gfx {
11
12 class RenderTextTest : public testing::Test {
13 };
14
15 TEST_F(RenderTextTest, DefaultStyle) {
16 // Defaults to empty text with no styles.
17 gfx::RenderText* render_text = gfx::RenderText::CreateRenderText();
18 EXPECT_TRUE(render_text->text().empty());
19 EXPECT_TRUE(render_text->get_style_ranges().empty());
20
21 // Test that the built-in default style is applied for new text.
22 render_text->SetText(ASCIIToUTF16("abc"));
23 EXPECT_EQ(1U, render_text->get_style_ranges().size());
24 gfx::StyleRange style;
25 EXPECT_EQ(style.font.GetFontName(),
26 render_text->get_style_ranges()[0].font.GetFontName());
27 EXPECT_EQ(style.foreground, render_text->get_style_ranges()[0].foreground);
28 EXPECT_EQ(ui::Range(0, 3), render_text->get_style_ranges()[0].range);
29 EXPECT_EQ(style.strike, render_text->get_style_ranges()[0].strike);
30 EXPECT_EQ(style.underline, render_text->get_style_ranges()[0].underline);
31
32 // Test that clearing the text also clears the styles.
33 render_text->SetText(string16());
34 EXPECT_TRUE(render_text->text().empty());
35 EXPECT_TRUE(render_text->get_style_ranges().empty());
36 }
37
38 TEST_F(RenderTextTest, CustomDefaultStyle) {
39 // Test a custom default style.
40 gfx::RenderText* render_text = gfx::RenderText::CreateRenderText();
41 gfx::StyleRange color;
42 color.foreground = SK_ColorRED;
43 render_text->set_default_style(color);
44 render_text->SetText(ASCIIToUTF16("abc"));
45 EXPECT_EQ(1U, render_text->get_style_ranges().size());
46 EXPECT_EQ(color.foreground, render_text->get_style_ranges()[0].foreground);
47
48 // Test that the custom default style persists across clearing text.
49 render_text->SetText(string16());
50 EXPECT_TRUE(render_text->get_style_ranges().empty());
51 render_text->SetText(ASCIIToUTF16("abc"));
52 EXPECT_EQ(1U, render_text->get_style_ranges().size());
53 EXPECT_EQ(color.foreground, render_text->get_style_ranges()[0].foreground);
54
55 // Test ApplyDefaultStyle after setting a new default.
56 gfx::StyleRange strike;
57 strike.strike = true;
58 render_text->set_default_style(strike);
59 render_text->ApplyDefaultStyle();
60 EXPECT_EQ(1U, render_text->get_style_ranges().size());
61 EXPECT_EQ(true, render_text->get_style_ranges()[0].strike);
62 EXPECT_EQ(strike.foreground, render_text->get_style_ranges()[0].foreground);
63 }
64
65 TEST_F(RenderTextTest, ApplyStyleRange) {
66 gfx::RenderText* render_text = gfx::RenderText::CreateRenderText();
67 render_text->SetText(ASCIIToUTF16("01234"));
68 EXPECT_EQ(1U, render_text->get_style_ranges().size());
69
70 // Test ApplyStyleRange (no-op on empty range).
71 gfx::StyleRange empty;
72 empty.range = ui::Range(1, 1);
73 render_text->ApplyStyleRange(empty);
74 EXPECT_EQ(1U, render_text->get_style_ranges().size());
75
76 // Test ApplyStyleRange (no-op on invalid range).
77 gfx::StyleRange invalid;
78 invalid.range = ui::Range::InvalidRange();
79 render_text->ApplyStyleRange(invalid);
80 EXPECT_EQ(1U, render_text->get_style_ranges().size());
81
82 // Apply a style with a range contained by an existing range.
83 gfx::StyleRange underline;
84 underline.underline = true;
85 underline.range = ui::Range(2, 3);
86 render_text->ApplyStyleRange(underline);
87 EXPECT_EQ(3U, render_text->get_style_ranges().size());
88 EXPECT_EQ(ui::Range(0, 2), render_text->get_style_ranges()[0].range);
89 EXPECT_FALSE(render_text->get_style_ranges()[0].underline);
90 EXPECT_EQ(ui::Range(2, 3), render_text->get_style_ranges()[1].range);
91 EXPECT_TRUE(render_text->get_style_ranges()[1].underline);
92 EXPECT_EQ(ui::Range(3, 5), render_text->get_style_ranges()[2].range);
93 EXPECT_FALSE(render_text->get_style_ranges()[2].underline);
94
95 // Apply a style with a range equal to another range.
96 gfx::StyleRange color;
97 color.foreground = SK_ColorWHITE;
98 color.range = ui::Range(2, 3);
99 render_text->ApplyStyleRange(color);
100 EXPECT_EQ(3U, render_text->get_style_ranges().size());
101 EXPECT_EQ(ui::Range(0, 2), render_text->get_style_ranges()[0].range);
102 EXPECT_NE(SK_ColorWHITE, render_text->get_style_ranges()[0].foreground);
103 EXPECT_FALSE(render_text->get_style_ranges()[0].underline);
104 EXPECT_EQ(ui::Range(2, 3), render_text->get_style_ranges()[1].range);
105 EXPECT_EQ(SK_ColorWHITE, render_text->get_style_ranges()[1].foreground);
106 EXPECT_FALSE(render_text->get_style_ranges()[1].underline);
107 EXPECT_EQ(ui::Range(3, 5), render_text->get_style_ranges()[2].range);
108 EXPECT_NE(SK_ColorWHITE, render_text->get_style_ranges()[2].foreground);
109 EXPECT_FALSE(render_text->get_style_ranges()[2].underline);
110
111 // Apply a style with a range containing an existing range.
112 // This new style also overlaps portions of neighboring ranges.
113 gfx::StyleRange strike;
114 strike.strike = true;
115 strike.range = ui::Range(1, 4);
116 render_text->ApplyStyleRange(strike);
117 EXPECT_EQ(3U, render_text->get_style_ranges().size());
118 EXPECT_EQ(ui::Range(0, 1), render_text->get_style_ranges()[0].range);
119 EXPECT_FALSE(render_text->get_style_ranges()[0].strike);
120 EXPECT_EQ(ui::Range(1, 4), render_text->get_style_ranges()[1].range);
121 EXPECT_TRUE(render_text->get_style_ranges()[1].strike);
122 EXPECT_EQ(ui::Range(4, 5), render_text->get_style_ranges()[2].range);
123 EXPECT_FALSE(render_text->get_style_ranges()[2].strike);
124
125 // Apply a style overlapping all ranges.
126 gfx::StyleRange strike_underline;
127 strike_underline.strike = true;
128 strike_underline.underline = true;
129 strike_underline.range = ui::Range(0, render_text->text().length());
130 render_text->ApplyStyleRange(strike_underline);
131 EXPECT_EQ(1U, render_text->get_style_ranges().size());
132 EXPECT_EQ(ui::Range(0, 5), render_text->get_style_ranges()[0].range);
133 EXPECT_TRUE(render_text->get_style_ranges()[0].underline);
134 EXPECT_TRUE(render_text->get_style_ranges()[0].strike);
135
136 // Apply the default style.
137 render_text->ApplyDefaultStyle();
138 EXPECT_EQ(1U, render_text->get_style_ranges().size());
139 EXPECT_EQ(ui::Range(0, 5), render_text->get_style_ranges()[0].range);
140 EXPECT_FALSE(render_text->get_style_ranges()[0].underline);
141 EXPECT_FALSE(render_text->get_style_ranges()[0].strike);
142 }
143
144 TEST_F(RenderTextTest, StyleRangesAdjust) {
145 // Test that style ranges adjust to the text size.
146 gfx::RenderText* render_text = gfx::RenderText::CreateRenderText();
147 render_text->SetText(ASCIIToUTF16("abcdef"));
148 EXPECT_EQ(1U, render_text->get_style_ranges().size());
149 EXPECT_EQ(ui::Range(0, 6), render_text->get_style_ranges()[0].range);
150
151 // Test that the range is clipped to the length of shorter text.
152 render_text->SetText(ASCIIToUTF16("abc"));
153 EXPECT_EQ(1U, render_text->get_style_ranges().size());
154 EXPECT_EQ(ui::Range(0, 3), render_text->get_style_ranges()[0].range);
155
156 // Test that the last range extends to the length of longer text.
157 gfx::StyleRange strike;
158 strike.strike = true;
159 strike.range = ui::Range(2, 3);
160 render_text->ApplyStyleRange(strike);
161 render_text->SetText(ASCIIToUTF16("abcdefghi"));
162 EXPECT_EQ(2U, render_text->get_style_ranges().size());
163 EXPECT_EQ(ui::Range(0, 2), render_text->get_style_ranges()[0].range);
164 EXPECT_EQ(ui::Range(2, 9), render_text->get_style_ranges()[1].range);
165 EXPECT_TRUE(render_text->get_style_ranges()[1].strike);
166
167 // Test that ranges are removed if they're outside the range of shorter text.
168 render_text->SetText(ASCIIToUTF16("ab"));
169 EXPECT_EQ(1U, render_text->get_style_ranges().size());
170 EXPECT_EQ(ui::Range(0, 2), render_text->get_style_ranges()[0].range);
171 EXPECT_FALSE(render_text->get_style_ranges()[0].strike);
172
173 // Test that previously removed ranges don't return.
174 render_text->SetText(ASCIIToUTF16("abcdef"));
175 EXPECT_EQ(1U, render_text->get_style_ranges().size());
176 EXPECT_EQ(ui::Range(0, 6), render_text->get_style_ranges()[0].range);
177 EXPECT_FALSE(render_text->get_style_ranges()[0].strike);
178 }
179
180 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698