diff options
Diffstat (limited to 'chrome/browser/bookmarks/bookmark_utils_unittest.cc')
-rw-r--r-- | chrome/browser/bookmarks/bookmark_utils_unittest.cc | 143 |
1 files changed, 136 insertions, 7 deletions
diff --git a/chrome/browser/bookmarks/bookmark_utils_unittest.cc b/chrome/browser/bookmarks/bookmark_utils_unittest.cc index bfd284e..c2aac0c 100644 --- a/chrome/browser/bookmarks/bookmark_utils_unittest.cc +++ b/chrome/browser/bookmarks/bookmark_utils_unittest.cc @@ -30,7 +30,7 @@ class BookmarkUtilsTest : public ::testing::Test { base::MessageLoopForUI loop; }; -TEST_F(BookmarkUtilsTest, GetBookmarksContainingText) { +TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) { BookmarkModel model(NULL); const BookmarkNode* node1 = model.AddURL(model.other_node(), 0, @@ -46,26 +46,155 @@ TEST_F(BookmarkUtilsTest, GetBookmarksContainingText) { ASCIIToUTF16("foo")); std::vector<const BookmarkNode*> nodes; - GetBookmarksContainingText( - &model, ASCIIToUTF16("foo"), 100, string(), &nodes); + QueryFields query; + query.word_phrase_query.reset(new string16); + *query.word_phrase_query = ASCIIToUTF16("foo"); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); ASSERT_EQ(2U, nodes.size()); EXPECT_TRUE(nodes[0] == folder1); EXPECT_TRUE(nodes[1] == node1); nodes.clear(); - GetBookmarksContainingText( - &model, ASCIIToUTF16("cnn"), 100, string(), &nodes); + *query.word_phrase_query = ASCIIToUTF16("cnn"); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); ASSERT_EQ(1U, nodes.size()); EXPECT_TRUE(nodes[0] == node2); nodes.clear(); - GetBookmarksContainingText( - &model, ASCIIToUTF16("foo bar"), 100, string(), &nodes); + *query.word_phrase_query = ASCIIToUTF16("foo bar"); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); ASSERT_EQ(1U, nodes.size()); EXPECT_TRUE(nodes[0] == node1); nodes.clear(); } +// Check exact matching against a URL query. +TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) { + BookmarkModel model(NULL); + const BookmarkNode* node1 = model.AddURL(model.other_node(), + 0, + ASCIIToUTF16("Google"), + GURL("https://www.google.com/")); + model.AddURL(model.other_node(), + 0, + ASCIIToUTF16("Google Calendar"), + GURL("https://www.google.com/calendar")); + + model.AddFolder(model.other_node(), + 0, + ASCIIToUTF16("Folder")); + + std::vector<const BookmarkNode*> nodes; + QueryFields query; + query.url.reset(new string16); + *query.url = ASCIIToUTF16("https://www.google.com/"); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(1U, nodes.size()); + EXPECT_TRUE(nodes[0] == node1); + nodes.clear(); + + *query.url = ASCIIToUTF16("calendar"); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(0U, nodes.size()); + nodes.clear(); + + // Empty URL should not match folders. + *query.url = ASCIIToUTF16(""); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(0U, nodes.size()); + nodes.clear(); +} + +// Check exact matching against a title query. +TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) { + BookmarkModel model(NULL); + const BookmarkNode* node1 = model.AddURL(model.other_node(), + 0, + ASCIIToUTF16("Google"), + GURL("https://www.google.com/")); + model.AddURL(model.other_node(), + 0, + ASCIIToUTF16("Google Calendar"), + GURL("https://www.google.com/calendar")); + + const BookmarkNode* folder1 = model.AddFolder(model.other_node(), + 0, + ASCIIToUTF16("Folder")); + + std::vector<const BookmarkNode*> nodes; + QueryFields query; + query.title.reset(new string16); + *query.title = ASCIIToUTF16("Google"); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(1U, nodes.size()); + EXPECT_TRUE(nodes[0] == node1); + nodes.clear(); + + *query.title = ASCIIToUTF16("Calendar"); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(0U, nodes.size()); + nodes.clear(); + + // Title should match folders. + *query.title = ASCIIToUTF16("Folder"); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(1U, nodes.size()); + EXPECT_TRUE(nodes[0] == folder1); + nodes.clear(); +} + +// Check matching against a query with multiple predicates. +TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) { + BookmarkModel model(NULL); + const BookmarkNode* node1 = model.AddURL(model.other_node(), + 0, + ASCIIToUTF16("Google"), + GURL("https://www.google.com/")); + model.AddURL(model.other_node(), + 0, + ASCIIToUTF16("Google Calendar"), + GURL("https://www.google.com/calendar")); + + model.AddFolder(model.other_node(), + 0, + ASCIIToUTF16("Folder")); + + std::vector<const BookmarkNode*> nodes; + QueryFields query; + + // Test all fields matching. + query.word_phrase_query.reset(new string16(ASCIIToUTF16("www"))); + query.url.reset(new string16(ASCIIToUTF16("https://www.google.com/"))); + query.title.reset(new string16(ASCIIToUTF16("Google"))); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(1U, nodes.size()); + EXPECT_TRUE(nodes[0] == node1); + nodes.clear(); + + scoped_ptr<string16>* fields[] = { + &query.word_phrase_query, &query.url, &query.title }; + + // Test two fields matching. + for (size_t i = 0; i < arraysize(fields); i++) { + scoped_ptr<string16> original_value(fields[i]->release()); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(1U, nodes.size()); + EXPECT_TRUE(nodes[0] == node1); + nodes.clear(); + fields[i]->reset(original_value.release()); + } + + // Test two fields matching with one non-matching field. + for (size_t i = 0; i < arraysize(fields); i++) { + scoped_ptr<string16> original_value(fields[i]->release()); + fields[i]->reset(new string16(ASCIIToUTF16("fjdkslafjkldsa"))); + GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); + ASSERT_EQ(0U, nodes.size()); + nodes.clear(); + fields[i]->reset(original_value.release()); + } +} + TEST_F(BookmarkUtilsTest, CopyPaste) { BookmarkModel model(NULL); const BookmarkNode* node = model.AddURL(model.other_node(), |