Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Side by Side Diff: views/controls/textfield/textfield_views_model_unittest.cc

Issue 8044004: Clean up of SelectionModel (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: add comment about 'next' in ReplaceTextInternal Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 EXPECT_EQ(string16(), model.GetSelectedText()); 273 EXPECT_EQ(string16(), model.GetSelectedText());
274 model.SelectAll(); 274 model.SelectAll();
275 EXPECT_STR_EQ("HELLO", model.GetSelectedText()); 275 EXPECT_STR_EQ("HELLO", model.GetSelectedText());
276 // SelectAll should select towards the end. 276 // SelectAll should select towards the end.
277 gfx::SelectionModel sel; 277 gfx::SelectionModel sel;
278 model.GetSelectionModel(&sel); 278 model.GetSelectionModel(&sel);
279 EXPECT_EQ(0U, sel.selection_start()); 279 EXPECT_EQ(0U, sel.selection_start());
280 EXPECT_EQ(5U, sel.selection_end()); 280 EXPECT_EQ(5U, sel.selection_end());
281 281
282 // Select and move cursor 282 // Select and move cursor
283 model.MoveCursorTo(gfx::SelectionModel(1U, 3U)); 283 model.SelectRange(ui::Range(1U, 3U));
284 EXPECT_STR_EQ("EL", model.GetSelectedText()); 284 EXPECT_STR_EQ("EL", model.GetSelectedText());
285 model.MoveCursorLeft(gfx::CHARACTER_BREAK, false); 285 model.MoveCursorLeft(gfx::CHARACTER_BREAK, false);
286 EXPECT_EQ(1U, model.GetCursorPosition()); 286 EXPECT_EQ(1U, model.GetCursorPosition());
287 model.MoveCursorTo(gfx::SelectionModel(1U, 3U)); 287 model.SelectRange(ui::Range(1U, 3U));
288 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); 288 model.MoveCursorRight(gfx::CHARACTER_BREAK, false);
289 EXPECT_EQ(3U, model.GetCursorPosition()); 289 EXPECT_EQ(3U, model.GetCursorPosition());
290 290
291 // Select all and move cursor 291 // Select all and move cursor
292 model.SelectAll(); 292 model.SelectAll();
293 model.MoveCursorLeft(gfx::CHARACTER_BREAK, false); 293 model.MoveCursorLeft(gfx::CHARACTER_BREAK, false);
294 EXPECT_EQ(0U, model.GetCursorPosition()); 294 EXPECT_EQ(0U, model.GetCursorPosition());
295 model.SelectAll(); 295 model.SelectAll();
296 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); 296 model.MoveCursorRight(gfx::CHARACTER_BREAK, false);
297 EXPECT_EQ(5U, model.GetCursorPosition()); 297 EXPECT_EQ(5U, model.GetCursorPosition());
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 model.MoveCursorLeft(gfx::LINE_BREAK, false); 629 model.MoveCursorLeft(gfx::LINE_BREAK, false);
630 for (size_t j = 0; j < i; ++j) 630 for (size_t j = 0; j < i; ++j)
631 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); 631 model.MoveCursorRight(gfx::CHARACTER_BREAK, false);
632 model.SelectWord(); 632 model.SelectWord();
633 SelectWordTestVerifier(model, WideToUTF16(word_and_cursor[i].word), 633 SelectWordTestVerifier(model, WideToUTF16(word_and_cursor[i].word),
634 word_and_cursor[i].cursor); 634 word_and_cursor[i].cursor);
635 } 635 }
636 } 636 }
637 #endif 637 #endif
638 638
639 TEST_F(TextfieldViewsModelTest, RangeTest) {
640 TextfieldViewsModel model(NULL);
641 model.Append(ASCIIToUTF16("HELLO WORLD"));
642 model.MoveCursorLeft(gfx::LINE_BREAK, false);
643 ui::Range range;
644 model.GetSelectedRange(&range);
645 EXPECT_TRUE(range.is_empty());
646 EXPECT_EQ(0U, range.start());
647 EXPECT_EQ(0U, range.end());
648
649 model.MoveCursorRight(gfx::WORD_BREAK, true);
650 model.GetSelectedRange(&range);
651 EXPECT_FALSE(range.is_empty());
652 EXPECT_FALSE(range.is_reversed());
653 EXPECT_EQ(0U, range.start());
654 EXPECT_EQ(5U, range.end());
655
656 model.MoveCursorLeft(gfx::CHARACTER_BREAK, true);
657 model.GetSelectedRange(&range);
658 EXPECT_FALSE(range.is_empty());
659 EXPECT_EQ(0U, range.start());
660 EXPECT_EQ(4U, range.end());
661
662 model.MoveCursorLeft(gfx::WORD_BREAK, true);
663 model.GetSelectedRange(&range);
664 EXPECT_TRUE(range.is_empty());
665 EXPECT_EQ(0U, range.start());
666 EXPECT_EQ(0U, range.end());
667
668 // now from the end.
669 model.MoveCursorRight(gfx::LINE_BREAK, false);
670 model.GetSelectedRange(&range);
671 EXPECT_TRUE(range.is_empty());
672 EXPECT_EQ(11U, range.start());
673 EXPECT_EQ(11U, range.end());
674
675 model.MoveCursorLeft(gfx::WORD_BREAK, true);
676 model.GetSelectedRange(&range);
677 EXPECT_FALSE(range.is_empty());
678 EXPECT_TRUE(range.is_reversed());
679 EXPECT_EQ(11U, range.start());
680 EXPECT_EQ(6U, range.end());
681
682 model.MoveCursorRight(gfx::CHARACTER_BREAK, true);
683 model.GetSelectedRange(&range);
684 EXPECT_FALSE(range.is_empty());
685 EXPECT_TRUE(range.is_reversed());
686 EXPECT_EQ(11U, range.start());
687 EXPECT_EQ(7U, range.end());
688
689 model.MoveCursorRight(gfx::WORD_BREAK, true);
690 model.GetSelectedRange(&range);
691 EXPECT_TRUE(range.is_empty());
692 EXPECT_EQ(11U, range.start());
693 EXPECT_EQ(11U, range.end());
694
695 // Select All
696 model.MoveCursorLeft(gfx::LINE_BREAK, true);
697 model.GetSelectedRange(&range);
698 EXPECT_FALSE(range.is_empty());
699 EXPECT_TRUE(range.is_reversed());
700 EXPECT_EQ(11U, range.start());
701 EXPECT_EQ(0U, range.end());
702 }
703
704 TEST_F(TextfieldViewsModelTest, SelectRangeTest) {
705 TextfieldViewsModel model(NULL);
706 model.Append(ASCIIToUTF16("HELLO WORLD"));
707 ui::Range range(0, 6);
708 EXPECT_FALSE(range.is_reversed());
709 model.SelectRange(range);
710 EXPECT_STR_EQ("HELLO ", model.GetSelectedText());
711
712 range = ui::Range(6, 1);
713 EXPECT_TRUE(range.is_reversed());
714 model.SelectRange(range);
715 EXPECT_STR_EQ("ELLO ", model.GetSelectedText());
716
717 range = ui::Range(2, 1000);
718 EXPECT_FALSE(range.is_reversed());
719 model.SelectRange(range);
720 EXPECT_STR_EQ("LLO WORLD", model.GetSelectedText());
721
722 range = ui::Range(1000, 3);
723 EXPECT_TRUE(range.is_reversed());
724 model.SelectRange(range);
725 EXPECT_STR_EQ("LO WORLD", model.GetSelectedText());
726
727 range = ui::Range(0, 0);
728 EXPECT_TRUE(range.is_empty());
729 model.SelectRange(range);
730 EXPECT_TRUE(model.GetSelectedText().empty());
731
732 range = ui::Range(3, 3);
733 EXPECT_TRUE(range.is_empty());
734 model.SelectRange(range);
735 EXPECT_TRUE(model.GetSelectedText().empty());
736
737 range = ui::Range(1000, 100);
738 EXPECT_FALSE(range.is_empty());
739 model.SelectRange(range);
740 EXPECT_TRUE(model.GetSelectedText().empty());
741
742 range = ui::Range(1000, 1000);
743 EXPECT_TRUE(range.is_empty());
744 model.SelectRange(range);
745 EXPECT_TRUE(model.GetSelectedText().empty());
746 }
747
639 TEST_F(TextfieldViewsModelTest, SelectionModelTest) { 748 TEST_F(TextfieldViewsModelTest, SelectionModelTest) {
640 TextfieldViewsModel model(NULL); 749 TextfieldViewsModel model(NULL);
641 model.Append(ASCIIToUTF16("HELLO WORLD")); 750 model.Append(ASCIIToUTF16("HELLO WORLD"));
642 model.MoveCursorLeft(gfx::LINE_BREAK, false); 751 model.MoveCursorLeft(gfx::LINE_BREAK, false);
643 gfx::SelectionModel sel; 752 gfx::SelectionModel sel;
644 model.GetSelectionModel(&sel); 753 model.GetSelectionModel(&sel);
645 EXPECT_EQ(sel.selection_start(), sel.selection_end()); 754 EXPECT_EQ(sel.selection_start(), sel.selection_end());
646 EXPECT_EQ(0U, sel.selection_start()); 755 EXPECT_EQ(0U, sel.selection_start());
647 EXPECT_EQ(0U, sel.selection_end()); 756 EXPECT_EQ(0U, sel.selection_end());
648 757
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 model.GetSelectionModel(&sel); 806 model.GetSelectionModel(&sel);
698 EXPECT_NE(sel.selection_start(), sel.selection_end()); 807 EXPECT_NE(sel.selection_start(), sel.selection_end());
699 EXPECT_GT(sel.selection_start(), sel.selection_end()); 808 EXPECT_GT(sel.selection_start(), sel.selection_end());
700 EXPECT_EQ(11U, sel.selection_start()); 809 EXPECT_EQ(11U, sel.selection_start());
701 EXPECT_EQ(0U, sel.selection_end()); 810 EXPECT_EQ(0U, sel.selection_end());
702 } 811 }
703 812
704 TEST_F(TextfieldViewsModelTest, SelectSelectionModelTest) { 813 TEST_F(TextfieldViewsModelTest, SelectSelectionModelTest) {
705 TextfieldViewsModel model(NULL); 814 TextfieldViewsModel model(NULL);
706 model.Append(ASCIIToUTF16("HELLO WORLD")); 815 model.Append(ASCIIToUTF16("HELLO WORLD"));
707 model.SelectSelectionModel(gfx::SelectionModel(0, 6)); 816 model.SelectSelectionModel(gfx::SelectionModel(0, 6, 5,
817 gfx::SelectionModel::TRAILING));
708 EXPECT_STR_EQ("HELLO ", model.GetSelectedText()); 818 EXPECT_STR_EQ("HELLO ", model.GetSelectedText());
709 819
710 model.SelectSelectionModel(gfx::SelectionModel(6, 1)); 820 model.SelectSelectionModel(gfx::SelectionModel(6, 1, 1,
821 gfx::SelectionModel::LEADING));
711 EXPECT_STR_EQ("ELLO ", model.GetSelectedText()); 822 EXPECT_STR_EQ("ELLO ", model.GetSelectedText());
712 823
713 model.SelectSelectionModel(gfx::SelectionModel(2, 1000)); 824 model.SelectSelectionModel(gfx::SelectionModel(2, 1000, 999,
825 gfx::SelectionModel::TRAILING));
714 EXPECT_STR_EQ("LLO WORLD", model.GetSelectedText()); 826 EXPECT_STR_EQ("LLO WORLD", model.GetSelectedText());
715 827
716 model.SelectSelectionModel(gfx::SelectionModel(1000, 3)); 828 model.SelectSelectionModel(gfx::SelectionModel(1000, 3, 3,
829 gfx::SelectionModel::LEADING));
717 EXPECT_STR_EQ("LO WORLD", model.GetSelectedText()); 830 EXPECT_STR_EQ("LO WORLD", model.GetSelectedText());
718 831
719 model.SelectSelectionModel(gfx::SelectionModel(0, 0)); 832 model.SelectSelectionModel(gfx::SelectionModel(0, 0, 0,
833 gfx::SelectionModel::LEADING));
720 EXPECT_TRUE(model.GetSelectedText().empty()); 834 EXPECT_TRUE(model.GetSelectedText().empty());
721 835
722 model.SelectSelectionModel(gfx::SelectionModel(3, 3)); 836 model.SelectSelectionModel(gfx::SelectionModel(3, 3, 3,
837 gfx::SelectionModel::LEADING));
723 EXPECT_TRUE(model.GetSelectedText().empty()); 838 EXPECT_TRUE(model.GetSelectedText().empty());
724 839
725 model.SelectSelectionModel(gfx::SelectionModel(1000, 100)); 840 model.SelectSelectionModel(gfx::SelectionModel(1000, 100, 100,
841 gfx::SelectionModel::LEADING));
726 EXPECT_TRUE(model.GetSelectedText().empty()); 842 EXPECT_TRUE(model.GetSelectedText().empty());
727 843
728 model.SelectSelectionModel(gfx::SelectionModel(1000, 1000)); 844 model.SelectSelectionModel(gfx::SelectionModel(1000, 1000, 1000,
845 gfx::SelectionModel::TRAILING));
729 EXPECT_TRUE(model.GetSelectedText().empty()); 846 EXPECT_TRUE(model.GetSelectedText().empty());
730 } 847 }
731 848
732 TEST_F(TextfieldViewsModelTest, CompositionTextTest) { 849 TEST_F(TextfieldViewsModelTest, CompositionTextTest) {
733 TextfieldViewsModel model(this); 850 TextfieldViewsModel model(this);
734 model.Append(ASCIIToUTF16("1234590")); 851 model.Append(ASCIIToUTF16("1234590"));
735 model.SelectSelectionModel(gfx::SelectionModel(5, 5)); 852 model.SelectRange(ui::Range(5, 5));
736 EXPECT_FALSE(model.HasSelection()); 853 EXPECT_FALSE(model.HasSelection());
737 EXPECT_EQ(5U, model.GetCursorPosition()); 854 EXPECT_EQ(5U, model.GetCursorPosition());
738 855
739 ui::Range range; 856 ui::Range range;
740 model.GetTextRange(&range); 857 model.GetTextRange(&range);
741 EXPECT_EQ(0U, range.start()); 858 EXPECT_EQ(0U, range.start());
742 EXPECT_EQ(7U, range.end()); 859 EXPECT_EQ(7U, range.end());
743 860
744 ui::CompositionText composition; 861 ui::CompositionText composition;
745 composition.text = ASCIIToUTF16("678"); 862 composition.text = ASCIIToUTF16("678");
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 composition_text_confirmed_or_cleared_ = false; 970 composition_text_confirmed_or_cleared_ = false;
854 EXPECT_STR_EQ("678678", model.GetText()); 971 EXPECT_STR_EQ("678678", model.GetText());
855 972
856 model.SetCompositionText(composition); 973 model.SetCompositionText(composition);
857 model.MoveCursorRight(gfx::LINE_BREAK, false); 974 model.MoveCursorRight(gfx::LINE_BREAK, false);
858 EXPECT_TRUE(composition_text_confirmed_or_cleared_); 975 EXPECT_TRUE(composition_text_confirmed_or_cleared_);
859 composition_text_confirmed_or_cleared_ = false; 976 composition_text_confirmed_or_cleared_ = false;
860 EXPECT_STR_EQ("678", model.GetText()); 977 EXPECT_STR_EQ("678", model.GetText());
861 978
862 model.SetCompositionText(composition); 979 model.SetCompositionText(composition);
863 gfx::SelectionModel sel(0); 980 gfx::SelectionModel sel(model.render_text()->GetSelectionStart(),
864 sel.set_selection_start(model.render_text()->GetSelectionStart()); 981 0, 0, gfx::SelectionModel::LEADING);
865 model.MoveCursorTo(sel); 982 model.MoveCursorTo(sel);
866 EXPECT_TRUE(composition_text_confirmed_or_cleared_); 983 EXPECT_TRUE(composition_text_confirmed_or_cleared_);
867 composition_text_confirmed_or_cleared_ = false; 984 composition_text_confirmed_or_cleared_ = false;
868 EXPECT_STR_EQ("678678", model.GetText()); 985 EXPECT_STR_EQ("678678", model.GetText());
869 986
870 model.SetCompositionText(composition); 987 model.SetCompositionText(composition);
871 model.SelectSelectionModel(gfx::SelectionModel(0, 3)); 988 model.SelectRange(ui::Range(0, 3));
872 EXPECT_TRUE(composition_text_confirmed_or_cleared_); 989 EXPECT_TRUE(composition_text_confirmed_or_cleared_);
873 composition_text_confirmed_or_cleared_ = false; 990 composition_text_confirmed_or_cleared_ = false;
874 EXPECT_STR_EQ("678", model.GetText()); 991 EXPECT_STR_EQ("678", model.GetText());
875 992
876 model.SetCompositionText(composition); 993 model.SetCompositionText(composition);
877 model.SelectAll(); 994 model.SelectAll();
878 EXPECT_TRUE(composition_text_confirmed_or_cleared_); 995 EXPECT_TRUE(composition_text_confirmed_or_cleared_);
879 composition_text_confirmed_or_cleared_ = false; 996 composition_text_confirmed_or_cleared_ = false;
880 EXPECT_STR_EQ("678", model.GetText()); 997 EXPECT_STR_EQ("678", model.GetText());
881 998
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 1112
996 TEST_F(TextfieldViewsModelTest, UndoRedo_SetText) { 1113 TEST_F(TextfieldViewsModelTest, UndoRedo_SetText) {
997 // This is to test the undo/redo behavior of omnibox. 1114 // This is to test the undo/redo behavior of omnibox.
998 TextfieldViewsModel model(NULL); 1115 TextfieldViewsModel model(NULL);
999 model.InsertChar('w'); 1116 model.InsertChar('w');
1000 EXPECT_STR_EQ("w", model.GetText()); 1117 EXPECT_STR_EQ("w", model.GetText());
1001 EXPECT_EQ(1U, model.GetCursorPosition()); 1118 EXPECT_EQ(1U, model.GetCursorPosition());
1002 model.SetText(ASCIIToUTF16("www.google.com")); 1119 model.SetText(ASCIIToUTF16("www.google.com"));
1003 EXPECT_EQ(1U, model.GetCursorPosition()); 1120 EXPECT_EQ(1U, model.GetCursorPosition());
1004 EXPECT_STR_EQ("www.google.com", model.GetText()); 1121 EXPECT_STR_EQ("www.google.com", model.GetText());
1005 model.SelectSelectionModel(gfx::SelectionModel(14, 1)); 1122 model.SelectRange(ui::Range(14, 1));
1006 model.InsertChar('w'); 1123 model.InsertChar('w');
1007 EXPECT_STR_EQ("ww", model.GetText()); 1124 EXPECT_STR_EQ("ww", model.GetText());
1008 model.SetText(ASCIIToUTF16("www.google.com")); 1125 model.SetText(ASCIIToUTF16("www.google.com"));
1009 model.SelectSelectionModel(gfx::SelectionModel(14, 2)); 1126 model.SelectRange(ui::Range(14, 2));
1010 model.InsertChar('w'); 1127 model.InsertChar('w');
1011 EXPECT_STR_EQ("www", model.GetText()); 1128 EXPECT_STR_EQ("www", model.GetText());
1012 model.SetText(ASCIIToUTF16("www.google.com")); 1129 model.SetText(ASCIIToUTF16("www.google.com"));
1013 model.SelectSelectionModel(gfx::SelectionModel(14, 3)); 1130 model.SelectRange(ui::Range(14, 3));
1014 model.InsertChar('.'); 1131 model.InsertChar('.');
1015 EXPECT_STR_EQ("www.", model.GetText()); 1132 EXPECT_STR_EQ("www.", model.GetText());
1016 model.SetText(ASCIIToUTF16("www.google.com")); 1133 model.SetText(ASCIIToUTF16("www.google.com"));
1017 model.SelectSelectionModel(gfx::SelectionModel(14, 4)); 1134 model.SelectRange(ui::Range(14, 4));
1018 model.InsertChar('y'); 1135 model.InsertChar('y');
1019 EXPECT_STR_EQ("www.y", model.GetText()); 1136 EXPECT_STR_EQ("www.y", model.GetText());
1020 model.SetText(ASCIIToUTF16("www.youtube.com")); 1137 model.SetText(ASCIIToUTF16("www.youtube.com"));
1021 EXPECT_STR_EQ("www.youtube.com", model.GetText()); 1138 EXPECT_STR_EQ("www.youtube.com", model.GetText());
1022 EXPECT_EQ(5U, model.GetCursorPosition()); 1139 EXPECT_EQ(5U, model.GetCursorPosition());
1023 1140
1024 EXPECT_TRUE(model.Undo()); 1141 EXPECT_TRUE(model.Undo());
1025 EXPECT_STR_EQ("www.google.com", model.GetText()); 1142 EXPECT_STR_EQ("www.google.com", model.GetText());
1026 EXPECT_EQ(4U, model.GetCursorPosition()); 1143 EXPECT_EQ(4U, model.GetCursorPosition());
1027 EXPECT_TRUE(model.Undo()); 1144 EXPECT_TRUE(model.Undo());
(...skipping 25 matching lines...) Expand all
1053 EXPECT_STR_EQ("www.youtube.com", model.GetText()); 1170 EXPECT_STR_EQ("www.youtube.com", model.GetText());
1054 EXPECT_EQ(5U, model.GetCursorPosition()); 1171 EXPECT_EQ(5U, model.GetCursorPosition());
1055 EXPECT_FALSE(model.Redo()); 1172 EXPECT_FALSE(model.Redo());
1056 } 1173 }
1057 1174
1058 TEST_F(TextfieldViewsModelTest, UndoRedo_CutCopyPasteTest) { 1175 TEST_F(TextfieldViewsModelTest, UndoRedo_CutCopyPasteTest) {
1059 TextfieldViewsModel model(NULL); 1176 TextfieldViewsModel model(NULL);
1060 model.SetText(ASCIIToUTF16("ABCDE")); 1177 model.SetText(ASCIIToUTF16("ABCDE"));
1061 EXPECT_FALSE(model.Redo()); // nothing to redo 1178 EXPECT_FALSE(model.Redo()); // nothing to redo
1062 // Cut 1179 // Cut
1063 model.MoveCursorTo(gfx::SelectionModel(1, 3)); 1180 model.SelectRange(ui::Range(1, 3));
1064 model.Cut(); 1181 model.Cut();
1065 EXPECT_STR_EQ("ADE", model.GetText()); 1182 EXPECT_STR_EQ("ADE", model.GetText());
1066 EXPECT_EQ(1U, model.GetCursorPosition()); 1183 EXPECT_EQ(1U, model.GetCursorPosition());
1067 EXPECT_TRUE(model.Undo()); 1184 EXPECT_TRUE(model.Undo());
1068 EXPECT_STR_EQ("ABCDE", model.GetText()); 1185 EXPECT_STR_EQ("ABCDE", model.GetText());
1069 EXPECT_EQ(3U, model.GetCursorPosition()); 1186 EXPECT_EQ(3U, model.GetCursorPosition());
1070 EXPECT_TRUE(model.Undo()); 1187 EXPECT_TRUE(model.Undo());
1071 EXPECT_STR_EQ("", model.GetText()); 1188 EXPECT_STR_EQ("", model.GetText());
1072 EXPECT_EQ(0U, model.GetCursorPosition()); 1189 EXPECT_EQ(0U, model.GetCursorPosition());
1073 EXPECT_FALSE(model.Undo()); // no more undo 1190 EXPECT_FALSE(model.Undo()); // no more undo
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1115 EXPECT_STR_EQ("ABCDE", model.GetText()); 1232 EXPECT_STR_EQ("ABCDE", model.GetText());
1116 EXPECT_EQ(3U, model.GetCursorPosition()); 1233 EXPECT_EQ(3U, model.GetCursorPosition());
1117 EXPECT_TRUE(model.Redo()); 1234 EXPECT_TRUE(model.Redo());
1118 EXPECT_STR_EQ("ABCBCDE", model.GetText()); 1235 EXPECT_STR_EQ("ABCBCDE", model.GetText());
1119 EXPECT_EQ(5U, model.GetCursorPosition()); 1236 EXPECT_EQ(5U, model.GetCursorPosition());
1120 EXPECT_TRUE(model.Redo()); 1237 EXPECT_TRUE(model.Redo());
1121 EXPECT_STR_EQ("ABCBCBCDE", model.GetText()); 1238 EXPECT_STR_EQ("ABCBCBCDE", model.GetText());
1122 EXPECT_EQ(7U, model.GetCursorPosition()); 1239 EXPECT_EQ(7U, model.GetCursorPosition());
1123 EXPECT_FALSE(model.Redo()); 1240 EXPECT_FALSE(model.Redo());
1124 1241
1125 // with SelectSelectionModel 1242 // with SelectRange
1126 model.SelectSelectionModel(gfx::SelectionModel(1, 3)); 1243 model.SelectRange(ui::Range(1, 3));
1127 EXPECT_TRUE(model.Cut()); 1244 EXPECT_TRUE(model.Cut());
1128 EXPECT_STR_EQ("ABCBCDE", model.GetText()); 1245 EXPECT_STR_EQ("ABCBCDE", model.GetText());
1129 EXPECT_EQ(1U, model.GetCursorPosition()); 1246 EXPECT_EQ(1U, model.GetCursorPosition());
1130 model.SelectSelectionModel(gfx::SelectionModel(1, 1)); 1247 model.SelectRange(ui::Range(1, 1));
1131 EXPECT_FALSE(model.Cut()); 1248 EXPECT_FALSE(model.Cut());
1132 model.MoveCursorRight(gfx::LINE_BREAK, false); 1249 model.MoveCursorRight(gfx::LINE_BREAK, false);
1133 EXPECT_TRUE(model.Paste()); 1250 EXPECT_TRUE(model.Paste());
1134 EXPECT_STR_EQ("ABCBCDEBC", model.GetText()); 1251 EXPECT_STR_EQ("ABCBCDEBC", model.GetText());
1135 EXPECT_EQ(9U, model.GetCursorPosition()); 1252 EXPECT_EQ(9U, model.GetCursorPosition());
1136 EXPECT_TRUE(model.Undo()); 1253 EXPECT_TRUE(model.Undo());
1137 EXPECT_STR_EQ("ABCBCDE", model.GetText()); 1254 EXPECT_STR_EQ("ABCBCDE", model.GetText());
1138 EXPECT_EQ(7U, model.GetCursorPosition()); 1255 EXPECT_EQ(7U, model.GetCursorPosition());
1139 // empty cut shouldn't create an edit. 1256 // empty cut shouldn't create an edit.
1140 EXPECT_TRUE(model.Undo()); 1257 EXPECT_TRUE(model.Undo());
1141 EXPECT_STR_EQ("ABCBCBCDE", model.GetText()); 1258 EXPECT_STR_EQ("ABCBCBCDE", model.GetText());
1142 EXPECT_EQ(3U, model.GetCursorPosition()); 1259 EXPECT_EQ(3U, model.GetCursorPosition());
1143 1260
1144 // Copy 1261 // Copy
1145 ResetModel(&model); 1262 ResetModel(&model);
1146 model.SetText(ASCIIToUTF16("12345")); 1263 model.SetText(ASCIIToUTF16("12345"));
1147 EXPECT_STR_EQ("12345", model.GetText()); 1264 EXPECT_STR_EQ("12345", model.GetText());
1148 EXPECT_EQ(0U, model.GetCursorPosition()); 1265 EXPECT_EQ(0U, model.GetCursorPosition());
1149 model.MoveCursorTo(gfx::SelectionModel(1, 3)); 1266 model.SelectRange(ui::Range(1, 3));
1150 model.Copy(); // Copy "23" 1267 model.Copy(); // Copy "23"
1151 EXPECT_STR_EQ("12345", model.GetText()); 1268 EXPECT_STR_EQ("12345", model.GetText());
1152 EXPECT_EQ(3U, model.GetCursorPosition()); 1269 EXPECT_EQ(3U, model.GetCursorPosition());
1153 model.Paste(); // Paste "23" into "23". 1270 model.Paste(); // Paste "23" into "23".
1154 EXPECT_STR_EQ("12345", model.GetText()); 1271 EXPECT_STR_EQ("12345", model.GetText());
1155 EXPECT_EQ(3U, model.GetCursorPosition()); 1272 EXPECT_EQ(3U, model.GetCursorPosition());
1156 model.Paste(); 1273 model.Paste();
1157 EXPECT_STR_EQ("1232345", model.GetText()); 1274 EXPECT_STR_EQ("1232345", model.GetText());
1158 EXPECT_EQ(5U, model.GetCursorPosition()); 1275 EXPECT_EQ(5U, model.GetCursorPosition());
1159 EXPECT_TRUE(model.Undo()); 1276 EXPECT_TRUE(model.Undo());
(...skipping 12 matching lines...) Expand all
1172 EXPECT_EQ(0U, model.GetCursorPosition()); 1289 EXPECT_EQ(0U, model.GetCursorPosition());
1173 EXPECT_TRUE(model.Redo()); 1290 EXPECT_TRUE(model.Redo());
1174 EXPECT_STR_EQ("12345", model.GetText()); // For 1st paste 1291 EXPECT_STR_EQ("12345", model.GetText()); // For 1st paste
1175 EXPECT_EQ(3U, model.GetCursorPosition()); 1292 EXPECT_EQ(3U, model.GetCursorPosition());
1176 EXPECT_TRUE(model.Redo()); 1293 EXPECT_TRUE(model.Redo());
1177 EXPECT_STR_EQ("1232345", model.GetText()); 1294 EXPECT_STR_EQ("1232345", model.GetText());
1178 EXPECT_EQ(5U, model.GetCursorPosition()); 1295 EXPECT_EQ(5U, model.GetCursorPosition());
1179 EXPECT_FALSE(model.Redo()); 1296 EXPECT_FALSE(model.Redo());
1180 EXPECT_STR_EQ("1232345", model.GetText()); 1297 EXPECT_STR_EQ("1232345", model.GetText());
1181 1298
1182 // Test using SelectSelectionModel 1299 // Test using SelectRange
1183 model.SelectSelectionModel(gfx::SelectionModel(1, 3)); 1300 model.SelectRange(ui::Range(1, 3));
1184 model.Copy(); 1301 model.Copy();
1185 EXPECT_STR_EQ("1232345", model.GetText()); 1302 EXPECT_STR_EQ("1232345", model.GetText());
1186 model.MoveCursorRight(gfx::LINE_BREAK, false); 1303 model.MoveCursorRight(gfx::LINE_BREAK, false);
1187 EXPECT_TRUE(model.Paste()); 1304 EXPECT_TRUE(model.Paste());
1188 EXPECT_STR_EQ("123234523", model.GetText()); 1305 EXPECT_STR_EQ("123234523", model.GetText());
1189 EXPECT_EQ(9U, model.GetCursorPosition()); 1306 EXPECT_EQ(9U, model.GetCursorPosition());
1190 EXPECT_TRUE(model.Undo()); 1307 EXPECT_TRUE(model.Undo());
1191 EXPECT_STR_EQ("1232345", model.GetText()); 1308 EXPECT_STR_EQ("1232345", model.GetText());
1192 EXPECT_EQ(7U, model.GetCursorPosition()); 1309 EXPECT_EQ(7U, model.GetCursorPosition());
1193 } 1310 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 EXPECT_EQ(5U, model.GetCursorPosition()); 1380 EXPECT_EQ(5U, model.GetCursorPosition());
1264 EXPECT_FALSE(model.Redo()); 1381 EXPECT_FALSE(model.Redo());
1265 } 1382 }
1266 1383
1267 TEST_F(TextfieldViewsModelTest, UndoRedo_ReplaceTest) { 1384 TEST_F(TextfieldViewsModelTest, UndoRedo_ReplaceTest) {
1268 // By Cursor 1385 // By Cursor
1269 { 1386 {
1270 SCOPED_TRACE("forward & insert by cursor"); 1387 SCOPED_TRACE("forward & insert by cursor");
1271 TextfieldViewsModel model(NULL); 1388 TextfieldViewsModel model(NULL);
1272 model.SetText(ASCIIToUTF16("abcd")); 1389 model.SetText(ASCIIToUTF16("abcd"));
1273 model.MoveCursorTo(gfx::SelectionModel(1, 3)); 1390 model.SelectRange(ui::Range(1, 3));
1274 RunInsertReplaceTest(model); 1391 RunInsertReplaceTest(model);
1275 } 1392 }
1276 { 1393 {
1277 SCOPED_TRACE("backward & insert by cursor"); 1394 SCOPED_TRACE("backward & insert by cursor");
1278 TextfieldViewsModel model(NULL); 1395 TextfieldViewsModel model(NULL);
1279 model.SetText(ASCIIToUTF16("abcd")); 1396 model.SetText(ASCIIToUTF16("abcd"));
1280 model.MoveCursorTo(gfx::SelectionModel(3, 1)); 1397 model.SelectRange(ui::Range(3, 1));
1281 RunInsertReplaceTest(model); 1398 RunInsertReplaceTest(model);
1282 } 1399 }
1283 { 1400 {
1284 SCOPED_TRACE("forward & overwrite by cursor"); 1401 SCOPED_TRACE("forward & overwrite by cursor");
1285 TextfieldViewsModel model(NULL); 1402 TextfieldViewsModel model(NULL);
1286 model.SetText(ASCIIToUTF16("abcd")); 1403 model.SetText(ASCIIToUTF16("abcd"));
1287 model.MoveCursorTo(gfx::SelectionModel(1, 3)); 1404 model.SelectRange(ui::Range(1, 3));
1288 RunOverwriteReplaceTest(model); 1405 RunOverwriteReplaceTest(model);
1289 } 1406 }
1290 { 1407 {
1291 SCOPED_TRACE("backward & overwrite by cursor"); 1408 SCOPED_TRACE("backward & overwrite by cursor");
1292 TextfieldViewsModel model(NULL); 1409 TextfieldViewsModel model(NULL);
1293 model.SetText(ASCIIToUTF16("abcd")); 1410 model.SetText(ASCIIToUTF16("abcd"));
1294 model.MoveCursorTo(gfx::SelectionModel(3, 1)); 1411 model.SelectRange(ui::Range(3, 1));
1295 RunOverwriteReplaceTest(model); 1412 RunOverwriteReplaceTest(model);
1296 } 1413 }
1297 // By SelectSelectionModel API 1414 // By SelectRange API
1298 { 1415 {
1299 SCOPED_TRACE("forward & insert by SelectSelectionModel"); 1416 SCOPED_TRACE("forward & insert by SelectRange");
1300 TextfieldViewsModel model(NULL); 1417 TextfieldViewsModel model(NULL);
1301 model.SetText(ASCIIToUTF16("abcd")); 1418 model.SetText(ASCIIToUTF16("abcd"));
1302 model.SelectSelectionModel(gfx::SelectionModel(1, 3)); 1419 model.SelectRange(ui::Range(1, 3));
1303 RunInsertReplaceTest(model); 1420 RunInsertReplaceTest(model);
1304 } 1421 }
1305 { 1422 {
1306 SCOPED_TRACE("backward & insert by SelectSelectionModel"); 1423 SCOPED_TRACE("backward & insert by SelectRange");
1307 TextfieldViewsModel model(NULL); 1424 TextfieldViewsModel model(NULL);
1308 model.SetText(ASCIIToUTF16("abcd")); 1425 model.SetText(ASCIIToUTF16("abcd"));
1309 model.SelectSelectionModel(gfx::SelectionModel(3, 1)); 1426 model.SelectRange(ui::Range(3, 1));
1310 RunInsertReplaceTest(model); 1427 RunInsertReplaceTest(model);
1311 } 1428 }
1312 { 1429 {
1313 SCOPED_TRACE("forward & overwrite by SelectSelectionModel"); 1430 SCOPED_TRACE("forward & overwrite by SelectRange");
1314 TextfieldViewsModel model(NULL); 1431 TextfieldViewsModel model(NULL);
1315 model.SetText(ASCIIToUTF16("abcd")); 1432 model.SetText(ASCIIToUTF16("abcd"));
1316 model.SelectSelectionModel(gfx::SelectionModel(1, 3)); 1433 model.SelectRange(ui::Range(1, 3));
1317 RunOverwriteReplaceTest(model); 1434 RunOverwriteReplaceTest(model);
1318 } 1435 }
1319 { 1436 {
1320 SCOPED_TRACE("backward & overwrite by SelectSelectionModel"); 1437 SCOPED_TRACE("backward & overwrite by SelectRange");
1321 TextfieldViewsModel model(NULL); 1438 TextfieldViewsModel model(NULL);
1322 model.SetText(ASCIIToUTF16("abcd")); 1439 model.SetText(ASCIIToUTF16("abcd"));
1323 model.SelectSelectionModel(gfx::SelectionModel(3, 1)); 1440 model.SelectRange(ui::Range(3, 1));
1324 RunOverwriteReplaceTest(model); 1441 RunOverwriteReplaceTest(model);
1325 } 1442 }
1326 } 1443 }
1327 1444
1328 TEST_F(TextfieldViewsModelTest, UndoRedo_CompositionText) { 1445 TEST_F(TextfieldViewsModelTest, UndoRedo_CompositionText) {
1329 TextfieldViewsModel model(NULL); 1446 TextfieldViewsModel model(NULL);
1330 1447
1331 ui::CompositionText composition; 1448 ui::CompositionText composition;
1332 composition.text = ASCIIToUTF16("abc"); 1449 composition.text = ASCIIToUTF16("abc");
1333 composition.underlines.push_back(ui::CompositionUnderline(0, 3, 0, false)); 1450 composition.underlines.push_back(ui::CompositionUnderline(0, 3, 0, false));
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 EXPECT_TRUE(model.Undo()); 1513 EXPECT_TRUE(model.Undo());
1397 EXPECT_STR_EQ("ABCDE", model.GetText()); 1514 EXPECT_STR_EQ("ABCDE", model.GetText());
1398 EXPECT_TRUE(model.Redo()); 1515 EXPECT_TRUE(model.Redo());
1399 EXPECT_STR_EQ("1234", model.GetText()); 1516 EXPECT_STR_EQ("1234", model.GetText());
1400 EXPECT_FALSE(model.Redo()); 1517 EXPECT_FALSE(model.Redo());
1401 1518
1402 // TODO(oshima): We need MockInputMethod to test the behavior with IME. 1519 // TODO(oshima): We need MockInputMethod to test the behavior with IME.
1403 } 1520 }
1404 1521
1405 } // namespace views 1522 } // namespace views
OLDNEW
« no previous file with comments | « views/controls/textfield/textfield_views_model.cc ('k') | views/touchui/touch_selection_controller_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698