Index: ui/app_list/app_list_item_list_unittest.cc |
diff --git a/ui/app_list/app_list_item_list_unittest.cc b/ui/app_list/app_list_item_list_unittest.cc |
deleted file mode 100644 |
index dbdeed0b1146ea133fc995dec8b090d86a4c064b..0000000000000000000000000000000000000000 |
--- a/ui/app_list/app_list_item_list_unittest.cc |
+++ /dev/null |
@@ -1,368 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "ui/app_list/app_list_item_list.h" |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "base/strings/stringprintf.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "ui/app_list/app_list_folder_item.h" |
-#include "ui/app_list/app_list_item.h" |
-#include "ui/app_list/app_list_item_list_observer.h" |
- |
-namespace app_list { |
- |
-namespace { |
- |
-class TestObserver : public AppListItemListObserver { |
- public: |
- TestObserver() : items_added_(0), items_removed_(0), items_moved_(0) {} |
- |
- ~TestObserver() override {} |
- |
- // AppListItemListObserver overriden: |
- void OnListItemAdded(size_t index, AppListItem* item) override { |
- ++items_added_; |
- } |
- |
- void OnListItemRemoved(size_t index, AppListItem* item) override { |
- ++items_removed_; |
- } |
- |
- void OnListItemMoved(size_t from_index, |
- size_t to_index, |
- AppListItem* item) override { |
- ++items_moved_; |
- } |
- |
- size_t items_added() const { return items_added_; } |
- size_t items_removed() const { return items_removed_; } |
- size_t items_moved() const { return items_moved_; } |
- |
- void ResetCounts() { |
- items_added_ = 0; |
- items_removed_ = 0; |
- items_moved_ = 0; |
- } |
- |
- private: |
- size_t items_added_; |
- size_t items_removed_; |
- size_t items_moved_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestObserver); |
-}; |
- |
-std::string GetItemId(int id) { |
- return base::StringPrintf("Item %d", id); |
-} |
- |
-} // namespace |
- |
-class AppListItemListTest : public testing::Test { |
- public: |
- AppListItemListTest() {} |
- virtual ~AppListItemListTest() {} |
- |
- // testing::Test overrides: |
- virtual void SetUp() override { |
- item_list_.AddObserver(&observer_); |
- } |
- |
- virtual void TearDown() override { |
- item_list_.RemoveObserver(&observer_); |
- } |
- |
- protected: |
- AppListItem* FindItem(const std::string& id) { |
- return item_list_.FindItem(id); |
- } |
- |
- bool FindItemIndex(const std::string& id, size_t* index) { |
- return item_list_.FindItemIndex(id, index); |
- } |
- |
- scoped_ptr<AppListItem> CreateItem(const std::string& name) { |
- scoped_ptr<AppListItem> item(new AppListItem(name)); |
- size_t nitems = item_list_.item_count(); |
- syncer::StringOrdinal position; |
- if (nitems == 0) |
- position = syncer::StringOrdinal::CreateInitialOrdinal(); |
- else |
- position = item_list_.item_at(nitems - 1)->position().CreateAfter(); |
- item->set_position(position); |
- return item.Pass(); |
- } |
- |
- AppListItem* CreateAndAddItem(const std::string& name) { |
- scoped_ptr<AppListItem> item(CreateItem(name)); |
- return item_list_.AddItem(item.Pass()); |
- } |
- |
- scoped_ptr<AppListItem> RemoveItem(const std::string& id) { |
- return item_list_.RemoveItem(id); |
- } |
- |
- scoped_ptr<AppListItem> RemoveItemAt(size_t index) { |
- return item_list_.RemoveItemAt(index); |
- } |
- |
- syncer::StringOrdinal CreatePositionBefore( |
- const syncer::StringOrdinal& position) { |
- return item_list_.CreatePositionBefore(position); |
- } |
- |
- bool VerifyItemListOrdinals() { |
- bool res = true; |
- for (size_t i = 1; i < item_list_.item_count(); ++i) { |
- res &= (item_list_.item_at(i - 1)->position().LessThan( |
- item_list_.item_at(i)->position())); |
- } |
- if (!res) |
- PrintItems(); |
- return res; |
- } |
- |
- bool VerifyItemOrder4(size_t a, size_t b, size_t c, size_t d) { |
- if ((GetItemId(a) == item_list_.item_at(0)->id()) && |
- (GetItemId(b) == item_list_.item_at(1)->id()) && |
- (GetItemId(c) == item_list_.item_at(2)->id()) && |
- (GetItemId(d) == item_list_.item_at(3)->id())) |
- return true; |
- PrintItems(); |
- return false; |
- } |
- |
- void PrintItems() { |
- VLOG(1) << "ITEMS:"; |
- for (size_t i = 0; i < item_list_.item_count(); ++i) |
- VLOG(1) << " " << item_list_.item_at(i)->ToDebugString(); |
- } |
- |
- AppListItemList item_list_; |
- TestObserver observer_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(AppListItemListTest); |
-}; |
- |
-TEST_F(AppListItemListTest, FindItemIndex) { |
- AppListItem* item_0 = CreateAndAddItem(GetItemId(0)); |
- AppListItem* item_1 = CreateAndAddItem(GetItemId(1)); |
- AppListItem* item_2 = CreateAndAddItem(GetItemId(2)); |
- EXPECT_EQ(observer_.items_added(), 3u); |
- EXPECT_EQ(item_list_.item_count(), 3u); |
- EXPECT_EQ(item_0, item_list_.item_at(0)); |
- EXPECT_EQ(item_1, item_list_.item_at(1)); |
- EXPECT_EQ(item_2, item_list_.item_at(2)); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- |
- size_t index; |
- EXPECT_TRUE(FindItemIndex(item_0->id(), &index)); |
- EXPECT_EQ(index, 0u); |
- EXPECT_TRUE(FindItemIndex(item_1->id(), &index)); |
- EXPECT_EQ(index, 1u); |
- EXPECT_TRUE(FindItemIndex(item_2->id(), &index)); |
- EXPECT_EQ(index, 2u); |
- |
- scoped_ptr<AppListItem> item_3(CreateItem(GetItemId(3))); |
- EXPECT_FALSE(FindItemIndex(item_3->id(), &index)); |
-} |
- |
-TEST_F(AppListItemListTest, RemoveItemAt) { |
- AppListItem* item_0 = CreateAndAddItem(GetItemId(0)); |
- AppListItem* item_1 = CreateAndAddItem(GetItemId(1)); |
- AppListItem* item_2 = CreateAndAddItem(GetItemId(2)); |
- EXPECT_EQ(item_list_.item_count(), 3u); |
- EXPECT_EQ(observer_.items_added(), 3u); |
- size_t index; |
- EXPECT_TRUE(FindItemIndex(item_1->id(), &index)); |
- EXPECT_EQ(index, 1u); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- |
- scoped_ptr<AppListItem> item_removed = RemoveItemAt(1); |
- EXPECT_EQ(item_removed, item_1); |
- EXPECT_FALSE(FindItem(item_1->id())); |
- EXPECT_EQ(item_list_.item_count(), 2u); |
- EXPECT_EQ(observer_.items_removed(), 1u); |
- EXPECT_EQ(item_list_.item_at(0), item_0); |
- EXPECT_EQ(item_list_.item_at(1), item_2); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
-} |
- |
-TEST_F(AppListItemListTest, RemoveItem) { |
- AppListItem* item_0 = CreateAndAddItem(GetItemId(0)); |
- AppListItem* item_1 = CreateAndAddItem(GetItemId(1)); |
- AppListItem* item_2 = CreateAndAddItem(GetItemId(2)); |
- EXPECT_EQ(item_list_.item_count(), 3u); |
- EXPECT_EQ(observer_.items_added(), 3u); |
- EXPECT_EQ(item_0, item_list_.item_at(0)); |
- EXPECT_EQ(item_1, item_list_.item_at(1)); |
- EXPECT_EQ(item_2, item_list_.item_at(2)); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- |
- size_t index; |
- EXPECT_TRUE(FindItemIndex(item_1->id(), &index)); |
- EXPECT_EQ(index, 1u); |
- |
- scoped_ptr<AppListItem> item_removed = RemoveItem(item_1->id()); |
- EXPECT_EQ(item_removed, item_1); |
- EXPECT_FALSE(FindItem(item_1->id())); |
- EXPECT_EQ(item_list_.item_count(), 2u); |
- EXPECT_EQ(observer_.items_removed(), 1u); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
-} |
- |
-TEST_F(AppListItemListTest, MoveItem) { |
- CreateAndAddItem(GetItemId(0)); |
- CreateAndAddItem(GetItemId(1)); |
- CreateAndAddItem(GetItemId(2)); |
- CreateAndAddItem(GetItemId(3)); |
- |
- EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3)); |
- |
- item_list_.MoveItem(0, 0); |
- EXPECT_EQ(0u, observer_.items_moved()); |
- EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3)); |
- |
- item_list_.MoveItem(0, 1); |
- EXPECT_EQ(1u, observer_.items_moved()); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(1, 0, 2, 3)); |
- |
- item_list_.MoveItem(1, 2); |
- EXPECT_EQ(2u, observer_.items_moved()); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(1, 2, 0, 3)); |
- |
- item_list_.MoveItem(2, 1); |
- EXPECT_EQ(3u, observer_.items_moved()); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(1, 0, 2, 3)); |
- |
- item_list_.MoveItem(3, 0); |
- EXPECT_EQ(4u, observer_.items_moved()); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(3, 1, 0, 2)); |
- |
- item_list_.MoveItem(0, 3); |
- EXPECT_EQ(5u, observer_.items_moved()); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(1, 0, 2, 3)); |
-} |
- |
-TEST_F(AppListItemListTest, SamePosition) { |
- CreateAndAddItem(GetItemId(0)); |
- CreateAndAddItem(GetItemId(1)); |
- CreateAndAddItem(GetItemId(2)); |
- CreateAndAddItem(GetItemId(3)); |
- item_list_.SetItemPosition(item_list_.item_at(2), |
- item_list_.item_at(1)->position()); |
- EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3)); |
- EXPECT_TRUE(item_list_.item_at(1)->position().Equals( |
- item_list_.item_at(2)->position())); |
- // Moving an item to position 1 should fix the position. |
- observer_.ResetCounts(); |
- item_list_.MoveItem(0, 1); |
- EXPECT_TRUE(VerifyItemOrder4(1, 0, 2, 3)); |
- EXPECT_TRUE(item_list_.item_at(0)->position().LessThan( |
- item_list_.item_at(1)->position())); |
- EXPECT_TRUE(item_list_.item_at(1)->position().LessThan( |
- item_list_.item_at(2)->position())); |
- EXPECT_TRUE(item_list_.item_at(2)->position().LessThan( |
- item_list_.item_at(3)->position())); |
- // One extra move notification for fixed position. |
- EXPECT_EQ(2u, observer_.items_moved()); |
- |
- // Restore the original order. |
- item_list_.MoveItem(1, 0); |
- EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3)); |
- |
- // Set all four items to the same position. |
- item_list_.SetItemPosition(item_list_.item_at(1), |
- item_list_.item_at(0)->position()); |
- item_list_.SetItemPosition(item_list_.item_at(2), |
- item_list_.item_at(0)->position()); |
- item_list_.SetItemPosition(item_list_.item_at(3), |
- item_list_.item_at(0)->position()); |
- // Move should fix the position of the items. |
- observer_.ResetCounts(); |
- item_list_.MoveItem(0, 1); |
- EXPECT_TRUE(VerifyItemOrder4(1, 0, 2, 3)); |
- EXPECT_TRUE(item_list_.item_at(0)->position().LessThan( |
- item_list_.item_at(1)->position())); |
- EXPECT_TRUE(item_list_.item_at(1)->position().LessThan( |
- item_list_.item_at(2)->position())); |
- EXPECT_TRUE(item_list_.item_at(2)->position().LessThan( |
- item_list_.item_at(3)->position())); |
- // One extra move notification for fixed position. |
- EXPECT_EQ(2u, observer_.items_moved()); |
-} |
- |
-TEST_F(AppListItemListTest, CreatePositionBefore) { |
- CreateAndAddItem(GetItemId(0)); |
- syncer::StringOrdinal position0 = item_list_.item_at(0)->position(); |
- syncer::StringOrdinal new_position; |
- new_position = CreatePositionBefore(position0.CreateBefore()); |
- EXPECT_TRUE(new_position.LessThan(position0)); |
- new_position = CreatePositionBefore(position0); |
- EXPECT_TRUE(new_position.LessThan(position0)); |
- new_position = CreatePositionBefore(position0.CreateAfter()); |
- EXPECT_TRUE(new_position.GreaterThan(position0)); |
- |
- CreateAndAddItem(GetItemId(1)); |
- syncer::StringOrdinal position1 = item_list_.item_at(1)->position(); |
- EXPECT_TRUE(position1.GreaterThan(position0)); |
- new_position = CreatePositionBefore(position1); |
- EXPECT_TRUE(new_position.GreaterThan(position0)); |
- EXPECT_TRUE(new_position.LessThan(position1)); |
- |
- // Invalid ordinal should return a position at the end of the list. |
- new_position = CreatePositionBefore(syncer::StringOrdinal()); |
- EXPECT_TRUE(new_position.GreaterThan(position1)); |
-} |
- |
-TEST_F(AppListItemListTest, SetItemPosition) { |
- CreateAndAddItem(GetItemId(0)); |
- CreateAndAddItem(GetItemId(1)); |
- CreateAndAddItem(GetItemId(2)); |
- CreateAndAddItem(GetItemId(3)); |
- EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3)); |
- |
- // No change to position. |
- item_list_.SetItemPosition(item_list_.item_at(0), |
- item_list_.item_at(0)->position()); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3)); |
- // No order change. |
- item_list_.SetItemPosition(item_list_.item_at(0), |
- item_list_.item_at(0)->position().CreateBetween( |
- item_list_.item_at(1)->position())); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3)); |
- // 0 -> 1 |
- item_list_.SetItemPosition(item_list_.item_at(0), |
- item_list_.item_at(1)->position().CreateBetween( |
- item_list_.item_at(2)->position())); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(1, 0, 2, 3)); |
- // 1 -> 2 |
- item_list_.SetItemPosition(item_list_.item_at(1), |
- item_list_.item_at(2)->position().CreateBetween( |
- item_list_.item_at(3)->position())); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(1, 2, 0, 3)); |
- // 0 -> last |
- item_list_.SetItemPosition(item_list_.item_at(0), |
- item_list_.item_at(3)->position().CreateAfter()); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(2, 0, 3, 1)); |
- // last -> last |
- item_list_.SetItemPosition(item_list_.item_at(3), |
- item_list_.item_at(3)->position().CreateAfter()); |
- EXPECT_TRUE(VerifyItemListOrdinals()); |
- EXPECT_TRUE(VerifyItemOrder4(2, 0, 3, 1)); |
-} |
- |
-} // namespace app_list |