blob: c468ce12e92d88e6da86a4928985ed6abcebf138 [file] [log] [blame]
// Copyright (c) 2011 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/skia_util.h"
#include "base/utf_string_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
static const char16 kAcceleratorChar = '&';
TEST(SkiaUtilTest, RemoveAcceleratorChar) {
struct TestData {
const char* input;
int accelerated_char_pos;
int accelerated_char_span;
const char* output;
} cases[] = {
{ "", -1, 0, "" },
{ "&", -1, 0, "" },
{ "no accelerator", -1, 0, "no accelerator" },
{ "&one accelerator", 0, 1, "one accelerator" },
{ "one &accelerator", 4, 1, "one accelerator" },
{ "one_accelerator&", -1, 0, "one_accelerator" },
{ "&two &accelerators", 4, 1, "two accelerators" },
{ "two &accelerators&", 4, 1, "two accelerators" },
{ "two& &accelerators", 4, 1, "two accelerators" },
{ "&&escaping", -1, 0, "&escaping" },
{ "escap&&ing", -1, 0, "escap&ing" },
{ "escaping&&", -1, 0, "escaping&" },
{ "&mix&&ed", 0, 1, "mix&ed" },
{ "&&m&ix&&e&d&", 6, 1, "&mix&ed" },
{ "&&m&&ix&ed&&", 5, 1, "&m&ixed&" },
{ "&m&&ix&ed&&", 4, 1, "m&ixed&" },
// U+1D49C MATHEMATICAL SCRIPT CAPITAL A, which occupies two |char16|'s.
{ "&\xF0\x9D\x92\x9C", 0, 2, "\xF0\x9D\x92\x9C" },
{ "Test&\xF0\x9D\x92\x9Cing", 4, 2, "Test\xF0\x9D\x92\x9Cing" },
{ "Test\xF0\x9D\x92\x9C&ing", 6, 1, "Test\xF0\x9D\x92\x9Cing" },
{ "Test&\xF0\x9D\x92\x9C&ing", 6, 1, "Test\xF0\x9D\x92\x9Cing" },
{ "Test&\xF0\x9D\x92\x9C&&ing", 4, 2, "Test\xF0\x9D\x92\x9C&ing" },
{ "Test&\xF0\x9D\x92\x9C&\xF0\x9D\x92\x9Cing", 6, 2,
"Test\xF0\x9D\x92\x9C\xF0\x9D\x92\x9Cing" },
};
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
int accelerated_char_pos;
int accelerated_char_span;
string16 result = gfx::RemoveAcceleratorChar(UTF8ToUTF16(cases[i].input),
kAcceleratorChar,
&accelerated_char_pos,
&accelerated_char_span);
EXPECT_EQ(result, UTF8ToUTF16(cases[i].output));
EXPECT_EQ(accelerated_char_pos, cases[i].accelerated_char_pos);
EXPECT_EQ(accelerated_char_span, cases[i].accelerated_char_span);
}
}