• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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/base/accelerators/menu_label_accelerator_util_linux.h"
6 
7 #include "base/basictypes.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 namespace ui {
11 
TEST(MenuLabelAcceleratorTest,ConvertAcceleratorsFromWindowsStyle)12 TEST(MenuLabelAcceleratorTest, ConvertAcceleratorsFromWindowsStyle) {
13   static const struct {
14     const char* input;
15     const char* output;
16   } cases[] = {
17     { "", "" },
18     { "nothing", "nothing" },
19     { "foo &bar", "foo _bar" },
20     { "foo &&bar", "foo &bar" },
21     { "foo &&&bar", "foo &_bar" },
22     { "&foo &&bar", "_foo &bar" },
23     { "&foo &bar", "_foo _bar" },
24   };
25   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
26     std::string result = ConvertAcceleratorsFromWindowsStyle(cases[i].input);
27     EXPECT_EQ(cases[i].output, result);
28   }
29 }
30 
TEST(MenuLabelAcceleratorTest,RemoveWindowsStyleAccelerators)31 TEST(MenuLabelAcceleratorTest, RemoveWindowsStyleAccelerators) {
32   static const struct {
33     const char* input;
34     const char* output;
35   } cases[] = {
36     { "", "" },
37     { "nothing", "nothing" },
38     { "foo &bar", "foo bar" },
39     { "foo &&bar", "foo &bar" },
40     { "foo &&&bar", "foo &bar" },
41     { "&foo &&bar", "foo &bar" },
42     { "&foo &bar", "foo bar" },
43   };
44   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
45     std::string result = RemoveWindowsStyleAccelerators(cases[i].input);
46     EXPECT_EQ(cases[i].output, result);
47   }
48 }
49 
TEST(MenuLabelAcceleratorTest,EscapeWindowsStyleAccelerators)50 TEST(MenuLabelAcceleratorTest, EscapeWindowsStyleAccelerators) {
51   static const struct {
52     const char* input;
53     const char* output;
54   } cases[] = {
55     { "nothing", "nothing" },
56     { "foo &bar", "foo &&bar" },
57     { "foo &&bar", "foo &&&&bar" },
58     { "foo &&&bar", "foo &&&&&&bar" },
59     { "&foo bar", "&&foo bar" },
60     { "&&foo bar", "&&&&foo bar" },
61     { "&&&foo bar", "&&&&&&foo bar" },
62     { "&foo &bar", "&&foo &&bar" },
63     { "&&foo &&bar", "&&&&foo &&&&bar" },
64     { "f&o&o ba&r", "f&&o&&o ba&&r" },
65     { "foo_&_bar", "foo_&&_bar" },
66     { "&_foo_bar_&", "&&_foo_bar_&&" },
67   };
68 
69   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
70     std::string result = EscapeWindowsStyleAccelerators(cases[i].input);
71     EXPECT_EQ(cases[i].output, result);
72   }
73 }
74 
75 }  // namespace ui
76