- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / bookmarks / bookmark_utils_unittest.cc
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/bookmarks/bookmark_utils.h"
6
7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/bookmarks/bookmark_model.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/base/clipboard/clipboard.h"
12 #include "ui/base/clipboard/scoped_clipboard_writer.h"
13
14 using std::string;
15
16 namespace bookmark_utils {
17 namespace {
18
19 class BookmarkUtilsTest : public ::testing::Test {
20  public:
21   virtual void TearDown() OVERRIDE {
22     ui::Clipboard::DestroyClipboardForCurrentThread();
23   }
24
25  private:
26   // Clipboard requires a message loop.
27   base::MessageLoopForUI loop;
28 };
29
30 TEST_F(BookmarkUtilsTest, GetBookmarksContainingText) {
31   BookmarkModel model(NULL);
32   const BookmarkNode* n1 = model.AddURL(model.other_node(),
33                                         0,
34                                         ASCIIToUTF16("foo bar"),
35                                         GURL("http://www.google.com"));
36   const BookmarkNode* n2 = model.AddURL(model.other_node(),
37                                         0,
38                                         ASCIIToUTF16("baz buz"),
39                                         GURL("http://www.cnn.com"));
40
41   model.AddFolder(model.other_node(), 0, ASCIIToUTF16("foo"));
42
43   std::vector<const BookmarkNode*> nodes;
44   GetBookmarksContainingText(
45       &model, ASCIIToUTF16("foo"), 100, string(), &nodes);
46   ASSERT_EQ(1U, nodes.size());
47   EXPECT_TRUE(nodes[0] == n1);
48   nodes.clear();
49
50   GetBookmarksContainingText(
51       &model, ASCIIToUTF16("cnn"), 100, string(), &nodes);
52   ASSERT_EQ(1U, nodes.size());
53   EXPECT_TRUE(nodes[0] == n2);
54   nodes.clear();
55
56   GetBookmarksContainingText(
57       &model, ASCIIToUTF16("foo bar"), 100, string(), &nodes);
58   ASSERT_EQ(1U, nodes.size());
59   EXPECT_TRUE(nodes[0] == n1);
60   nodes.clear();
61 }
62
63 TEST_F(BookmarkUtilsTest, CopyPaste) {
64   BookmarkModel model(NULL);
65   const BookmarkNode* node = model.AddURL(model.other_node(),
66                                           0,
67                                           ASCIIToUTF16("foo bar"),
68                                           GURL("http://www.google.com"));
69
70   // Copy a node to the clipboard.
71   std::vector<const BookmarkNode*> nodes;
72   nodes.push_back(node);
73   CopyToClipboard(&model, nodes, false);
74
75   // And make sure we can paste a bookmark from the clipboard.
76   EXPECT_TRUE(CanPasteFromClipboard(model.bookmark_bar_node()));
77
78   // Write some text to the clipboard.
79   {
80     ui::ScopedClipboardWriter clipboard_writer(
81         ui::Clipboard::GetForCurrentThread(),
82         ui::CLIPBOARD_TYPE_COPY_PASTE);
83     clipboard_writer.WriteText(ASCIIToUTF16("foo"));
84   }
85
86   // Now we shouldn't be able to paste from the clipboard.
87   EXPECT_FALSE(CanPasteFromClipboard(model.bookmark_bar_node()));
88 }
89
90 TEST_F(BookmarkUtilsTest, GetParentForNewNodes) {
91   BookmarkModel model(NULL);
92   // This tests the case where selection contains one item and that item is a
93   // folder.
94   std::vector<const BookmarkNode*> nodes;
95   nodes.push_back(model.bookmark_bar_node());
96   int index = -1;
97   const BookmarkNode* real_parent = GetParentForNewNodes(
98       model.bookmark_bar_node(), nodes, &index);
99   EXPECT_EQ(real_parent, model.bookmark_bar_node());
100   EXPECT_EQ(0, index);
101
102   nodes.clear();
103
104   // This tests the case where selection contains one item and that item is an
105   // url.
106   const BookmarkNode* page1 = model.AddURL(model.bookmark_bar_node(), 0,
107                                            ASCIIToUTF16("Google"),
108                                            GURL("http://google.com"));
109   nodes.push_back(page1);
110   real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
111   EXPECT_EQ(real_parent, model.bookmark_bar_node());
112   EXPECT_EQ(1, index);
113
114   // This tests the case where selection has more than one item.
115   const BookmarkNode* folder1 = model.AddFolder(model.bookmark_bar_node(), 1,
116                                                 ASCIIToUTF16("Folder 1"));
117   nodes.push_back(folder1);
118   real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
119   EXPECT_EQ(real_parent, model.bookmark_bar_node());
120   EXPECT_EQ(2, index);
121
122   // This tests the case where selection doesn't contain any items.
123   nodes.clear();
124   real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index);
125   EXPECT_EQ(real_parent, model.bookmark_bar_node());
126   EXPECT_EQ(2, index);
127 }
128
129 }  // namespace
130 }  // namespace bookmark_utils