summaryrefslogtreecommitdiffstats
path: root/gfx/font_unittest.cc
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-23 04:05:01 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-23 04:05:01 +0000
commitd07b6b5b992faad3506ac004503c11d25930cdca (patch)
treea5a795b8980d90e4a10208ad4f8eabe140ee3e5e /gfx/font_unittest.cc
parentf2a13d89ca22cdbe3808bcb14e02d5baee8d33b3 (diff)
downloadchromium_src-d07b6b5b992faad3506ac004503c11d25930cdca.zip
chromium_src-d07b6b5b992faad3506ac004503c11d25930cdca.tar.gz
chromium_src-d07b6b5b992faad3506ac004503c11d25930cdca.tar.bz2
Move app/gfx/canvas and app/gfx/font to gfx/.
TBR=darin BUG=none TEST=none Review URL: http://codereview.chromium.org/1132006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42312 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gfx/font_unittest.cc')
-rw-r--r--gfx/font_unittest.cc80
1 files changed, 80 insertions, 0 deletions
diff --git a/gfx/font_unittest.cc b/gfx/font_unittest.cc
new file mode 100644
index 0000000..d2310f8
--- /dev/null
+++ b/gfx/font_unittest.cc
@@ -0,0 +1,80 @@
+// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "gfx/font.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+using gfx::Font;
+
+class FontTest : public testing::Test {
+};
+
+TEST_F(FontTest, LoadArial) {
+ Font cf(Font::CreateFont(L"Arial", 16));
+ ASSERT_TRUE(cf.nativeFont());
+ ASSERT_EQ(cf.style(), Font::NORMAL);
+ ASSERT_EQ(cf.FontSize(), 16);
+ ASSERT_EQ(cf.FontName(), L"Arial");
+}
+
+TEST_F(FontTest, LoadArialBold) {
+ Font cf(Font::CreateFont(L"Arial", 16));
+ Font bold(cf.DeriveFont(0, Font::BOLD));
+ ASSERT_TRUE(bold.nativeFont());
+ ASSERT_EQ(bold.style(), Font::BOLD);
+}
+
+TEST_F(FontTest, Ascent) {
+ Font cf(Font::CreateFont(L"Arial", 16));
+ ASSERT_GT(cf.baseline(), 2);
+ ASSERT_LE(cf.baseline(), 22);
+}
+
+TEST_F(FontTest, Height) {
+ Font cf(Font::CreateFont(L"Arial", 16));
+ ASSERT_GE(cf.height(), 16);
+ // TODO(akalin): Figure out why height is so large on Linux.
+ ASSERT_LE(cf.height(), 26);
+}
+
+TEST_F(FontTest, AvgWidths) {
+ Font cf(Font::CreateFont(L"Arial", 16));
+ ASSERT_EQ(cf.GetExpectedTextWidth(0), 0);
+ ASSERT_GT(cf.GetExpectedTextWidth(1), cf.GetExpectedTextWidth(0));
+ ASSERT_GT(cf.GetExpectedTextWidth(2), cf.GetExpectedTextWidth(1));
+ ASSERT_GT(cf.GetExpectedTextWidth(3), cf.GetExpectedTextWidth(2));
+}
+
+TEST_F(FontTest, Widths) {
+ Font cf(Font::CreateFont(L"Arial", 16));
+ ASSERT_EQ(cf.GetStringWidth(L""), 0);
+ ASSERT_GT(cf.GetStringWidth(L"a"), cf.GetStringWidth(L""));
+ ASSERT_GT(cf.GetStringWidth(L"ab"), cf.GetStringWidth(L"a"));
+ ASSERT_GT(cf.GetStringWidth(L"abc"), cf.GetStringWidth(L"ab"));
+}
+
+#if defined(OS_WIN)
+// TODO(beng): re-enable evening of 3/22.
+TEST_F(FontTest, DISABLED_DeriveFontResizesIfSizeTooSmall) {
+ // This creates font of height -8.
+ Font cf(Font::CreateFont(L"Arial", 6));
+ Font derived_font = cf.DeriveFont(-4);
+ LOGFONT font_info;
+ GetObject(derived_font.hfont(), sizeof(LOGFONT), &font_info);
+ EXPECT_EQ(-5, font_info.lfHeight);
+}
+
+TEST_F(FontTest, DISABLED_DeriveFontKeepsOriginalSizeIfHeightOk) {
+ // This creates font of height -8.
+ Font cf(Font::CreateFont(L"Arial", 6));
+ Font derived_font = cf.DeriveFont(-2);
+ LOGFONT font_info;
+ GetObject(derived_font.hfont(), sizeof(LOGFONT), &font_info);
+ EXPECT_EQ(-6, font_info.lfHeight);
+}
+#endif
+} // anonymous namespace