Chromium Code Reviews| Index: chrome/common/font_descriptor_mac_unittest.mm |
| diff --git a/chrome/common/font_descriptor_mac_unittest.mm b/chrome/common/font_descriptor_mac_unittest.mm |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7e93a64c57d9c6bb2e44fcb6508d86143216e87f |
| --- /dev/null |
| +++ b/chrome/common/font_descriptor_mac_unittest.mm |
| @@ -0,0 +1,91 @@ |
| +// Copyright (c) 2010 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 "chrome/common/font_descriptor_mac.h" |
| + |
| +#include <Cocoa/Cocoa.h> |
| + |
| +#include "base/logging.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| +#include "testing/platform_test.h" |
| + |
| +namespace { |
| + |
| +class FontSerializationTest : public PlatformTest {}; |
| + |
| + |
| +// Compare 2 fonts, make sure they point at the same font definition and have |
| +// the same style. Only Bold & Italic style attributes are tested since those |
| +// are the only ones we care about at the moment. |
| +bool CompareFonts(NSFont* font1, NSFont* font2) { |
| + ATSFontRef id1 = CTFontGetPlatformFont(reinterpret_cast<CTFontRef>(font1), 0); |
| + ATSFontRef id2 = CTFontGetPlatformFont(reinterpret_cast<CTFontRef>(font2), 0); |
| + |
| + if (id1 != id2) { |
| + LOG(ERROR) << "ATSUFontIDs for " |
|
Avi (use Gerrit)
2010/06/15 13:57:48
Change the error to refer to ATSFontRefs too.
|
| + << [[font1 fontName] UTF8String] |
| + << " and " |
| + << [[font2 fontName] UTF8String] |
| + << " are different"; |
| + return false; |
| + } |
| + |
| + CGFloat size1 = [font1 pointSize]; |
| + CGFloat size2 = [font2 pointSize]; |
| + if (size1 != size2) { |
| + LOG(ERROR) << "font sizes for " |
| + << [[font1 fontName] UTF8String] << " (" << size1 << ")" |
| + << "and" |
| + << [[font2 fontName] UTF8String] << " (" << size2 << ")" |
| + << " are different"; |
| + return false; |
| + } |
| + |
| + NSFontTraitMask traits1 = [[NSFontManager sharedFontManager] |
| + traitsOfFont:font1]; |
| + NSFontTraitMask traits2 = [[NSFontManager sharedFontManager] |
| + traitsOfFont:font2]; |
| + |
| + bool is_bold1 = traits1 & NSBoldFontMask; |
| + bool is_bold2 = traits2 & NSBoldFontMask; |
| + bool is_italic1 = traits1 & NSItalicFontMask; |
| + bool is_italic2 = traits2 & NSItalicFontMask; |
| + |
| + if (is_bold1 != is_bold2 || is_italic1 != is_italic2) { |
| + LOG(ERROR) << "Style information for " |
| + << [[font1 fontName] UTF8String] |
| + << " and " |
| + << [[font2 fontName] UTF8String] |
| + << " are different"; |
| + return false; |
| + } |
| + |
| + return true; |
| +} |
| + |
| +// Verify that serialization and deserialization of fonts with various styles |
| +// is performed correctly by FontDescriptor. |
| +TEST_F(FontSerializationTest, StyledFonts) { |
| + NSFont* plain_font = [NSFont systemFontOfSize:12.0]; |
| + ASSERT_TRUE(plain_font != nil); |
| + FontDescriptor desc_plain(plain_font); |
| + EXPECT_TRUE(CompareFonts(plain_font, desc_plain.nsFont())); |
| + |
| + NSFont* bold_font = [NSFont boldSystemFontOfSize:30.0]; |
| + ASSERT_TRUE(bold_font != nil); |
| + FontDescriptor desc_bold(bold_font); |
| + EXPECT_TRUE(CompareFonts(bold_font, desc_bold.nsFont())); |
| + |
| + NSFont* italic_bold_font = |
| + [[NSFontManager sharedFontManager] |
| + fontWithFamily:@"Courier" |
| + traits:(NSBoldFontMask | NSItalicFontMask) |
| + weight:5 |
| + size:18.0]; |
| + ASSERT_TRUE(italic_bold_font != nil); |
| + FontDescriptor desc_italic_bold(italic_bold_font); |
| + EXPECT_TRUE(CompareFonts(italic_bold_font, desc_italic_bold.nsFont())); |
| +} |
| + |
| +} // namsepace |