diff options
author | jeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-28 08:29:37 +0000 |
---|---|---|
committer | jeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-28 08:29:37 +0000 |
commit | cf7bea2907447323cebe0938e85b84d7b66b7356 (patch) | |
tree | 78beaddb9daa98ceb296762a522e27a46d56f7ce /content/common/font_descriptor_mac_unittest.mm | |
parent | 8eb140edf08599eaecc7ac18709856a29fe2c229 (diff) | |
download | chromium_src-cf7bea2907447323cebe0938e85b84d7b66b7356.zip chromium_src-cf7bea2907447323cebe0938e85b84d7b66b7356.tar.gz chromium_src-cf7bea2907447323cebe0938e85b84d7b66b7356.tar.bz2 |
Mac: Add unit test to verify that constructing a FontDescriptor with bad parameters doesn't crash.
BUG=None
TEST=Unit test should pass and shouldn't crash.
Review URL: http://codereview.chromium.org/6901046
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83309 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/common/font_descriptor_mac_unittest.mm')
-rw-r--r-- | content/common/font_descriptor_mac_unittest.mm | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/content/common/font_descriptor_mac_unittest.mm b/content/common/font_descriptor_mac_unittest.mm index afa905b..d4a74d1 100644 --- a/content/common/font_descriptor_mac_unittest.mm +++ b/content/common/font_descriptor_mac_unittest.mm @@ -7,13 +7,16 @@ #include <Cocoa/Cocoa.h> #include "base/logging.h" -#include "testing/gtest/include/gtest/gtest.h" +#include "base/utf_string_conversions.h" +#include "base/sys_string_conversions.h" +#include "testing/gtest_mac.h" #include "testing/platform_test.h" namespace { class FontSerializationTest : public PlatformTest {}; +const std::string kCourierFontName("Courier"); // 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 @@ -64,6 +67,14 @@ bool CompareFonts(NSFont* font1, NSFont* font2) { return true; } +// Create an NSFont via a FontDescriptor object. +NSFont* MakeNSFont(const std::string& font_name, float font_point_size) { + FontDescriptor desc; + desc.font_name = UTF8ToUTF16(font_name); + desc.font_point_size = font_point_size; + return desc.nsFont(); +} + // Verify that serialization and deserialization of fonts with various styles // is performed correctly by FontDescriptor. TEST_F(FontSerializationTest, StyledFonts) { @@ -79,7 +90,7 @@ TEST_F(FontSerializationTest, StyledFonts) { NSFont* italic_bold_font = [[NSFontManager sharedFontManager] - fontWithFamily:@"Courier" + fontWithFamily:base::SysUTF8ToNSString(kCourierFontName) traits:(NSBoldFontMask | NSItalicFontMask) weight:5 size:18.0]; @@ -88,4 +99,16 @@ TEST_F(FontSerializationTest, StyledFonts) { EXPECT_TRUE(CompareFonts(italic_bold_font, desc_italic_bold.nsFont())); } -} // namsepace +// Test that FontDescriptor doesn't crash when used with bad parameters. +// This is important since FontDescriptors are constructed with parameters +// sent over IPC and bad values must not trigger unexpected behavior. +TEST_F(FontSerializationTest, BadParameters) { + EXPECT_NSNE(MakeNSFont(kCourierFontName, 12), nil); + EXPECT_NSNE(MakeNSFont(kCourierFontName, std::numeric_limits<float>::min()), + nil); + EXPECT_NSNE(MakeNSFont(kCourierFontName, 0), nil); + EXPECT_NSNE(MakeNSFont(kCourierFontName, std::numeric_limits<float>::max()), + nil); +} + +} // namespace |