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 |