OLD | NEW |
| (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_fallback_win.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 | |
8 namespace gfx { | |
9 | |
10 namespace { | |
11 | |
12 // Subclass of LinkedFontsIterator for testing that allows mocking the linked | |
13 // fonts vector. | |
14 class TestLinkedFontsIterator : public internal::LinkedFontsIterator { | |
15 public: | |
16 explicit TestLinkedFontsIterator(Font font) : LinkedFontsIterator(font) { | |
17 } | |
18 | |
19 virtual ~TestLinkedFontsIterator() { | |
20 } | |
21 | |
22 // Add a linked font to the mocked vector of linked fonts. | |
23 void AddLinkedFontForTesting(Font font) { | |
24 test_linked_fonts.push_back(font); | |
25 } | |
26 | |
27 virtual const std::vector<Font>* GetLinkedFonts() const override { | |
28 return &test_linked_fonts; | |
29 } | |
30 | |
31 private: | |
32 std::vector<Font> test_linked_fonts; | |
33 | |
34 DISALLOW_COPY_AND_ASSIGN(TestLinkedFontsIterator); | |
35 }; | |
36 | |
37 } // namespace | |
38 | |
39 TEST(FontFallbackWinTest, ParseFontLinkEntry) { | |
40 std::string file; | |
41 std::string font; | |
42 | |
43 internal::ParseFontLinkEntry("TAHOMA.TTF", &file, &font); | |
44 EXPECT_EQ("TAHOMA.TTF", file); | |
45 EXPECT_EQ("", font); | |
46 | |
47 internal::ParseFontLinkEntry("MSGOTHIC.TTC,MS UI Gothic", &file, &font); | |
48 EXPECT_EQ("MSGOTHIC.TTC", file); | |
49 EXPECT_EQ("MS UI Gothic", font); | |
50 | |
51 internal::ParseFontLinkEntry("MALGUN.TTF,128,96", &file, &font); | |
52 EXPECT_EQ("MALGUN.TTF", file); | |
53 EXPECT_EQ("", font); | |
54 | |
55 internal::ParseFontLinkEntry("MEIRYO.TTC,Meiryo,128,85", &file, &font); | |
56 EXPECT_EQ("MEIRYO.TTC", file); | |
57 EXPECT_EQ("Meiryo", font); | |
58 } | |
59 | |
60 TEST(FontFallbackWinTest, ParseFontFamilyString) { | |
61 std::vector<std::string> font_names; | |
62 | |
63 internal::ParseFontFamilyString("Times New Roman (TrueType)", &font_names); | |
64 ASSERT_EQ(1U, font_names.size()); | |
65 EXPECT_EQ("Times New Roman", font_names[0]); | |
66 font_names.clear(); | |
67 | |
68 internal::ParseFontFamilyString("Cambria & Cambria Math (TrueType)", | |
69 &font_names); | |
70 ASSERT_EQ(2U, font_names.size()); | |
71 EXPECT_EQ("Cambria", font_names[0]); | |
72 EXPECT_EQ("Cambria Math", font_names[1]); | |
73 font_names.clear(); | |
74 | |
75 internal::ParseFontFamilyString( | |
76 "Meiryo & Meiryo Italic & Meiryo UI & Meiryo UI Italic (TrueType)", | |
77 &font_names); | |
78 ASSERT_EQ(4U, font_names.size()); | |
79 EXPECT_EQ("Meiryo", font_names[0]); | |
80 EXPECT_EQ("Meiryo Italic", font_names[1]); | |
81 EXPECT_EQ("Meiryo UI", font_names[2]); | |
82 EXPECT_EQ("Meiryo UI Italic", font_names[3]); | |
83 } | |
84 | |
85 TEST(FontFallbackWinTest, LinkedFontsIterator) { | |
86 TestLinkedFontsIterator iterator(Font("Arial", 16)); | |
87 iterator.AddLinkedFontForTesting(Font("Times New Roman", 16)); | |
88 | |
89 Font font; | |
90 EXPECT_TRUE(iterator.NextFont(&font)); | |
91 ASSERT_EQ("Arial", font.GetFontName()); | |
92 | |
93 EXPECT_TRUE(iterator.NextFont(&font)); | |
94 ASSERT_EQ("Times New Roman", font.GetFontName()); | |
95 | |
96 EXPECT_FALSE(iterator.NextFont(&font)); | |
97 } | |
98 | |
99 TEST(FontFallbackWinTest, LinkedFontsIteratorSetNextFont) { | |
100 TestLinkedFontsIterator iterator(Font("Arial", 16)); | |
101 iterator.AddLinkedFontForTesting(Font("Times New Roman", 16)); | |
102 | |
103 Font font; | |
104 EXPECT_TRUE(iterator.NextFont(&font)); | |
105 ASSERT_EQ("Arial", font.GetFontName()); | |
106 | |
107 iterator.SetNextFont(Font("Tahoma", 16)); | |
108 EXPECT_TRUE(iterator.NextFont(&font)); | |
109 ASSERT_EQ("Tahoma", font.GetFontName()); | |
110 | |
111 EXPECT_TRUE(iterator.NextFont(&font)); | |
112 ASSERT_EQ("Times New Roman", font.GetFontName()); | |
113 | |
114 EXPECT_FALSE(iterator.NextFont(&font)); | |
115 } | |
116 | |
117 } // namespace gfx | |
OLD | NEW |