blob: d8e1764ade3e1d4795540ae38d487cad2cab0ef8 [file] [log] [blame]
// Copyright 2016 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 "third_party/blink/renderer/core/editing/ime/ime_text_span.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
namespace {
ImeTextSpan CreateImeTextSpan(unsigned start_offset, unsigned end_offset) {
return ImeTextSpan(ImeTextSpan::Type::kComposition, start_offset, end_offset,
Color::kTransparent,
ws::mojom::ImeTextSpanThickness::kNone,
Color::kTransparent);
}
TEST(ImeTextSpanTest, OneChar) {
ImeTextSpan ime_text_span = CreateImeTextSpan(0, 1);
EXPECT_EQ(0u, ime_text_span.StartOffset());
EXPECT_EQ(1u, ime_text_span.EndOffset());
}
TEST(ImeTextSpanTest, MultiChar) {
ImeTextSpan ime_text_span = CreateImeTextSpan(0, 5);
EXPECT_EQ(0u, ime_text_span.StartOffset());
EXPECT_EQ(5u, ime_text_span.EndOffset());
}
TEST(ImeTextSpanTest, ZeroLength) {
ImeTextSpan ime_text_span = CreateImeTextSpan(0, 0);
EXPECT_EQ(0u, ime_text_span.StartOffset());
EXPECT_EQ(1u, ime_text_span.EndOffset());
}
TEST(ImeTextSpanTest, ZeroLengthNonZeroStart) {
ImeTextSpan ime_text_span = CreateImeTextSpan(3, 3);
EXPECT_EQ(3u, ime_text_span.StartOffset());
EXPECT_EQ(4u, ime_text_span.EndOffset());
}
TEST(ImeTextSpanTest, EndBeforeStart) {
ImeTextSpan ime_text_span = CreateImeTextSpan(1, 0);
EXPECT_EQ(1u, ime_text_span.StartOffset());
EXPECT_EQ(2u, ime_text_span.EndOffset());
}
TEST(ImeTextSpanTest, LastChar) {
ImeTextSpan ime_text_span =
CreateImeTextSpan(std::numeric_limits<unsigned>::max() - 1,
std::numeric_limits<unsigned>::max());
EXPECT_EQ(std::numeric_limits<unsigned>::max() - 1,
ime_text_span.StartOffset());
EXPECT_EQ(std::numeric_limits<unsigned>::max(), ime_text_span.EndOffset());
}
TEST(ImeTextSpanTest, LastCharEndBeforeStart) {
ImeTextSpan ime_text_span =
CreateImeTextSpan(std::numeric_limits<unsigned>::max(),
std::numeric_limits<unsigned>::max() - 1);
EXPECT_EQ(std::numeric_limits<unsigned>::max() - 1,
ime_text_span.StartOffset());
EXPECT_EQ(std::numeric_limits<unsigned>::max(), ime_text_span.EndOffset());
}
TEST(ImeTextSpanTest, LastCharEndBeforeStartZeroEnd) {
ImeTextSpan ime_text_span =
CreateImeTextSpan(std::numeric_limits<unsigned>::max(), 0);
EXPECT_EQ(std::numeric_limits<unsigned>::max() - 1,
ime_text_span.StartOffset());
EXPECT_EQ(std::numeric_limits<unsigned>::max(), ime_text_span.EndOffset());
}
} // namespace
} // namespace blink