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

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

Issue 600393002: AppListModel / AppsGridView: Better error handling for corner cases. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@appsgridview-static-casts
Patch Set: Created 6 years, 2 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
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_model.h" 5 #include "ui/app_list/app_list_model.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 folder, folder->item_list()->item_at(num_observed_apps))); 285 folder, folder->item_list()->item_at(num_observed_apps)));
286 } 286 }
287 287
288 TEST_F(AppListModelFolderTest, MergeItems) { 288 TEST_F(AppListModelFolderTest, MergeItems) {
289 model_.PopulateApps(3); 289 model_.PopulateApps(3);
290 ASSERT_EQ(3u, model_.top_level_item_list()->item_count()); 290 ASSERT_EQ(3u, model_.top_level_item_list()->item_count());
291 AppListItem* item0 = model_.top_level_item_list()->item_at(0); 291 AppListItem* item0 = model_.top_level_item_list()->item_at(0);
292 AppListItem* item1 = model_.top_level_item_list()->item_at(1); 292 AppListItem* item1 = model_.top_level_item_list()->item_at(1);
293 AppListItem* item2 = model_.top_level_item_list()->item_at(2); 293 AppListItem* item2 = model_.top_level_item_list()->item_at(2);
294 294
295 // Merge an item onto a non-existent target.
296 EXPECT_EQ(std::string(), model_.MergeItems("nonexistent", item0->id()));
297 ASSERT_EQ(3u, model_.top_level_item_list()->item_count());
298
299 // Merge a non-existent item onto a target.
300 EXPECT_EQ(std::string(), model_.MergeItems(item0->id(), "nonexistent"));
301 ASSERT_EQ(3u, model_.top_level_item_list()->item_count());
302
303 // Merge an item onto itself (should have no effect). This should not be
304 // possible, but there have been bugs in the past that made it possible (see
305 // http://crbug.com/415530), so it should be handled correctly.
306 EXPECT_EQ(std::string(), model_.MergeItems(item0->id(), item0->id()));
307 ASSERT_EQ(3u, model_.top_level_item_list()->item_count());
308
295 // Merge two items. 309 // Merge two items.
296 std::string folder1_id = model_.MergeItems(item0->id(), item1->id()); 310 std::string folder1_id = model_.MergeItems(item0->id(), item1->id());
297 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // Folder + 1 item 311 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // Folder + 1 item
298 AppListFolderItem* folder1_item = model_.FindFolderItem(folder1_id); 312 AppListFolderItem* folder1_item = model_.FindFolderItem(folder1_id);
299 ASSERT_TRUE(folder1_item); 313 ASSERT_TRUE(folder1_item);
300 EXPECT_EQ("Item 0,Item 1", GetItemListContents(folder1_item->item_list())); 314 EXPECT_EQ("Item 0,Item 1", GetItemListContents(folder1_item->item_list()));
301 315
316 // Merge an item onto an item that is already in a folder (should have no
317 // effect). This should not be possible, but it should be handled correctly
318 // if it does happen.
319 EXPECT_EQ(std::string(), model_.MergeItems(item1->id(), item2->id()));
320 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // Folder + 1 item
321 EXPECT_EQ("Item 0,Item 1", GetItemListContents(folder1_item->item_list()));
322
302 // Merge an item from the new folder into the third item. 323 // Merge an item from the new folder into the third item.
303 std::string folder2_id = model_.MergeItems(item2->id(), item1->id()); 324 std::string folder2_id = model_.MergeItems(item2->id(), item1->id());
304 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // 2 folders 325 ASSERT_EQ(2u, model_.top_level_item_list()->item_count()); // 2 folders
305 AppListFolderItem* folder2_item = model_.FindFolderItem(folder2_id); 326 AppListFolderItem* folder2_item = model_.FindFolderItem(folder2_id);
306 EXPECT_EQ("Item 0", GetItemListContents(folder1_item->item_list())); 327 EXPECT_EQ("Item 0", GetItemListContents(folder1_item->item_list()));
307 EXPECT_EQ("Item 2,Item 1", GetItemListContents(folder2_item->item_list())); 328 EXPECT_EQ("Item 2,Item 1", GetItemListContents(folder2_item->item_list()));
308 329
309 // Merge the remaining item to the new folder, ensure it is added to the end. 330 // Merge the remaining item to the new folder, ensure it is added to the end.
310 std::string folder_id = model_.MergeItems(folder2_id, item0->id()); 331 std::string folder_id = model_.MergeItems(folder2_id, item0->id());
311 EXPECT_EQ(folder2_id, folder_id); 332 EXPECT_EQ(folder2_id, folder_id);
312 EXPECT_EQ("Item 2,Item 1,Item 0", 333 EXPECT_EQ("Item 2,Item 1,Item 0",
313 GetItemListContents(folder2_item->item_list())); 334 GetItemListContents(folder2_item->item_list()));
314 335
315 // The empty folder should be deleted. 336 // The empty folder should be deleted.
316 folder1_item = model_.FindFolderItem(folder1_id); 337 folder1_item = model_.FindFolderItem(folder1_id);
317 EXPECT_FALSE(folder1_item); 338 EXPECT_FALSE(folder1_item);
339 EXPECT_EQ(1u, model_.top_level_item_list()->item_count()); // 1 folder
318 } 340 }
319 341
320 TEST_F(AppListModelFolderTest, AddItemToFolder) { 342 TEST_F(AppListModelFolderTest, AddItemToFolder) {
321 AppListFolderItem* folder = 343 AppListFolderItem* folder =
322 new AppListFolderItem("folder1", AppListFolderItem::FOLDER_TYPE_NORMAL); 344 new AppListFolderItem("folder1", AppListFolderItem::FOLDER_TYPE_NORMAL);
323 model_.AddItem(folder); 345 model_.AddItem(folder);
324 AppListItem* item0 = new AppListItem("Item 0"); 346 AppListItem* item0 = new AppListItem("Item 0");
325 model_.AddItemToFolder(item0, folder->id()); 347 model_.AddItemToFolder(item0, folder->id());
326 ASSERT_EQ(1u, model_.top_level_item_list()->item_count()); 348 ASSERT_EQ(1u, model_.top_level_item_list()->item_count());
327 AppListFolderItem* folder_item = model_.FindFolderItem(folder->id()); 349 AppListFolderItem* folder_item = model_.FindFolderItem(folder->id());
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 model_.SetFoldersEnabled(false); 515 model_.SetFoldersEnabled(false);
494 ASSERT_FALSE(model_.FindFolderItem(folder_id)); 516 ASSERT_FALSE(model_.FindFolderItem(folder_id));
495 ASSERT_TRUE(model_.FindFolderItem(oem_folder_id)); 517 ASSERT_TRUE(model_.FindFolderItem(oem_folder_id));
496 EXPECT_EQ("Item 0,Item 1,oem_folder", GetModelContents()); 518 EXPECT_EQ("Item 0,Item 1,oem_folder", GetModelContents());
497 519
498 // Ensure folder creation fails. 520 // Ensure folder creation fails.
499 EXPECT_EQ(std::string(), model_.MergeItems(item0->id(), item1->id())); 521 EXPECT_EQ(std::string(), model_.MergeItems(item0->id(), item1->id()));
500 } 522 }
501 523
502 } // namespace app_list 524 } // namespace app_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698