OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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/text_utils.h" | |
6 | |
7 #include "base/strings/utf_string_conversions.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 #include "ui/gfx/font_list.h" | |
10 | |
11 namespace gfx { | |
12 namespace { | |
13 | |
14 const base::char16 kAcceleratorChar = '&'; | |
15 | |
16 TEST(TextUtilsTest, RemoveAcceleratorChar) { | |
17 struct TestData { | |
18 const char* input; | |
19 int accelerated_char_pos; | |
20 int accelerated_char_span; | |
21 const char* output; | |
22 } cases[] = { | |
23 { "", -1, 0, "" }, | |
24 { "&", -1, 0, "" }, | |
25 { "no accelerator", -1, 0, "no accelerator" }, | |
26 { "&one accelerator", 0, 1, "one accelerator" }, | |
27 { "one &accelerator", 4, 1, "one accelerator" }, | |
28 { "one_accelerator&", -1, 0, "one_accelerator" }, | |
29 { "&two &accelerators", 4, 1, "two accelerators" }, | |
30 { "two &accelerators&", 4, 1, "two accelerators" }, | |
31 { "two& &accelerators", 4, 1, "two accelerators" }, | |
32 { "&&escaping", -1, 0, "&escaping" }, | |
33 { "escap&&ing", -1, 0, "escap&ing" }, | |
34 { "escaping&&", -1, 0, "escaping&" }, | |
35 { "&mix&&ed", 0, 1, "mix&ed" }, | |
36 { "&&m&ix&&e&d&", 6, 1, "&mix&ed" }, | |
37 { "&&m&&ix&ed&&", 5, 1, "&m&ixed&" }, | |
38 { "&m&&ix&ed&&", 4, 1, "m&ixed&" }, | |
39 // U+1D49C MATHEMATICAL SCRIPT CAPITAL A, which occupies two |char16|'s. | |
40 { "&\xF0\x9D\x92\x9C", 0, 2, "\xF0\x9D\x92\x9C" }, | |
41 { "Test&\xF0\x9D\x92\x9Cing", 4, 2, "Test\xF0\x9D\x92\x9Cing" }, | |
42 { "Test\xF0\x9D\x92\x9C&ing", 6, 1, "Test\xF0\x9D\x92\x9Cing" }, | |
43 { "Test&\xF0\x9D\x92\x9C&ing", 6, 1, "Test\xF0\x9D\x92\x9Cing" }, | |
44 { "Test&\xF0\x9D\x92\x9C&&ing", 4, 2, "Test\xF0\x9D\x92\x9C&ing" }, | |
45 { "Test&\xF0\x9D\x92\x9C&\xF0\x9D\x92\x9Cing", 6, 2, | |
46 "Test\xF0\x9D\x92\x9C\xF0\x9D\x92\x9Cing" }, | |
47 }; | |
48 | |
49 for (size_t i = 0; i < arraysize(cases); ++i) { | |
50 int accelerated_char_pos; | |
51 int accelerated_char_span; | |
52 base::string16 result = RemoveAcceleratorChar( | |
53 base::UTF8ToUTF16(cases[i].input), | |
54 kAcceleratorChar, | |
55 &accelerated_char_pos, | |
56 &accelerated_char_span); | |
57 EXPECT_EQ(result, base::UTF8ToUTF16(cases[i].output)); | |
58 EXPECT_EQ(accelerated_char_pos, cases[i].accelerated_char_pos); | |
59 EXPECT_EQ(accelerated_char_span, cases[i].accelerated_char_span); | |
60 } | |
61 } | |
62 | |
63 // Disabled on Ozone since there are no fonts: crbug.com/320050 | |
64 #if defined(USE_OZONE) | |
65 #define MAYBE_GetStringWidth DISABLED_GetStringWidth | |
66 #else | |
67 #define MAYBE_GetStringWidth GetStringWidth | |
68 #endif | |
69 TEST(TextUtilsTest, MAYBE_GetStringWidth) { | |
70 FontList font_list; | |
71 EXPECT_EQ(GetStringWidth(base::string16(), font_list), 0); | |
72 EXPECT_GT(GetStringWidth(base::ASCIIToUTF16("a"), font_list), | |
73 GetStringWidth(base::string16(), font_list)); | |
74 EXPECT_GT(GetStringWidth(base::ASCIIToUTF16("ab"), font_list), | |
75 GetStringWidth(base::ASCIIToUTF16("a"), font_list)); | |
76 EXPECT_GT(GetStringWidth(base::ASCIIToUTF16("abc"), font_list), | |
77 GetStringWidth(base::ASCIIToUTF16("ab"), font_list)); | |
78 } | |
79 | |
80 } // namespace | |
81 } // namespace gfx | |
OLD | NEW |