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/ui/bookmarks/recently_used_folders_combo_model.h" 6 7 #include "base/memory/scoped_ptr.h" 8 #include "base/strings/utf_string_conversions.h" 9 #include "chrome/browser/bookmarks/bookmark_model.h" 10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 11 #include "chrome/test/base/testing_profile.h" 12 #include "chrome/test/base/ui_test_utils.h" 13 #include "content/public/test/test_browser_thread.h" 14 #include "testing/gtest/include/gtest/gtest.h" 15 16 using content::BrowserThread; 17 18 class RecentlyUsedFoldersComboModelTest : public testing::Test { 19 public: 20 RecentlyUsedFoldersComboModelTest(); 21 22 virtual void SetUp() OVERRIDE; 23 virtual void TearDown() OVERRIDE; 24 25 protected: 26 BookmarkModel* GetModel(); 27 28 private: 29 base::MessageLoopForUI message_loop_; 30 content::TestBrowserThread ui_thread_; 31 content::TestBrowserThread file_thread_; 32 scoped_ptr<TestingProfile> profile_; 33 34 DISALLOW_COPY_AND_ASSIGN(RecentlyUsedFoldersComboModelTest); 35 }; 36 37 RecentlyUsedFoldersComboModelTest::RecentlyUsedFoldersComboModelTest() 38 : ui_thread_(BrowserThread::UI, &message_loop_), 39 file_thread_(BrowserThread::FILE, &message_loop_) { 40 } 41 42 void RecentlyUsedFoldersComboModelTest::SetUp() { 43 profile_.reset(new TestingProfile()); 44 profile_->CreateBookmarkModel(true); 45 ui_test_utils::WaitForBookmarkModelToLoad(GetModel()); 46 } 47 48 void RecentlyUsedFoldersComboModelTest::TearDown() { 49 // Flush the message loop to make application verifiers happy. 50 message_loop_.RunUntilIdle(); 51 } 52 53 BookmarkModel* RecentlyUsedFoldersComboModelTest::GetModel() { 54 return BookmarkModelFactory::GetForProfile(profile_.get()); 55 } 56 57 // Verifies there are no duplicate nodes in the model. 58 TEST_F(RecentlyUsedFoldersComboModelTest, NoDups) { 59 const BookmarkNode* new_node = GetModel()->AddURL( 60 GetModel()->bookmark_bar_node(), 0, ASCIIToUTF16("a"), 61 GURL("http://a")); 62 RecentlyUsedFoldersComboModel model(GetModel(), new_node); 63 std::set<string16> items; 64 for (int i = 0; i < model.GetItemCount(); ++i) { 65 if (!model.IsItemSeparatorAt(i)) 66 EXPECT_EQ(0u, items.count(model.GetItemAt(i))); 67 } 68 } 69