Index: views/controls/textfield/textfield_views_model_unittest.cc |
diff --git a/views/controls/textfield/textfield_views_model_unittest.cc b/views/controls/textfield/textfield_views_model_unittest.cc |
index fa09efa745fda63c7676143574b4f0622d282434..388c8c3953fb7e8bd6448f72036c251013c2af26 100644 |
--- a/views/controls/textfield/textfield_views_model_unittest.cc |
+++ b/views/controls/textfield/textfield_views_model_unittest.cc |
@@ -2,9 +2,15 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/message_loop.h" |
+#include "base/scoped_ptr.h" |
#include "base/utf_string_conversions.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "ui/base/clipboard/clipboard.h" |
+#include "ui/base/clipboard/scoped_clipboard_writer.h" |
#include "views/controls/textfield/textfield_views_model.h" |
+#include "views/test/test_views_delegate.h" |
+#include "views/views_delegate.h" |
namespace views { |
@@ -282,4 +288,57 @@ TEST(TextfieldViewsModelTest, SetText) { |
EXPECT_EQ(0U, model.cursor_pos()); |
} |
+TEST(TextfieldViewsModelTest, Clipboard) { |
+ views::ViewsDelegate::views_delegate = new TestViewsDelegate(); |
+ ui::Clipboard* clipboard |
+ = views::ViewsDelegate::views_delegate->GetClipboard(); |
+ string16 initial_clipboard_text; |
+ clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &initial_clipboard_text); |
+ string16 clipboard_text; |
+ TextfieldViewsModel model; |
+ model.Append(ASCIIToUTF16("HELLO WORLD")); |
+ model.MoveCursorToEnd(false); |
+ |
+ // Test for cut: Empty selection. |
+ EXPECT_FALSE(model.Cut()); |
+ clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
+ EXPECT_STR_EQ(UTF16ToUTF8(initial_clipboard_text), clipboard_text); |
+ EXPECT_STR_EQ("HELLO WORLD", model.text()); |
+ EXPECT_EQ(11U, model.cursor_pos()); |
+ |
+ // Test for cut: Non-empty selection. |
+ model.MoveCursorToPreviousWord(true); |
+ EXPECT_TRUE(model.Cut()); |
+ clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
+ EXPECT_STR_EQ("WORLD", clipboard_text); |
+ EXPECT_STR_EQ("HELLO ", model.text()); |
+ EXPECT_EQ(6U, model.cursor_pos()); |
+ |
+ // Test for copy: Empty selection. |
+ model.Copy(); |
+ clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
+ EXPECT_STR_EQ("WORLD", clipboard_text); |
+ EXPECT_STR_EQ("HELLO ", model.text()); |
+ EXPECT_EQ(6U, model.cursor_pos()); |
+ |
+ // Test for copy: Non-empty selection. |
+ model.Append(ASCIIToUTF16("HELLO WORLD")); |
+ model.SelectAll(); |
+ model.Copy(); |
+ clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
+ EXPECT_STR_EQ("HELLO HELLO WORLD", clipboard_text); |
+ EXPECT_STR_EQ("HELLO HELLO WORLD", model.text()); |
+ EXPECT_EQ(0U, model.cursor_pos()); |
+ |
+ // Test for paste. |
+ model.ClearSelection(); |
+ model.MoveCursorToEnd(false); |
+ model.MoveCursorToPreviousWord(true); |
+ EXPECT_TRUE(model.Paste()); |
+ clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
+ EXPECT_STR_EQ("HELLO HELLO WORLD", clipboard_text); |
+ EXPECT_STR_EQ("HELLO HELLO HELLO HELLO WORLD", model.text()); |
+ EXPECT_EQ(29U, model.cursor_pos()); |
+} |
+ |
} // namespace views |