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 #include "ui/gfx/font_list.h" | 5 #include "ui/gfx/font_list.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 font_string += "|bold"; | 22 font_string += "|bold"; |
23 if (style & gfx::Font::ITALIC) | 23 if (style & gfx::Font::ITALIC) |
24 font_string += "|italic"; | 24 font_string += "|italic"; |
25 return font_string; | 25 return font_string; |
26 } | 26 } |
27 | 27 |
28 } // namespace | 28 } // namespace |
29 | 29 |
30 namespace gfx { | 30 namespace gfx { |
31 | 31 |
32 typedef testing::Test FontListTest; | 32 TEST(FontListTest, FontDescString_FromDescString) { |
33 | |
34 TEST_F(FontListTest, FontDescString_FromDescString) { | |
35 // Test init from font name style size string. | 33 // Test init from font name style size string. |
36 FontList font_list = FontList("Droid Sans serif, Sans serif, 10px"); | 34 FontList font_list = FontList("Droid Sans serif, Sans serif, 10px"); |
37 const std::string& font_str = font_list.GetFontDescriptionString(); | 35 const std::string& font_str = font_list.GetFontDescriptionString(); |
38 EXPECT_EQ("Droid Sans serif, Sans serif, 10px", font_str); | 36 EXPECT_EQ("Droid Sans serif, Sans serif, 10px", font_str); |
39 } | 37 } |
40 | 38 |
41 TEST_F(FontListTest, FontDescString_FromFont) { | 39 TEST(FontListTest, FontDescString_FromFont) { |
42 // Test init from Font. | 40 // Test init from Font. |
43 Font font("Arial", 8); | 41 Font font("Arial", 8); |
44 FontList font_list = FontList(font); | 42 FontList font_list = FontList(font); |
45 const std::string& font_str = font_list.GetFontDescriptionString(); | 43 const std::string& font_str = font_list.GetFontDescriptionString(); |
46 EXPECT_EQ("Arial,8px", font_str); | 44 EXPECT_EQ("Arial,8px", font_str); |
47 } | 45 } |
48 | 46 |
49 TEST_F(FontListTest, FontDescString_FromFontWithNonNormalStyle) { | 47 TEST(FontListTest, FontDescString_FromFontWithNonNormalStyle) { |
50 // Test init from Font with non-normal style. | 48 // Test init from Font with non-normal style. |
51 Font font("Arial", 8); | 49 Font font("Arial", 8); |
52 FontList font_list = FontList(font.DeriveFont(2, Font::BOLD)); | 50 FontList font_list = FontList(font.DeriveFont(2, Font::BOLD)); |
53 EXPECT_EQ("Arial,Bold 10px", font_list.GetFontDescriptionString()); | 51 EXPECT_EQ("Arial,Bold 10px", font_list.GetFontDescriptionString()); |
54 | 52 |
55 font_list = FontList(font.DeriveFont(-2, Font::ITALIC)); | 53 font_list = FontList(font.DeriveFont(-2, Font::ITALIC)); |
56 EXPECT_EQ("Arial,Italic 6px", font_list.GetFontDescriptionString()); | 54 EXPECT_EQ("Arial,Italic 6px", font_list.GetFontDescriptionString()); |
57 } | 55 } |
58 | 56 |
59 TEST_F(FontListTest, FontDescString_FromFontVector) { | 57 TEST(FontListTest, FontDescString_FromFontVector) { |
60 // Test init from Font vector. | 58 // Test init from Font vector. |
61 Font font("Arial", 8); | 59 Font font("Arial", 8); |
62 Font font_1("Sans serif", 10); | 60 Font font_1("Sans serif", 10); |
63 std::vector<Font> fonts; | 61 std::vector<Font> fonts; |
64 fonts.push_back(font.DeriveFont(0, Font::BOLD)); | 62 fonts.push_back(font.DeriveFont(0, Font::BOLD)); |
65 fonts.push_back(font_1.DeriveFont(-2, Font::BOLD)); | 63 fonts.push_back(font_1.DeriveFont(-2, Font::BOLD)); |
66 FontList font_list = FontList(fonts); | 64 FontList font_list = FontList(fonts); |
67 const std::string& font_str = font_list.GetFontDescriptionString(); | 65 const std::string& font_str = font_list.GetFontDescriptionString(); |
68 EXPECT_EQ("Arial,Sans serif,Bold 8px", font_str); | 66 EXPECT_EQ("Arial,Sans serif,Bold 8px", font_str); |
69 } | 67 } |
70 | 68 |
71 TEST_F(FontListTest, Fonts_FromDescString) { | 69 TEST(FontListTest, Fonts_FromDescString) { |
72 // Test init from font name size string. | 70 // Test init from font name size string. |
73 FontList font_list = FontList("serif,Sans serif, 13px"); | 71 FontList font_list = FontList("serif,Sans serif, 13px"); |
74 const std::vector<Font>& fonts = font_list.GetFonts(); | 72 const std::vector<Font>& fonts = font_list.GetFonts(); |
75 EXPECT_EQ(2U, fonts.size()); | 73 EXPECT_EQ(2U, fonts.size()); |
76 EXPECT_EQ("serif|13", FontToString(fonts[0])); | 74 EXPECT_EQ("serif|13", FontToString(fonts[0])); |
77 EXPECT_EQ("Sans serif|13", FontToString(fonts[1])); | 75 EXPECT_EQ("Sans serif|13", FontToString(fonts[1])); |
78 } | 76 } |
79 | 77 |
80 TEST_F(FontListTest, Fonts_FromDescStringInFlexibleFormat) { | 78 TEST(FontListTest, Fonts_FromDescStringInFlexibleFormat) { |
81 // Test init from font name size string with flexible format. | 79 // Test init from font name size string with flexible format. |
82 FontList font_list = FontList(" serif , Sans serif , 13px"); | 80 FontList font_list = FontList(" serif , Sans serif , 13px"); |
83 const std::vector<Font>& fonts = font_list.GetFonts(); | 81 const std::vector<Font>& fonts = font_list.GetFonts(); |
84 EXPECT_EQ(2U, fonts.size()); | 82 EXPECT_EQ(2U, fonts.size()); |
85 EXPECT_EQ("serif|13", FontToString(fonts[0])); | 83 EXPECT_EQ("serif|13", FontToString(fonts[0])); |
86 EXPECT_EQ("Sans serif|13", FontToString(fonts[1])); | 84 EXPECT_EQ("Sans serif|13", FontToString(fonts[1])); |
87 } | 85 } |
88 | 86 |
89 TEST_F(FontListTest, Fonts_FromDescStringWithStyleInFlexibleFormat) { | 87 TEST(FontListTest, Fonts_FromDescStringWithStyleInFlexibleFormat) { |
90 // Test init from font name style size string with flexible format. | 88 // Test init from font name style size string with flexible format. |
91 FontList font_list = FontList(" serif , Sans serif , Bold " | 89 FontList font_list = FontList(" serif , Sans serif , Bold " |
92 " Italic 13px"); | 90 " Italic 13px"); |
93 const std::vector<Font>& fonts = font_list.GetFonts(); | 91 const std::vector<Font>& fonts = font_list.GetFonts(); |
94 EXPECT_EQ(2U, fonts.size()); | 92 EXPECT_EQ(2U, fonts.size()); |
95 EXPECT_EQ("serif|13|bold|italic", FontToString(fonts[0])); | 93 EXPECT_EQ("serif|13|bold|italic", FontToString(fonts[0])); |
96 EXPECT_EQ("Sans serif|13|bold|italic", FontToString(fonts[1])); | 94 EXPECT_EQ("Sans serif|13|bold|italic", FontToString(fonts[1])); |
97 } | 95 } |
98 | 96 |
99 TEST_F(FontListTest, Fonts_FromFont) { | 97 TEST(FontListTest, Fonts_FromFont) { |
100 // Test init from Font. | 98 // Test init from Font. |
101 Font font("Arial", 8); | 99 Font font("Arial", 8); |
102 FontList font_list = FontList(font); | 100 FontList font_list = FontList(font); |
103 const std::vector<Font>& fonts = font_list.GetFonts(); | 101 const std::vector<Font>& fonts = font_list.GetFonts(); |
104 EXPECT_EQ(1U, fonts.size()); | 102 EXPECT_EQ(1U, fonts.size()); |
105 EXPECT_EQ("Arial|8", FontToString(fonts[0])); | 103 EXPECT_EQ("Arial|8", FontToString(fonts[0])); |
106 } | 104 } |
107 | 105 |
108 TEST_F(FontListTest, Fonts_FromFontWithNonNormalStyle) { | 106 TEST(FontListTest, Fonts_FromFontWithNonNormalStyle) { |
109 // Test init from Font with non-normal style. | 107 // Test init from Font with non-normal style. |
110 Font font("Arial", 8); | 108 Font font("Arial", 8); |
111 FontList font_list = FontList(font.DeriveFont(2, Font::BOLD)); | 109 FontList font_list = FontList(font.DeriveFont(2, Font::BOLD)); |
112 std::vector<Font> fonts = font_list.GetFonts(); | 110 std::vector<Font> fonts = font_list.GetFonts(); |
113 EXPECT_EQ(1U, fonts.size()); | 111 EXPECT_EQ(1U, fonts.size()); |
114 EXPECT_EQ("Arial|10|bold", FontToString(fonts[0])); | 112 EXPECT_EQ("Arial|10|bold", FontToString(fonts[0])); |
115 | 113 |
116 font_list = FontList(font.DeriveFont(-2, Font::ITALIC)); | 114 font_list = FontList(font.DeriveFont(-2, Font::ITALIC)); |
117 fonts = font_list.GetFonts(); | 115 fonts = font_list.GetFonts(); |
118 EXPECT_EQ(1U, fonts.size()); | 116 EXPECT_EQ(1U, fonts.size()); |
119 EXPECT_EQ("Arial|6|italic", FontToString(fonts[0])); | 117 EXPECT_EQ("Arial|6|italic", FontToString(fonts[0])); |
120 } | 118 } |
121 | 119 |
122 TEST_F(FontListTest, Fonts_FromFontVector) { | 120 TEST(FontListTest, Fonts_FromFontVector) { |
123 // Test init from Font vector. | 121 // Test init from Font vector. |
124 Font font("Arial", 8); | 122 Font font("Arial", 8); |
125 Font font_1("Sans serif", 10); | 123 Font font_1("Sans serif", 10); |
126 std::vector<Font> input_fonts; | 124 std::vector<Font> input_fonts; |
127 input_fonts.push_back(font.DeriveFont(0, Font::BOLD)); | 125 input_fonts.push_back(font.DeriveFont(0, Font::BOLD)); |
128 input_fonts.push_back(font_1.DeriveFont(-2, Font::BOLD)); | 126 input_fonts.push_back(font_1.DeriveFont(-2, Font::BOLD)); |
129 FontList font_list = FontList(input_fonts); | 127 FontList font_list = FontList(input_fonts); |
130 const std::vector<Font>& fonts = font_list.GetFonts(); | 128 const std::vector<Font>& fonts = font_list.GetFonts(); |
131 EXPECT_EQ(2U, fonts.size()); | 129 EXPECT_EQ(2U, fonts.size()); |
132 EXPECT_EQ("Arial|8|bold", FontToString(fonts[0])); | 130 EXPECT_EQ("Arial|8|bold", FontToString(fonts[0])); |
133 EXPECT_EQ("Sans serif|8|bold", FontToString(fonts[1])); | 131 EXPECT_EQ("Sans serif|8|bold", FontToString(fonts[1])); |
134 } | 132 } |
135 | 133 |
136 TEST_F(FontListTest, Fonts_DescStringWithStyleInFlexibleFormat_RoundTrip) { | 134 TEST(FontListTest, Fonts_DescStringWithStyleInFlexibleFormat_RoundTrip) { |
137 // Test round trip from font description string to font vector to | 135 // Test round trip from font description string to font vector to |
138 // font description string. | 136 // font description string. |
139 FontList font_list = FontList(" serif , Sans serif , Bold " | 137 FontList font_list = FontList(" serif , Sans serif , Bold " |
140 " Italic 13px"); | 138 " Italic 13px"); |
141 | 139 |
142 const std::vector<Font>& fonts = font_list.GetFonts(); | 140 const std::vector<Font>& fonts = font_list.GetFonts(); |
143 FontList font_list_1 = FontList(fonts); | 141 FontList font_list_1 = FontList(fonts); |
144 const std::string& desc_str = font_list_1.GetFontDescriptionString(); | 142 const std::string& desc_str = font_list_1.GetFontDescriptionString(); |
145 | 143 |
146 EXPECT_EQ("serif,Sans serif,Bold Italic 13px", desc_str); | 144 EXPECT_EQ("serif,Sans serif,Bold Italic 13px", desc_str); |
147 } | 145 } |
148 | 146 |
149 TEST_F(FontListTest, Fonts_FontVector_RoundTrip) { | 147 TEST(FontListTest, Fonts_FontVector_RoundTrip) { |
150 // Test round trip from font vector to font description string to font vector. | 148 // Test round trip from font vector to font description string to font vector. |
151 Font font("Arial", 8); | 149 Font font("Arial", 8); |
152 Font font_1("Sans serif", 10); | 150 Font font_1("Sans serif", 10); |
153 std::vector<Font> input_fonts; | 151 std::vector<Font> input_fonts; |
154 input_fonts.push_back(font.DeriveFont(0, Font::BOLD)); | 152 input_fonts.push_back(font.DeriveFont(0, Font::BOLD)); |
155 input_fonts.push_back(font_1.DeriveFont(-2, Font::BOLD)); | 153 input_fonts.push_back(font_1.DeriveFont(-2, Font::BOLD)); |
156 FontList font_list = FontList(input_fonts); | 154 FontList font_list = FontList(input_fonts); |
157 | 155 |
158 const std::string& desc_string = font_list.GetFontDescriptionString(); | 156 const std::string& desc_string = font_list.GetFontDescriptionString(); |
159 FontList font_list_1 = FontList(desc_string); | 157 FontList font_list_1 = FontList(desc_string); |
160 const std::vector<Font>& round_trip_fonts = font_list_1.GetFonts(); | 158 const std::vector<Font>& round_trip_fonts = font_list_1.GetFonts(); |
161 | 159 |
162 EXPECT_EQ(2U, round_trip_fonts.size()); | 160 EXPECT_EQ(2U, round_trip_fonts.size()); |
163 EXPECT_EQ("Arial|8|bold", FontToString(round_trip_fonts[0])); | 161 EXPECT_EQ("Arial|8|bold", FontToString(round_trip_fonts[0])); |
164 EXPECT_EQ("Sans serif|8|bold", FontToString(round_trip_fonts[1])); | 162 EXPECT_EQ("Sans serif|8|bold", FontToString(round_trip_fonts[1])); |
165 } | 163 } |
166 | 164 |
167 TEST_F(FontListTest, FontDescString_GetStyle) { | 165 TEST(FontListTest, FontDescString_GetStyle) { |
168 FontList font_list = FontList("Arial,Sans serif, 8px"); | 166 FontList font_list = FontList("Arial,Sans serif, 8px"); |
169 EXPECT_EQ(Font::NORMAL, font_list.GetFontStyle()); | 167 EXPECT_EQ(Font::NORMAL, font_list.GetFontStyle()); |
170 | 168 |
171 font_list = FontList("Arial,Sans serif,Bold 8px"); | 169 font_list = FontList("Arial,Sans serif,Bold 8px"); |
172 EXPECT_EQ(Font::BOLD, font_list.GetFontStyle()); | 170 EXPECT_EQ(Font::BOLD, font_list.GetFontStyle()); |
173 | 171 |
174 font_list = FontList("Arial,Sans serif,Italic 8px"); | 172 font_list = FontList("Arial,Sans serif,Italic 8px"); |
175 EXPECT_EQ(Font::ITALIC, font_list.GetFontStyle()); | 173 EXPECT_EQ(Font::ITALIC, font_list.GetFontStyle()); |
176 | 174 |
177 font_list = FontList("Arial,Italic Bold 8px"); | 175 font_list = FontList("Arial,Italic Bold 8px"); |
178 EXPECT_EQ(Font::BOLD | Font::ITALIC, font_list.GetFontStyle()); | 176 EXPECT_EQ(Font::BOLD | Font::ITALIC, font_list.GetFontStyle()); |
179 } | 177 } |
180 | 178 |
181 TEST_F(FontListTest, Fonts_GetStyle) { | 179 TEST(FontListTest, Fonts_GetStyle) { |
182 std::vector<Font> fonts; | 180 std::vector<Font> fonts; |
183 fonts.push_back(gfx::Font("Arial", 8)); | 181 fonts.push_back(gfx::Font("Arial", 8)); |
184 fonts.push_back(gfx::Font("Sans serif", 8)); | 182 fonts.push_back(gfx::Font("Sans serif", 8)); |
185 FontList font_list = FontList(fonts); | 183 FontList font_list = FontList(fonts); |
186 EXPECT_EQ(Font::NORMAL, font_list.GetFontStyle()); | 184 EXPECT_EQ(Font::NORMAL, font_list.GetFontStyle()); |
187 fonts[0] = fonts[0].DeriveFont(0, Font::ITALIC | Font::BOLD); | 185 fonts[0] = fonts[0].DeriveFont(0, Font::ITALIC | Font::BOLD); |
188 fonts[1] = fonts[1].DeriveFont(0, Font::ITALIC | Font::BOLD); | 186 fonts[1] = fonts[1].DeriveFont(0, Font::ITALIC | Font::BOLD); |
189 font_list = FontList(fonts); | 187 font_list = FontList(fonts); |
190 EXPECT_EQ(Font::ITALIC | Font::BOLD, font_list.GetFontStyle()); | 188 EXPECT_EQ(Font::ITALIC | Font::BOLD, font_list.GetFontStyle()); |
191 } | 189 } |
192 | 190 |
193 TEST_F(FontListTest, FontDescString_DeriveFontList) { | 191 TEST(FontListTest, FontDescString_DeriveFontList) { |
194 FontList font_list = FontList("Arial,Sans serif, 8px"); | 192 FontList font_list = FontList("Arial,Sans serif, 8px"); |
195 | 193 |
196 FontList derived = font_list.DeriveFontList(Font::BOLD | Font::ITALIC); | 194 FontList derived = font_list.DeriveFontList(Font::BOLD | Font::ITALIC); |
197 EXPECT_EQ("Arial,Sans serif,Bold Italic 8px", | 195 EXPECT_EQ("Arial,Sans serif,Bold Italic 8px", |
198 derived.GetFontDescriptionString()); | 196 derived.GetFontDescriptionString()); |
199 } | 197 } |
200 | 198 |
201 TEST_F(FontListTest, Fonts_DeriveFontList) { | 199 TEST(FontListTest, Fonts_DeriveFontList) { |
202 std::vector<Font> fonts; | 200 std::vector<Font> fonts; |
203 fonts.push_back(gfx::Font("Arial", 8)); | 201 fonts.push_back(gfx::Font("Arial", 8)); |
204 fonts.push_back(gfx::Font("Sans serif", 8)); | 202 fonts.push_back(gfx::Font("Sans serif", 8)); |
205 FontList font_list = FontList(fonts); | 203 FontList font_list = FontList(fonts); |
206 | 204 |
207 FontList derived = font_list.DeriveFontList(Font::BOLD | Font::ITALIC); | 205 FontList derived = font_list.DeriveFontList(Font::BOLD | Font::ITALIC); |
208 const std::vector<Font>& derived_fonts = derived.GetFonts(); | 206 const std::vector<Font>& derived_fonts = derived.GetFonts(); |
209 | 207 |
210 EXPECT_EQ(2U, derived_fonts.size()); | 208 EXPECT_EQ(2U, derived_fonts.size()); |
211 EXPECT_EQ("Arial|8|bold|italic", FontToString(derived_fonts[0])); | 209 EXPECT_EQ("Arial|8|bold|italic", FontToString(derived_fonts[0])); |
212 EXPECT_EQ("Sans serif|8|bold|italic", FontToString(derived_fonts[1])); | 210 EXPECT_EQ("Sans serif|8|bold|italic", FontToString(derived_fonts[1])); |
213 } | 211 } |
214 | 212 |
215 TEST_F(FontListTest, FontDescString_DeriveFontListWithSize) { | 213 TEST(FontListTest, FontDescString_DeriveFontListWithSize) { |
216 FontList font_list = FontList("Arial,Sans serif,Bold Italic 8px"); | 214 FontList font_list = FontList("Arial,Sans serif,Bold Italic 8px"); |
217 | 215 |
218 FontList derived = font_list.DeriveFontListWithSize(10); | 216 FontList derived = font_list.DeriveFontListWithSize(10); |
219 EXPECT_EQ("Arial,Sans serif,Bold Italic 10px", | 217 EXPECT_EQ("Arial,Sans serif,Bold Italic 10px", |
220 derived.GetFontDescriptionString()); | 218 derived.GetFontDescriptionString()); |
221 } | 219 } |
222 | 220 |
223 TEST_F(FontListTest, Fonts_DeriveFontListWithSize) { | 221 TEST(FontListTest, Fonts_DeriveFontListWithSize) { |
224 std::vector<Font> fonts; | 222 std::vector<Font> fonts; |
225 fonts.push_back(gfx::Font("Arial", 8)); | 223 fonts.push_back(gfx::Font("Arial", 8)); |
226 fonts.push_back(gfx::Font("Sans serif", 8)); | 224 fonts.push_back(gfx::Font("Sans serif", 8)); |
227 FontList font_list = FontList(fonts); | 225 FontList font_list = FontList(fonts); |
228 | 226 |
229 FontList derived = font_list.DeriveFontListWithSize(5); | 227 FontList derived = font_list.DeriveFontListWithSize(5); |
230 const std::vector<Font>& derived_fonts = derived.GetFonts(); | 228 const std::vector<Font>& derived_fonts = derived.GetFonts(); |
231 | 229 |
232 EXPECT_EQ(2U, derived_fonts.size()); | 230 EXPECT_EQ(2U, derived_fonts.size()); |
233 EXPECT_EQ("Arial|5", FontToString(derived_fonts[0])); | 231 EXPECT_EQ("Arial|5", FontToString(derived_fonts[0])); |
234 EXPECT_EQ("Sans serif|5", FontToString(derived_fonts[1])); | 232 EXPECT_EQ("Sans serif|5", FontToString(derived_fonts[1])); |
235 } | 233 } |
236 | 234 |
237 } // namespace gfx | 235 } // namespace gfx |
OLD | NEW |