blob: 21005839457b049eeb27dd548e9766fe0f07d3c1 [file] [log] [blame] [edit]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gtest/gtest.h"
#include "garnet/bin/ui/ime/text_input_state_update_functions.h"
namespace ime {
namespace test {
TEST(TestInputState, DeleteBackward) {
fuchsia::ui::input::TextInputState state;
auto& revision = state.revision;
auto& base = state.selection.base;
auto& extent = state.selection.extent;
auto& text = state.text;
revision = 0 + 1;
base = extent = -1;
text = fidl::StringPtr("");
DeleteBackward(state);
EXPECT_EQ(2U, revision);
EXPECT_EQ(0, base);
EXPECT_EQ(0, extent);
base = extent = 0;
DeleteBackward(state);
EXPECT_EQ(3U, revision);
EXPECT_EQ(0, base);
EXPECT_EQ(0, extent);
text = fidl::StringPtr("abcdefghi");
DeleteBackward(state);
EXPECT_EQ(4U, revision);
EXPECT_EQ(0, base);
EXPECT_EQ(0, extent);
base = 0;
extent = 1;
DeleteBackward(state);
EXPECT_EQ(5U, revision);
EXPECT_EQ(0, base);
EXPECT_EQ(0, extent);
EXPECT_EQ("bcdefghi", *text);
base = 2;
extent = 4;
DeleteBackward(state);
EXPECT_EQ(6U, revision);
EXPECT_EQ(2, base);
EXPECT_EQ(2, extent);
EXPECT_EQ("bcfghi", *text);
DeleteBackward(state);
EXPECT_EQ(7U, revision);
EXPECT_EQ(1, base);
EXPECT_EQ(1, extent);
EXPECT_EQ("bfghi", *text);
DeleteBackward(state);
EXPECT_EQ(8U, revision);
EXPECT_EQ(0, base);
EXPECT_EQ(0, extent);
EXPECT_EQ("fghi", *text);
DeleteBackward(state);
EXPECT_EQ(9U, revision);
EXPECT_EQ(0, base);
EXPECT_EQ(0, extent);
EXPECT_EQ("fghi", *text);
base = -1;
extent = -1;
DeleteBackward(state);
EXPECT_EQ(10U, revision);
EXPECT_EQ(3, base);
EXPECT_EQ(3, extent);
EXPECT_EQ("fgh", *text);
DeleteBackward(state);
EXPECT_EQ(11U, revision);
EXPECT_EQ(2, base);
EXPECT_EQ(2, extent);
EXPECT_EQ("fg", *text);
}
} // namespace test
} // namespace ime