Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: ui/app_list/app_list_item_list_unittest.cc

Issue 148403007: Protect AppListItemList Add/Remove and fix sync bugs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ui/app_list/app_list_item_list.h" 5 #include "ui/app_list/app_list_item_list.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/app_list/app_list_folder_item.h" 10 #include "ui/app_list/app_list_folder_item.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 return item; 79 return item;
80 } 80 }
81 81
82 AppListItem* CreateAndAddItem(const std::string& title, 82 AppListItem* CreateAndAddItem(const std::string& title,
83 const std::string& full_name) { 83 const std::string& full_name) {
84 AppListItem* item = CreateItem(title, full_name); 84 AppListItem* item = CreateItem(title, full_name);
85 item_list_.AddItem(item); 85 item_list_.AddItem(item);
86 return item; 86 return item;
87 } 87 }
88 88
89 scoped_ptr<AppListItem> RemoveItem(const std::string& id) {
90 return item_list_.RemoveItem(id);
91 }
92
93 scoped_ptr<AppListItem> RemoveItemAt(size_t index) {
94 return item_list_.RemoveItemAt(index);
95 }
96
89 bool VerifyItemListOrdinals() { 97 bool VerifyItemListOrdinals() {
90 bool res = true; 98 bool res = true;
91 for (size_t i = 1; i < item_list_.item_count(); ++i) { 99 for (size_t i = 1; i < item_list_.item_count(); ++i) {
92 res &= (item_list_.item_at(i - 1)->position().LessThan( 100 res &= (item_list_.item_at(i - 1)->position().LessThan(
93 item_list_.item_at(i)->position())); 101 item_list_.item_at(i)->position()));
94 } 102 }
95 if (!res) 103 if (!res)
96 PrintItems(); 104 PrintItems();
97 return res; 105 return res;
98 } 106 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 AppListItem* item_0 = CreateAndAddItem(GetItemName(0), GetItemName(0)); 156 AppListItem* item_0 = CreateAndAddItem(GetItemName(0), GetItemName(0));
149 AppListItem* item_1 = CreateAndAddItem(GetItemName(1), GetItemName(1)); 157 AppListItem* item_1 = CreateAndAddItem(GetItemName(1), GetItemName(1));
150 AppListItem* item_2 = CreateAndAddItem(GetItemName(2), GetItemName(2)); 158 AppListItem* item_2 = CreateAndAddItem(GetItemName(2), GetItemName(2));
151 EXPECT_EQ(item_list_.item_count(), 3u); 159 EXPECT_EQ(item_list_.item_count(), 3u);
152 EXPECT_EQ(observer_.items_added(), 3u); 160 EXPECT_EQ(observer_.items_added(), 3u);
153 size_t index; 161 size_t index;
154 EXPECT_TRUE(item_list_.FindItemIndex(item_1->id(), &index)); 162 EXPECT_TRUE(item_list_.FindItemIndex(item_1->id(), &index));
155 EXPECT_EQ(index, 1u); 163 EXPECT_EQ(index, 1u);
156 EXPECT_TRUE(VerifyItemListOrdinals()); 164 EXPECT_TRUE(VerifyItemListOrdinals());
157 165
158 scoped_ptr<AppListItem> item_removed = item_list_.RemoveItemAt(1); 166 scoped_ptr<AppListItem> item_removed = RemoveItemAt(1);
159 EXPECT_EQ(item_removed, item_1); 167 EXPECT_EQ(item_removed, item_1);
160 EXPECT_FALSE(item_list_.FindItem(item_1->id())); 168 EXPECT_FALSE(item_list_.FindItem(item_1->id()));
161 EXPECT_EQ(item_list_.item_count(), 2u); 169 EXPECT_EQ(item_list_.item_count(), 2u);
162 EXPECT_EQ(observer_.items_removed(), 1u); 170 EXPECT_EQ(observer_.items_removed(), 1u);
163 EXPECT_EQ(item_list_.item_at(0), item_0); 171 EXPECT_EQ(item_list_.item_at(0), item_0);
164 EXPECT_EQ(item_list_.item_at(1), item_2); 172 EXPECT_EQ(item_list_.item_at(1), item_2);
165 EXPECT_TRUE(VerifyItemListOrdinals()); 173 EXPECT_TRUE(VerifyItemListOrdinals());
166 } 174 }
167 175
168 TEST_F(AppListItemListTest, RemoveItem) { 176 TEST_F(AppListItemListTest, RemoveItem) {
169 AppListItem* item_0 = CreateAndAddItem(GetItemName(0), GetItemName(0)); 177 AppListItem* item_0 = CreateAndAddItem(GetItemName(0), GetItemName(0));
170 AppListItem* item_1 = CreateAndAddItem(GetItemName(1), GetItemName(1)); 178 AppListItem* item_1 = CreateAndAddItem(GetItemName(1), GetItemName(1));
171 AppListItem* item_2 = CreateAndAddItem(GetItemName(2), GetItemName(2)); 179 AppListItem* item_2 = CreateAndAddItem(GetItemName(2), GetItemName(2));
172 EXPECT_EQ(item_list_.item_count(), 3u); 180 EXPECT_EQ(item_list_.item_count(), 3u);
173 EXPECT_EQ(observer_.items_added(), 3u); 181 EXPECT_EQ(observer_.items_added(), 3u);
174 EXPECT_EQ(item_0, item_list_.item_at(0)); 182 EXPECT_EQ(item_0, item_list_.item_at(0));
175 EXPECT_EQ(item_1, item_list_.item_at(1)); 183 EXPECT_EQ(item_1, item_list_.item_at(1));
176 EXPECT_EQ(item_2, item_list_.item_at(2)); 184 EXPECT_EQ(item_2, item_list_.item_at(2));
177 EXPECT_TRUE(VerifyItemListOrdinals()); 185 EXPECT_TRUE(VerifyItemListOrdinals());
178 186
179 size_t index; 187 size_t index;
180 EXPECT_TRUE(item_list_.FindItemIndex(item_1->id(), &index)); 188 EXPECT_TRUE(item_list_.FindItemIndex(item_1->id(), &index));
181 EXPECT_EQ(index, 1u); 189 EXPECT_EQ(index, 1u);
182 190
183 scoped_ptr<AppListItem> item_removed = 191 scoped_ptr<AppListItem> item_removed = RemoveItem(item_1->id());
184 item_list_.RemoveItem(item_1->id());
185 EXPECT_EQ(item_removed, item_1); 192 EXPECT_EQ(item_removed, item_1);
186 EXPECT_FALSE(item_list_.FindItem(item_1->id())); 193 EXPECT_FALSE(item_list_.FindItem(item_1->id()));
187 EXPECT_EQ(item_list_.item_count(), 2u); 194 EXPECT_EQ(item_list_.item_count(), 2u);
188 EXPECT_EQ(observer_.items_removed(), 1u); 195 EXPECT_EQ(observer_.items_removed(), 1u);
189 EXPECT_TRUE(VerifyItemListOrdinals()); 196 EXPECT_TRUE(VerifyItemListOrdinals());
190 197
191 scoped_ptr<AppListItem> not_found_item = item_list_.RemoveItem("Bogus"); 198 scoped_ptr<AppListItem> not_found_item = RemoveItem("Bogus");
192 EXPECT_FALSE(not_found_item.get()); 199 EXPECT_FALSE(not_found_item.get());
193 } 200 }
194 201
195 TEST_F(AppListItemListTest, InsertItemAt) {
196 AppListItem* item_0 = CreateAndAddItem(GetItemName(0), GetItemName(0));
197 AppListItem* item_1 = CreateAndAddItem(GetItemName(1), GetItemName(1));
198 EXPECT_EQ(item_list_.item_count(), 2u);
199 EXPECT_EQ(observer_.items_added(), 2u);
200 EXPECT_EQ(item_list_.item_at(0), item_0);
201 EXPECT_EQ(item_list_.item_at(1), item_1);
202 EXPECT_TRUE(VerifyItemListOrdinals());
203
204 // Insert an item at the beginning of the item_list_.
205 AppListItem* item_2 = CreateItem(GetItemName(2), GetItemName(2));
206 item_list_.InsertItemAt(item_2, 0);
207 EXPECT_EQ(item_list_.item_count(), 3u);
208 EXPECT_EQ(observer_.items_added(), 3u);
209 EXPECT_EQ(item_list_.item_at(0), item_2);
210 EXPECT_EQ(item_list_.item_at(1), item_0);
211 EXPECT_EQ(item_list_.item_at(2), item_1);
212 EXPECT_TRUE(VerifyItemListOrdinals());
213
214 // Insert an item at the end of the item_list_.
215 AppListItem* item_3 = CreateItem(GetItemName(3), GetItemName(3));
216 item_list_.InsertItemAt(item_3, item_list_.item_count());
217 EXPECT_EQ(item_list_.item_count(), 4u);
218 EXPECT_EQ(observer_.items_added(), 4u);
219 EXPECT_EQ(item_list_.item_at(0), item_2);
220 EXPECT_EQ(item_list_.item_at(1), item_0);
221 EXPECT_EQ(item_list_.item_at(2), item_1);
222 EXPECT_EQ(item_list_.item_at(3), item_3);
223 EXPECT_TRUE(VerifyItemListOrdinals());
224
225 // Insert an item at the 2nd item of the item_list_.
226 AppListItem* item_4 = CreateItem(GetItemName(4), GetItemName(4));
227 item_list_.InsertItemAt(item_4, 1);
228 EXPECT_EQ(item_list_.item_count(), 5u);
229 EXPECT_EQ(observer_.items_added(), 5u);
230 EXPECT_EQ(item_list_.item_at(0), item_2);
231 EXPECT_EQ(item_list_.item_at(1), item_4);
232 EXPECT_EQ(item_list_.item_at(2), item_0);
233 EXPECT_EQ(item_list_.item_at(3), item_1);
234 EXPECT_EQ(item_list_.item_at(4), item_3);
235 EXPECT_TRUE(VerifyItemListOrdinals());
236 }
237
238 TEST_F(AppListItemListTest, InsertItemAtEmptyList) {
239 AppListItem* item_0 = CreateItem(GetItemName(0), GetItemName(0));
240 EXPECT_EQ(item_list_.item_count(), 0u);
241 item_list_.InsertItemAt(item_0, 0);
242 EXPECT_EQ(item_list_.item_count(), 1u);
243 EXPECT_EQ(observer_.items_added(), 1u);
244 EXPECT_EQ(item_list_.item_at(0), item_0);
245 EXPECT_TRUE(VerifyItemListOrdinals());
246 }
247
248 TEST_F(AppListItemListTest, MoveItem) { 202 TEST_F(AppListItemListTest, MoveItem) {
249 CreateAndAddItem(GetItemName(0), GetItemName(0)); 203 CreateAndAddItem(GetItemName(0), GetItemName(0));
250 CreateAndAddItem(GetItemName(1), GetItemName(1)); 204 CreateAndAddItem(GetItemName(1), GetItemName(1));
251 CreateAndAddItem(GetItemName(2), GetItemName(2)); 205 CreateAndAddItem(GetItemName(2), GetItemName(2));
252 CreateAndAddItem(GetItemName(3), GetItemName(3)); 206 CreateAndAddItem(GetItemName(3), GetItemName(3));
253 EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3)); 207 EXPECT_TRUE(VerifyItemOrder4(0, 1, 2, 3));
254 208
255 item_list_.MoveItem(0, 1); 209 item_list_.MoveItem(0, 1);
256 EXPECT_TRUE(VerifyItemListOrdinals()); 210 EXPECT_TRUE(VerifyItemListOrdinals());
257 EXPECT_TRUE(VerifyItemOrder4(1, 0, 2, 3)); 211 EXPECT_TRUE(VerifyItemOrder4(1, 0, 2, 3));
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 EXPECT_TRUE(VerifyItemListOrdinals()); 263 EXPECT_TRUE(VerifyItemListOrdinals());
310 EXPECT_TRUE(VerifyItemOrder4(2, 0, 3, 1)); 264 EXPECT_TRUE(VerifyItemOrder4(2, 0, 3, 1));
311 // last -> last 265 // last -> last
312 item_list_.SetItemPosition(item_list_.item_at(3), 266 item_list_.SetItemPosition(item_list_.item_at(3),
313 item_list_.item_at(3)->position().CreateAfter()); 267 item_list_.item_at(3)->position().CreateAfter());
314 EXPECT_TRUE(VerifyItemListOrdinals()); 268 EXPECT_TRUE(VerifyItemListOrdinals());
315 EXPECT_TRUE(VerifyItemOrder4(2, 0, 3, 1)); 269 EXPECT_TRUE(VerifyItemOrder4(2, 0, 3, 1));
316 } 270 }
317 271
318 } // namespace app_list 272 } // namespace app_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698