Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <set> | 5 #include <set> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/base_paths.h" | 8 #include "base/base_paths.h" |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 34 #include "testing/gtest/include/gtest/gtest.h" | 34 #include "testing/gtest/include/gtest/gtest.h" |
| 35 #include "ui/base/models/tree_node_iterator.h" | 35 #include "ui/base/models/tree_node_iterator.h" |
| 36 #include "ui/base/models/tree_node_model.h" | 36 #include "ui/base/models/tree_node_model.h" |
| 37 | 37 |
| 38 using base::Time; | 38 using base::Time; |
| 39 using base::TimeDelta; | 39 using base::TimeDelta; |
| 40 using content::BrowserThread; | 40 using content::BrowserThread; |
| 41 | 41 |
| 42 namespace { | 42 namespace { |
| 43 | 43 |
| 44 // Test cases used to test the removal of extra whitespace when adding | |
| 45 // a new folder/bookmark or updating a title of a folder/bookmark. | |
| 46 struct { | |
| 47 const std::string input_title; | |
| 48 const std::string expected_title; | |
| 49 } test_cases[] = { | |
| 50 {"foobar", "foobar"}, | |
| 51 // Newlines. | |
| 52 {"foo\nbar", "foo bar"}, | |
| 53 {"foo\n\nbar", "foo bar"}, | |
| 54 {"foo\n\n\nbar", "foo bar"}, | |
| 55 {"foo\r\nbar", "foo bar"}, | |
| 56 {"foo\r\n\r\nbar", "foo bar"}, | |
| 57 {"\nfoo\nbar\n", "foo bar"}, | |
| 58 // Spaces. | |
| 59 {"foo bar", "foo bar"}, | |
| 60 {" foo bar ", "foo bar"}, | |
| 61 {" foo bar ", "foo bar"}, | |
| 62 // Tabs. | |
| 63 {"\tfoo\tbar\t", "foo bar"}, | |
| 64 {"\tfoo bar\t", "foo bar"}, | |
| 65 // Mixed cases. | |
| 66 {"\tfoo\nbar\t", "foo bar"}, | |
| 67 {"\tfoo\r\nbar\t", "foo bar"}, | |
| 68 {" foo\tbar\n", "foo bar"}, | |
| 69 {"\t foo \t bar \t", "foo bar"}, | |
| 70 {"\n foo\r\n\tbar\n \t", "foo bar"}, | |
| 71 }; | |
|
Ilya Sherman
2011/11/22 21:00:35
nit: Since you're declaring this outside of the te
| |
| 72 | |
| 44 // Helper to get a mutable bookmark node. | 73 // Helper to get a mutable bookmark node. |
| 45 BookmarkNode* AsMutable(const BookmarkNode* node) { | 74 BookmarkNode* AsMutable(const BookmarkNode* node) { |
| 46 return const_cast<BookmarkNode*>(node); | 75 return const_cast<BookmarkNode*>(node); |
| 47 } | 76 } |
| 48 | 77 |
| 49 void SwapDateAdded(BookmarkNode* n1, BookmarkNode* n2) { | 78 void SwapDateAdded(BookmarkNode* n1, BookmarkNode* n2) { |
| 50 Time tmp = n1->date_added(); | 79 Time tmp = n1->date_added(); |
| 51 n1->set_date_added(n2->date_added()); | 80 n1->set_date_added(n2->date_added()); |
| 52 n2->set_date_added(tmp); | 81 n2->set_date_added(tmp); |
| 53 } | 82 } |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 205 ASSERT_EQ(title, new_node->GetTitle()); | 234 ASSERT_EQ(title, new_node->GetTitle()); |
| 206 ASSERT_TRUE(url == new_node->url()); | 235 ASSERT_TRUE(url == new_node->url()); |
| 207 ASSERT_EQ(BookmarkNode::URL, new_node->type()); | 236 ASSERT_EQ(BookmarkNode::URL, new_node->type()); |
| 208 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); | 237 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); |
| 209 | 238 |
| 210 EXPECT_TRUE(new_node->id() != root->id() && | 239 EXPECT_TRUE(new_node->id() != root->id() && |
| 211 new_node->id() != model_.other_node()->id() && | 240 new_node->id() != model_.other_node()->id() && |
| 212 new_node->id() != model_.synced_node()->id()); | 241 new_node->id() != model_.synced_node()->id()); |
| 213 } | 242 } |
| 214 | 243 |
| 244 TEST_F(BookmarkModelTest, AddURLWithWhitespaceTitle) { | |
| 245 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { | |
| 246 const BookmarkNode* root = model_.bookmark_bar_node(); | |
| 247 const string16 title(ASCIIToUTF16(test_cases[i].input_title)); | |
| 248 const GURL url("http://foo.com"); | |
| 249 | |
| 250 const BookmarkNode* new_node = model_.AddURL(root, i, title, url); | |
| 251 | |
| 252 int size = i + 1; | |
| 253 EXPECT_EQ(size, root->child_count()); | |
| 254 EXPECT_EQ(ASCIIToUTF16(test_cases[i].expected_title), new_node->GetTitle()); | |
| 255 EXPECT_EQ(BookmarkNode::URL, new_node->type()); | |
| 256 } | |
| 257 } | |
| 258 | |
| 215 TEST_F(BookmarkModelTest, AddURLToSyncedBookmarks) { | 259 TEST_F(BookmarkModelTest, AddURLToSyncedBookmarks) { |
| 216 const BookmarkNode* root = model_.synced_node(); | 260 const BookmarkNode* root = model_.synced_node(); |
| 217 const string16 title(ASCIIToUTF16("foo")); | 261 const string16 title(ASCIIToUTF16("foo")); |
| 218 const GURL url("http://foo.com"); | 262 const GURL url("http://foo.com"); |
| 219 | 263 |
| 220 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); | 264 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); |
| 221 AssertObserverCount(1, 0, 0, 0, 0); | 265 AssertObserverCount(1, 0, 0, 0, 0); |
| 222 observer_details_.ExpectEquals(root, NULL, 0, -1); | 266 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 223 | 267 |
| 224 ASSERT_EQ(1, root->child_count()); | 268 ASSERT_EQ(1, root->child_count()); |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 248 new_node->id() != model_.other_node()->id() && | 292 new_node->id() != model_.other_node()->id() && |
| 249 new_node->id() != model_.synced_node()->id()); | 293 new_node->id() != model_.synced_node()->id()); |
| 250 | 294 |
| 251 // Add another folder, just to make sure folder_ids are incremented correctly. | 295 // Add another folder, just to make sure folder_ids are incremented correctly. |
| 252 ClearCounts(); | 296 ClearCounts(); |
| 253 model_.AddFolder(root, 0, title); | 297 model_.AddFolder(root, 0, title); |
| 254 AssertObserverCount(1, 0, 0, 0, 0); | 298 AssertObserverCount(1, 0, 0, 0, 0); |
| 255 observer_details_.ExpectEquals(root, NULL, 0, -1); | 299 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 256 } | 300 } |
| 257 | 301 |
| 302 TEST_F(BookmarkModelTest, AddFolderWithWhitespaceTitle) { | |
| 303 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { | |
| 304 const BookmarkNode* root = model_.bookmark_bar_node(); | |
| 305 const string16 title(ASCIIToUTF16(test_cases[i].input_title)); | |
| 306 | |
| 307 const BookmarkNode* new_node = model_.AddFolder(root, i, title); | |
| 308 | |
| 309 int size = i + 1; | |
| 310 EXPECT_EQ(size, root->child_count()); | |
| 311 EXPECT_EQ(ASCIIToUTF16(test_cases[i].expected_title), new_node->GetTitle()); | |
| 312 EXPECT_EQ(BookmarkNode::FOLDER, new_node->type()); | |
| 313 } | |
| 314 } | |
| 315 | |
| 258 TEST_F(BookmarkModelTest, RemoveURL) { | 316 TEST_F(BookmarkModelTest, RemoveURL) { |
| 259 const BookmarkNode* root = model_.bookmark_bar_node(); | 317 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 260 const string16 title(ASCIIToUTF16("foo")); | 318 const string16 title(ASCIIToUTF16("foo")); |
| 261 const GURL url("http://foo.com"); | 319 const GURL url("http://foo.com"); |
| 262 model_.AddURL(root, 0, title, url); | 320 model_.AddURL(root, 0, title, url); |
| 263 ClearCounts(); | 321 ClearCounts(); |
| 264 | 322 |
| 265 model_.Remove(root, 0); | 323 model_.Remove(root, 0); |
| 266 ASSERT_EQ(0, root->child_count()); | 324 ASSERT_EQ(0, root->child_count()); |
| 267 AssertObserverCount(0, 0, 1, 0, 0); | 325 AssertObserverCount(0, 0, 1, 0, 0); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 302 | 360 |
| 303 ClearCounts(); | 361 ClearCounts(); |
| 304 | 362 |
| 305 title = ASCIIToUTF16("foo2"); | 363 title = ASCIIToUTF16("foo2"); |
| 306 model_.SetTitle(node, title); | 364 model_.SetTitle(node, title); |
| 307 AssertObserverCount(0, 0, 0, 1, 0); | 365 AssertObserverCount(0, 0, 0, 1, 0); |
| 308 observer_details_.ExpectEquals(node, NULL, -1, -1); | 366 observer_details_.ExpectEquals(node, NULL, -1, -1); |
| 309 EXPECT_EQ(title, node->GetTitle()); | 367 EXPECT_EQ(title, node->GetTitle()); |
| 310 } | 368 } |
| 311 | 369 |
| 370 TEST_F(BookmarkModelTest, SetTitleWithWhitespace) { | |
| 371 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { | |
| 372 const BookmarkNode* root = model_.bookmark_bar_node(); | |
| 373 string16 title(ASCIIToUTF16("dummy")); | |
| 374 const GURL url("http://foo.com"); | |
| 375 const BookmarkNode* node = model_.AddURL(root, 0, title, url); | |
| 376 | |
| 377 title = ASCIIToUTF16(test_cases[i].input_title); | |
| 378 model_.SetTitle(node, title); | |
| 379 EXPECT_EQ(ASCIIToUTF16(test_cases[i].expected_title), node->GetTitle()); | |
| 380 } | |
| 381 } | |
| 382 | |
| 312 TEST_F(BookmarkModelTest, SetURL) { | 383 TEST_F(BookmarkModelTest, SetURL) { |
| 313 const BookmarkNode* root = model_.bookmark_bar_node(); | 384 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 314 const string16 title(ASCIIToUTF16("foo")); | 385 const string16 title(ASCIIToUTF16("foo")); |
| 315 GURL url("http://foo.com"); | 386 GURL url("http://foo.com"); |
| 316 const BookmarkNode* node = model_.AddURL(root, 0, title, url); | 387 const BookmarkNode* node = model_.AddURL(root, 0, title, url); |
| 317 | 388 |
| 318 ClearCounts(); | 389 ClearCounts(); |
| 319 | 390 |
| 320 url = GURL("http://foo2.com"); | 391 url = GURL("http://foo2.com"); |
| 321 model_.SetURL(node, url); | 392 model_.SetURL(node, url); |
| (...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1030 TEST_F(BookmarkModelTest, SyncNodeVisibileWithChildren) { | 1101 TEST_F(BookmarkModelTest, SyncNodeVisibileWithChildren) { |
| 1031 const BookmarkNode* root = model_.synced_node(); | 1102 const BookmarkNode* root = model_.synced_node(); |
| 1032 const string16 title(ASCIIToUTF16("foo")); | 1103 const string16 title(ASCIIToUTF16("foo")); |
| 1033 const GURL url("http://foo.com"); | 1104 const GURL url("http://foo.com"); |
| 1034 | 1105 |
| 1035 model_.AddURL(root, 0, title, url); | 1106 model_.AddURL(root, 0, title, url); |
| 1036 EXPECT_TRUE(model_.synced_node()->IsVisible()); | 1107 EXPECT_TRUE(model_.synced_node()->IsVisible()); |
| 1037 } | 1108 } |
| 1038 | 1109 |
| 1039 } // namespace | 1110 } // namespace |
| OLD | NEW |