Index: views/controls/textfield/textfield_views_model_unittest.cc |
=================================================================== |
--- views/controls/textfield/textfield_views_model_unittest.cc (revision 103984) |
+++ views/controls/textfield/textfield_views_model_unittest.cc (working copy) |
@@ -280,11 +280,11 @@ |
EXPECT_EQ(5U, sel.selection_end()); |
// Select and move cursor |
- model.MoveCursorTo(gfx::SelectionModel(1U, 3U)); |
+ model.SelectRange(ui::Range(1U, 3U)); |
EXPECT_STR_EQ("EL", model.GetSelectedText()); |
model.MoveCursorLeft(gfx::CHARACTER_BREAK, false); |
EXPECT_EQ(1U, model.GetCursorPosition()); |
- model.MoveCursorTo(gfx::SelectionModel(1U, 3U)); |
+ model.SelectRange(ui::Range(1U, 3U)); |
model.MoveCursorRight(gfx::CHARACTER_BREAK, false); |
EXPECT_EQ(3U, model.GetCursorPosition()); |
@@ -636,6 +636,115 @@ |
} |
#endif |
+TEST_F(TextfieldViewsModelTest, RangeTest) { |
+ TextfieldViewsModel model(NULL); |
+ model.Append(ASCIIToUTF16("HELLO WORLD")); |
+ model.MoveCursorLeft(gfx::LINE_BREAK, false); |
+ ui::Range range; |
+ model.GetSelectedRange(&range); |
+ EXPECT_TRUE(range.is_empty()); |
+ EXPECT_EQ(0U, range.start()); |
+ EXPECT_EQ(0U, range.end()); |
+ |
+ model.MoveCursorRight(gfx::WORD_BREAK, true); |
+ model.GetSelectedRange(&range); |
+ EXPECT_FALSE(range.is_empty()); |
+ EXPECT_FALSE(range.is_reversed()); |
+ EXPECT_EQ(0U, range.start()); |
+ EXPECT_EQ(5U, range.end()); |
+ |
+ model.MoveCursorLeft(gfx::CHARACTER_BREAK, true); |
+ model.GetSelectedRange(&range); |
+ EXPECT_FALSE(range.is_empty()); |
+ EXPECT_EQ(0U, range.start()); |
+ EXPECT_EQ(4U, range.end()); |
+ |
+ model.MoveCursorLeft(gfx::WORD_BREAK, true); |
+ model.GetSelectedRange(&range); |
+ EXPECT_TRUE(range.is_empty()); |
+ EXPECT_EQ(0U, range.start()); |
+ EXPECT_EQ(0U, range.end()); |
+ |
+ // now from the end. |
+ model.MoveCursorRight(gfx::LINE_BREAK, false); |
+ model.GetSelectedRange(&range); |
+ EXPECT_TRUE(range.is_empty()); |
+ EXPECT_EQ(11U, range.start()); |
+ EXPECT_EQ(11U, range.end()); |
+ |
+ model.MoveCursorLeft(gfx::WORD_BREAK, true); |
+ model.GetSelectedRange(&range); |
+ EXPECT_FALSE(range.is_empty()); |
+ EXPECT_TRUE(range.is_reversed()); |
+ EXPECT_EQ(11U, range.start()); |
+ EXPECT_EQ(6U, range.end()); |
+ |
+ model.MoveCursorRight(gfx::CHARACTER_BREAK, true); |
+ model.GetSelectedRange(&range); |
+ EXPECT_FALSE(range.is_empty()); |
+ EXPECT_TRUE(range.is_reversed()); |
+ EXPECT_EQ(11U, range.start()); |
+ EXPECT_EQ(7U, range.end()); |
+ |
+ model.MoveCursorRight(gfx::WORD_BREAK, true); |
+ model.GetSelectedRange(&range); |
+ EXPECT_TRUE(range.is_empty()); |
+ EXPECT_EQ(11U, range.start()); |
+ EXPECT_EQ(11U, range.end()); |
+ |
+ // Select All |
+ model.MoveCursorLeft(gfx::LINE_BREAK, true); |
+ model.GetSelectedRange(&range); |
+ EXPECT_FALSE(range.is_empty()); |
+ EXPECT_TRUE(range.is_reversed()); |
+ EXPECT_EQ(11U, range.start()); |
+ EXPECT_EQ(0U, range.end()); |
+} |
+ |
+TEST_F(TextfieldViewsModelTest, SelectRangeTest) { |
+ TextfieldViewsModel model(NULL); |
+ model.Append(ASCIIToUTF16("HELLO WORLD")); |
+ ui::Range range(0, 6); |
+ EXPECT_FALSE(range.is_reversed()); |
+ model.SelectRange(range); |
+ EXPECT_STR_EQ("HELLO ", model.GetSelectedText()); |
+ |
+ range = ui::Range(6, 1); |
+ EXPECT_TRUE(range.is_reversed()); |
+ model.SelectRange(range); |
+ EXPECT_STR_EQ("ELLO ", model.GetSelectedText()); |
+ |
+ range = ui::Range(2, 1000); |
+ EXPECT_FALSE(range.is_reversed()); |
+ model.SelectRange(range); |
+ EXPECT_STR_EQ("LLO WORLD", model.GetSelectedText()); |
+ |
+ range = ui::Range(1000, 3); |
+ EXPECT_TRUE(range.is_reversed()); |
+ model.SelectRange(range); |
+ EXPECT_STR_EQ("LO WORLD", model.GetSelectedText()); |
+ |
+ range = ui::Range(0, 0); |
+ EXPECT_TRUE(range.is_empty()); |
+ model.SelectRange(range); |
+ EXPECT_TRUE(model.GetSelectedText().empty()); |
+ |
+ range = ui::Range(3, 3); |
+ EXPECT_TRUE(range.is_empty()); |
+ model.SelectRange(range); |
+ EXPECT_TRUE(model.GetSelectedText().empty()); |
+ |
+ range = ui::Range(1000, 100); |
+ EXPECT_FALSE(range.is_empty()); |
+ model.SelectRange(range); |
+ EXPECT_TRUE(model.GetSelectedText().empty()); |
+ |
+ range = ui::Range(1000, 1000); |
+ EXPECT_TRUE(range.is_empty()); |
+ model.SelectRange(range); |
+ EXPECT_TRUE(model.GetSelectedText().empty()); |
+} |
+ |
TEST_F(TextfieldViewsModelTest, SelectionModelTest) { |
TextfieldViewsModel model(NULL); |
model.Append(ASCIIToUTF16("HELLO WORLD")); |
@@ -704,35 +813,43 @@ |
TEST_F(TextfieldViewsModelTest, SelectSelectionModelTest) { |
TextfieldViewsModel model(NULL); |
model.Append(ASCIIToUTF16("HELLO WORLD")); |
- model.SelectSelectionModel(gfx::SelectionModel(0, 6)); |
+ model.SelectSelectionModel(gfx::SelectionModel(0, 6, 5, |
+ gfx::SelectionModel::TRAILING)); |
EXPECT_STR_EQ("HELLO ", model.GetSelectedText()); |
- model.SelectSelectionModel(gfx::SelectionModel(6, 1)); |
+ model.SelectSelectionModel(gfx::SelectionModel(6, 1, 1, |
+ gfx::SelectionModel::LEADING)); |
EXPECT_STR_EQ("ELLO ", model.GetSelectedText()); |
- model.SelectSelectionModel(gfx::SelectionModel(2, 1000)); |
+ model.SelectSelectionModel(gfx::SelectionModel(2, 1000, 999, |
+ gfx::SelectionModel::TRAILING)); |
EXPECT_STR_EQ("LLO WORLD", model.GetSelectedText()); |
- model.SelectSelectionModel(gfx::SelectionModel(1000, 3)); |
+ model.SelectSelectionModel(gfx::SelectionModel(1000, 3, 3, |
+ gfx::SelectionModel::LEADING)); |
EXPECT_STR_EQ("LO WORLD", model.GetSelectedText()); |
- model.SelectSelectionModel(gfx::SelectionModel(0, 0)); |
+ model.SelectSelectionModel(gfx::SelectionModel(0, 0, 0, |
+ gfx::SelectionModel::LEADING)); |
EXPECT_TRUE(model.GetSelectedText().empty()); |
- model.SelectSelectionModel(gfx::SelectionModel(3, 3)); |
+ model.SelectSelectionModel(gfx::SelectionModel(3, 3, 3, |
+ gfx::SelectionModel::LEADING)); |
EXPECT_TRUE(model.GetSelectedText().empty()); |
- model.SelectSelectionModel(gfx::SelectionModel(1000, 100)); |
+ model.SelectSelectionModel(gfx::SelectionModel(1000, 100, 100, |
+ gfx::SelectionModel::LEADING)); |
EXPECT_TRUE(model.GetSelectedText().empty()); |
- model.SelectSelectionModel(gfx::SelectionModel(1000, 1000)); |
+ model.SelectSelectionModel(gfx::SelectionModel(1000, 1000, 1000, |
+ gfx::SelectionModel::TRAILING)); |
EXPECT_TRUE(model.GetSelectedText().empty()); |
} |
TEST_F(TextfieldViewsModelTest, CompositionTextTest) { |
TextfieldViewsModel model(this); |
model.Append(ASCIIToUTF16("1234590")); |
- model.SelectSelectionModel(gfx::SelectionModel(5, 5)); |
+ model.SelectRange(ui::Range(5, 5)); |
EXPECT_FALSE(model.HasSelection()); |
EXPECT_EQ(5U, model.GetCursorPosition()); |
@@ -860,15 +977,15 @@ |
EXPECT_STR_EQ("678", model.GetText()); |
model.SetCompositionText(composition); |
- gfx::SelectionModel sel(0); |
- sel.set_selection_start(model.render_text()->GetSelectionStart()); |
+ gfx::SelectionModel sel(model.render_text()->GetSelectionStart(), |
+ 0, 0, gfx::SelectionModel::LEADING); |
model.MoveCursorTo(sel); |
EXPECT_TRUE(composition_text_confirmed_or_cleared_); |
composition_text_confirmed_or_cleared_ = false; |
EXPECT_STR_EQ("678678", model.GetText()); |
model.SetCompositionText(composition); |
- model.SelectSelectionModel(gfx::SelectionModel(0, 3)); |
+ model.SelectRange(ui::Range(0, 3)); |
EXPECT_TRUE(composition_text_confirmed_or_cleared_); |
composition_text_confirmed_or_cleared_ = false; |
EXPECT_STR_EQ("678", model.GetText()); |
@@ -1002,19 +1119,19 @@ |
model.SetText(ASCIIToUTF16("www.google.com")); |
EXPECT_EQ(1U, model.GetCursorPosition()); |
EXPECT_STR_EQ("www.google.com", model.GetText()); |
- model.SelectSelectionModel(gfx::SelectionModel(14, 1)); |
+ model.SelectRange(ui::Range(14, 1)); |
model.InsertChar('w'); |
EXPECT_STR_EQ("ww", model.GetText()); |
model.SetText(ASCIIToUTF16("www.google.com")); |
- model.SelectSelectionModel(gfx::SelectionModel(14, 2)); |
+ model.SelectRange(ui::Range(14, 2)); |
model.InsertChar('w'); |
EXPECT_STR_EQ("www", model.GetText()); |
model.SetText(ASCIIToUTF16("www.google.com")); |
- model.SelectSelectionModel(gfx::SelectionModel(14, 3)); |
+ model.SelectRange(ui::Range(14, 3)); |
model.InsertChar('.'); |
EXPECT_STR_EQ("www.", model.GetText()); |
model.SetText(ASCIIToUTF16("www.google.com")); |
- model.SelectSelectionModel(gfx::SelectionModel(14, 4)); |
+ model.SelectRange(ui::Range(14, 4)); |
model.InsertChar('y'); |
EXPECT_STR_EQ("www.y", model.GetText()); |
model.SetText(ASCIIToUTF16("www.youtube.com")); |
@@ -1060,7 +1177,7 @@ |
model.SetText(ASCIIToUTF16("ABCDE")); |
EXPECT_FALSE(model.Redo()); // nothing to redo |
// Cut |
- model.MoveCursorTo(gfx::SelectionModel(1, 3)); |
+ model.SelectRange(ui::Range(1, 3)); |
model.Cut(); |
EXPECT_STR_EQ("ADE", model.GetText()); |
EXPECT_EQ(1U, model.GetCursorPosition()); |
@@ -1122,12 +1239,12 @@ |
EXPECT_EQ(7U, model.GetCursorPosition()); |
EXPECT_FALSE(model.Redo()); |
- // with SelectSelectionModel |
- model.SelectSelectionModel(gfx::SelectionModel(1, 3)); |
+ // with SelectRange |
+ model.SelectRange(ui::Range(1, 3)); |
EXPECT_TRUE(model.Cut()); |
EXPECT_STR_EQ("ABCBCDE", model.GetText()); |
EXPECT_EQ(1U, model.GetCursorPosition()); |
- model.SelectSelectionModel(gfx::SelectionModel(1, 1)); |
+ model.SelectRange(ui::Range(1, 1)); |
EXPECT_FALSE(model.Cut()); |
model.MoveCursorRight(gfx::LINE_BREAK, false); |
EXPECT_TRUE(model.Paste()); |
@@ -1146,7 +1263,7 @@ |
model.SetText(ASCIIToUTF16("12345")); |
EXPECT_STR_EQ("12345", model.GetText()); |
EXPECT_EQ(0U, model.GetCursorPosition()); |
- model.MoveCursorTo(gfx::SelectionModel(1, 3)); |
+ model.SelectRange(ui::Range(1, 3)); |
model.Copy(); // Copy "23" |
EXPECT_STR_EQ("12345", model.GetText()); |
EXPECT_EQ(3U, model.GetCursorPosition()); |
@@ -1179,8 +1296,8 @@ |
EXPECT_FALSE(model.Redo()); |
EXPECT_STR_EQ("1232345", model.GetText()); |
- // Test using SelectSelectionModel |
- model.SelectSelectionModel(gfx::SelectionModel(1, 3)); |
+ // Test using SelectRange |
+ model.SelectRange(ui::Range(1, 3)); |
model.Copy(); |
EXPECT_STR_EQ("1232345", model.GetText()); |
model.MoveCursorRight(gfx::LINE_BREAK, false); |
@@ -1270,57 +1387,57 @@ |
SCOPED_TRACE("forward & insert by cursor"); |
TextfieldViewsModel model(NULL); |
model.SetText(ASCIIToUTF16("abcd")); |
- model.MoveCursorTo(gfx::SelectionModel(1, 3)); |
+ model.SelectRange(ui::Range(1, 3)); |
RunInsertReplaceTest(model); |
} |
{ |
SCOPED_TRACE("backward & insert by cursor"); |
TextfieldViewsModel model(NULL); |
model.SetText(ASCIIToUTF16("abcd")); |
- model.MoveCursorTo(gfx::SelectionModel(3, 1)); |
+ model.SelectRange(ui::Range(3, 1)); |
RunInsertReplaceTest(model); |
} |
{ |
SCOPED_TRACE("forward & overwrite by cursor"); |
TextfieldViewsModel model(NULL); |
model.SetText(ASCIIToUTF16("abcd")); |
- model.MoveCursorTo(gfx::SelectionModel(1, 3)); |
+ model.SelectRange(ui::Range(1, 3)); |
RunOverwriteReplaceTest(model); |
} |
{ |
SCOPED_TRACE("backward & overwrite by cursor"); |
TextfieldViewsModel model(NULL); |
model.SetText(ASCIIToUTF16("abcd")); |
- model.MoveCursorTo(gfx::SelectionModel(3, 1)); |
+ model.SelectRange(ui::Range(3, 1)); |
RunOverwriteReplaceTest(model); |
} |
- // By SelectSelectionModel API |
+ // By SelectRange API |
{ |
- SCOPED_TRACE("forward & insert by SelectSelectionModel"); |
+ SCOPED_TRACE("forward & insert by SelectRange"); |
TextfieldViewsModel model(NULL); |
model.SetText(ASCIIToUTF16("abcd")); |
- model.SelectSelectionModel(gfx::SelectionModel(1, 3)); |
+ model.SelectRange(ui::Range(1, 3)); |
RunInsertReplaceTest(model); |
} |
{ |
- SCOPED_TRACE("backward & insert by SelectSelectionModel"); |
+ SCOPED_TRACE("backward & insert by SelectRange"); |
TextfieldViewsModel model(NULL); |
model.SetText(ASCIIToUTF16("abcd")); |
- model.SelectSelectionModel(gfx::SelectionModel(3, 1)); |
+ model.SelectRange(ui::Range(3, 1)); |
RunInsertReplaceTest(model); |
} |
{ |
- SCOPED_TRACE("forward & overwrite by SelectSelectionModel"); |
+ SCOPED_TRACE("forward & overwrite by SelectRange"); |
TextfieldViewsModel model(NULL); |
model.SetText(ASCIIToUTF16("abcd")); |
- model.SelectSelectionModel(gfx::SelectionModel(1, 3)); |
+ model.SelectRange(ui::Range(1, 3)); |
RunOverwriteReplaceTest(model); |
} |
{ |
- SCOPED_TRACE("backward & overwrite by SelectSelectionModel"); |
+ SCOPED_TRACE("backward & overwrite by SelectRange"); |
TextfieldViewsModel model(NULL); |
model.SetText(ASCIIToUTF16("abcd")); |
- model.SelectSelectionModel(gfx::SelectionModel(3, 1)); |
+ model.SelectRange(ui::Range(3, 1)); |
RunOverwriteReplaceTest(model); |
} |
} |