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

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

Issue 854713003: More old files deletion. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix tryjobs? Created 5 years, 11 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
« no previous file with comments | « ui/gfx/font_render_params_win.cc ('k') | ui/gfx/gdi_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ui/gfx/font.h"
6
7 #include "base/strings/string16.h"
8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 #if defined(OS_LINUX) && !defined(USE_OZONE)
13 #include <pango/pango.h>
14 #elif defined(OS_WIN)
15 #include "ui/gfx/platform_font_win.h"
16 #endif
17
18 namespace gfx {
19 namespace {
20
21 class FontTest : public testing::Test {
22 public:
23 // Fulfills the memory management contract as outlined by the comment at
24 // gfx::Font::GetNativeFont().
25 void FreeIfNecessary(NativeFont font) {
26 #if defined(OS_LINUX) && !defined(USE_OZONE)
27 pango_font_description_free(font);
28 #endif
29 }
30 };
31
32 #if defined(OS_WIN)
33 class ScopedMinimumFontSizeCallback {
34 public:
35 explicit ScopedMinimumFontSizeCallback(int minimum_size) {
36 minimum_size_ = minimum_size;
37 old_callback_ = PlatformFontWin::get_minimum_font_size_callback;
38 PlatformFontWin::get_minimum_font_size_callback = &GetMinimumFontSize;
39 }
40
41 ~ScopedMinimumFontSizeCallback() {
42 PlatformFontWin::get_minimum_font_size_callback = old_callback_;
43 }
44
45 private:
46 static int GetMinimumFontSize() {
47 return minimum_size_;
48 }
49
50 PlatformFontWin::GetMinimumFontSizeCallback old_callback_;
51 static int minimum_size_;
52
53 DISALLOW_COPY_AND_ASSIGN(ScopedMinimumFontSizeCallback);
54 };
55
56 int ScopedMinimumFontSizeCallback::minimum_size_ = 0;
57 #endif // defined(OS_WIN)
58
59
60 TEST_F(FontTest, LoadArial) {
61 Font cf("Arial", 16);
62 NativeFont native = cf.GetNativeFont();
63 EXPECT_TRUE(native);
64 EXPECT_EQ(cf.GetStyle(), Font::NORMAL);
65 EXPECT_EQ(cf.GetFontSize(), 16);
66 EXPECT_EQ(cf.GetFontName(), "Arial");
67 EXPECT_EQ("arial",
68 base::StringToLowerASCII(cf.GetActualFontNameForTesting()));
69 FreeIfNecessary(native);
70 }
71
72 TEST_F(FontTest, LoadArialBold) {
73 Font cf("Arial", 16);
74 Font bold(cf.Derive(0, Font::BOLD));
75 NativeFont native = bold.GetNativeFont();
76 EXPECT_TRUE(native);
77 EXPECT_EQ(bold.GetStyle(), Font::BOLD);
78 EXPECT_EQ("arial",
79 base::StringToLowerASCII(cf.GetActualFontNameForTesting()));
80 FreeIfNecessary(native);
81 }
82
83 TEST_F(FontTest, Ascent) {
84 Font cf("Arial", 16);
85 EXPECT_GT(cf.GetBaseline(), 2);
86 EXPECT_LE(cf.GetBaseline(), 22);
87 }
88
89 TEST_F(FontTest, Height) {
90 Font cf("Arial", 16);
91 EXPECT_GE(cf.GetHeight(), 16);
92 // TODO(akalin): Figure out why height is so large on Linux.
93 EXPECT_LE(cf.GetHeight(), 26);
94 }
95
96 TEST_F(FontTest, CapHeight) {
97 Font cf("Arial", 16);
98 EXPECT_GT(cf.GetCapHeight(), 0);
99 EXPECT_GT(cf.GetCapHeight(), cf.GetHeight() / 2);
100 EXPECT_LT(cf.GetCapHeight(), cf.GetBaseline());
101 }
102
103 TEST_F(FontTest, AvgWidths) {
104 Font cf("Arial", 16);
105 EXPECT_EQ(cf.GetExpectedTextWidth(0), 0);
106 EXPECT_GT(cf.GetExpectedTextWidth(1), cf.GetExpectedTextWidth(0));
107 EXPECT_GT(cf.GetExpectedTextWidth(2), cf.GetExpectedTextWidth(1));
108 EXPECT_GT(cf.GetExpectedTextWidth(3), cf.GetExpectedTextWidth(2));
109 }
110
111 #if !defined(OS_WIN)
112 // On Windows, Font::GetActualFontNameForTesting() doesn't work well for now.
113 // http://crbug.com/327287
114 //
115 // Check that fonts used for testing are installed and enabled. On Mac
116 // fonts may be installed but still need enabling in Font Book.app.
117 // http://crbug.com/347429
118 TEST_F(FontTest, GetActualFontNameForTesting) {
119 Font arial("Arial", 16);
120 EXPECT_EQ("arial",
121 base::StringToLowerASCII(arial.GetActualFontNameForTesting()))
122 << "********\n"
123 << "Your test environment seems to be missing Arial font, which is "
124 << "needed for unittests. Check if Arial font is installed.\n"
125 << "********";
126 Font symbol("Symbol", 16);
127 EXPECT_EQ("symbol",
128 base::StringToLowerASCII(symbol.GetActualFontNameForTesting()))
129 << "********\n"
130 << "Your test environment seems to be missing Symbol font, which is "
131 << "needed for unittests. Check if Symbol font is installed.\n"
132 << "********";
133
134 const char* const invalid_font_name = "no_such_font_name";
135 Font fallback_font(invalid_font_name, 16);
136 EXPECT_NE(invalid_font_name,
137 base::StringToLowerASCII(
138 fallback_font.GetActualFontNameForTesting()));
139 }
140 #endif
141
142 #if defined(OS_WIN)
143 TEST_F(FontTest, DeriveResizesIfSizeTooSmall) {
144 Font cf("Arial", 8);
145 // The minimum font size is set to 5 in browser_main.cc.
146 ScopedMinimumFontSizeCallback minimum_size(5);
147
148 Font derived_font = cf.Derive(-4, cf.GetStyle());
149 EXPECT_EQ(5, derived_font.GetFontSize());
150 }
151
152 TEST_F(FontTest, DeriveKeepsOriginalSizeIfHeightOk) {
153 Font cf("Arial", 8);
154 // The minimum font size is set to 5 in browser_main.cc.
155 ScopedMinimumFontSizeCallback minimum_size(5);
156
157 Font derived_font = cf.Derive(-2, cf.GetStyle());
158 EXPECT_EQ(6, derived_font.GetFontSize());
159 }
160 #endif // defined(OS_WIN)
161
162 } // namespace
163 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/font_render_params_win.cc ('k') | ui/gfx/gdi_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698