summaryrefslogtreecommitdiffstats
path: root/chrome/browser/bookmarks/bookmark_utils_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/bookmarks/bookmark_utils_unittest.cc')
-rw-r--r--chrome/browser/bookmarks/bookmark_utils_unittest.cc143
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(),