1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // Copyright 2015 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 "ui/gfx/font_fallback.h"
- #include "base/strings/string_piece.h"
- #include "base/strings/stringprintf.h"
- #include "base/strings/utf_string_conversions.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "ui/gfx/font.h"
- namespace gfx {
- namespace {
- const char kDefaultApplicationLocale[] = "us-en";
- } // namespace
- // A targeted test for GetFallbackFonts on Mac. It uses a system API that
- // only became publicly available in the 10.8 SDK. This test is to ensure it
- // behaves sensibly on all supported OS versions.
- TEST(FontFallbackMacTest, GetFallbackFonts) {
- Font font("Arial", 12);
- std::vector<Font> fallback_fonts = GetFallbackFonts(font);
- // If there is only one fallback, it means the only fallback is the font
- // itself.
- EXPECT_LT(1u, fallback_fonts.size());
- }
- // Sanity check GetFallbackFont() behavior on Mac. This test makes assumptions
- // about font properties and availability on specific macOS versions.
- TEST(FontFallbackMacTest, GetFallbackFont) {
- Font arial("Helvetica", 12);
- const std::u16string ascii = u"abc";
- const std::u16string hebrew = u"\x5d0\x5d1\x5d2";
- const std::u16string emoji = u"😋";
- Font fallback;
- EXPECT_TRUE(
- GetFallbackFont(arial, kDefaultApplicationLocale, hebrew, &fallback));
- EXPECT_EQ("Lucida Grande", fallback.GetFontName());
- EXPECT_TRUE(
- GetFallbackFont(arial, kDefaultApplicationLocale, emoji, &fallback));
- EXPECT_EQ("Apple Color Emoji", fallback.GetFontName());
- }
- TEST(FontFallbackMacTest, GetFallbackFontForEmoji) {
- static struct {
- const char* test_name;
- const wchar_t* text;
- } kEmojiTests[] = {
- {"aries", L"\u2648"},
- {"candle", L"\U0001F56F"},
- {"anchor", L"\u2693"},
- {"grinning_face", L"\U0001F600"},
- {"flag_andorra", L"\U0001F1E6\U0001F1E9"},
- {"woman_man_hands_light", L"\U0001F46B\U0001F3FB"},
- {"hole_text", L"\U0001F573\uFE0E"},
- {"hole_emoji", L"\U0001F573\uFE0F"},
- {"man_judge_medium", L"\U0001F468\U0001F3FD\u200D\u2696\uFE0F"},
- {"woman_turban", L"\U0001F473\u200D\u2640\uFE0F"},
- {"rainbow_flag", L"\U0001F3F3\uFE0F\u200D\U0001F308"},
- {"eye_bubble", L"\U0001F441\uFE0F\u200D\U0001F5E8\uFE0F"},
- };
- Font font;
- for (const auto& test : kEmojiTests) {
- SCOPED_TRACE(
- base::StringPrintf("GetFallbackFontForEmoji [%s]", test.test_name));
- Font fallback;
- EXPECT_TRUE(GetFallbackFont(font, kDefaultApplicationLocale,
- base::WideToUTF16(test.text), &fallback));
- EXPECT_EQ("Apple Color Emoji", fallback.GetFontName());
- }
- }
- } // namespace gfx
|