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

Unified Diff: ios/chrome/browser/ui/collection_view/collection_view_controller_test.mm

Issue 2588713002: Upstream Chrome on iOS source code [4/11]. (Closed)
Patch Set: Created 4 years 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 side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/collection_view/collection_view_controller_test.mm
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller_test.mm b/ios/chrome/browser/ui/collection_view/collection_view_controller_test.mm
new file mode 100644
index 0000000000000000000000000000000000000000..33a4194c784e0e948881ba670cdb1d7de88a021f
--- /dev/null
+++ b/ios/chrome/browser/ui/collection_view/collection_view_controller_test.mm
@@ -0,0 +1,216 @@
+// Copyright 2016 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.
+
+#import "ios/chrome/browser/ui/collection_view/collection_view_controller_test.h"
+
+#include "base/ios/weak_nsobject.h"
+#include "base/logging.h"
+#import "base/mac/foundation_util.h"
+#include "base/mac/scoped_nsobject.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_detail_item.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_item.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_text_item.h"
+#import "ios/chrome/browser/ui/collection_view/collection_view_controller.h"
+#import "ios/chrome/browser/ui/collection_view/collection_view_model.h"
+
+#include "testing/gtest_mac.h"
+#include "ui/base/l10n/l10n_util.h"
+
+CollectionViewControllerTest::CollectionViewControllerTest() {}
+
+CollectionViewControllerTest::~CollectionViewControllerTest() {}
+
+void CollectionViewControllerTest::TearDown() {
+ // Delete the controller before deleting other test variables, such as a
+ // profile, to ensure things are cleaned up in the same order as in Chrome.
+ controller_.reset();
+ BlockCleanupTest::TearDown();
+}
+
+void CollectionViewControllerTest::CreateController() {
+ DCHECK(!controller_);
+ controller_.reset(NewController());
+ // Force the model to be loaded.
+ [controller_ loadModel];
+ // Force the collectionView to be built.
+ EXPECT_TRUE([controller_ view]);
+}
+
+CollectionViewController* CollectionViewControllerTest::controller() {
+ if (!controller_)
+ CreateController();
+ return controller_.get();
+}
+
+void CollectionViewControllerTest::ResetController() {
+ controller_.reset();
+}
+
+void CollectionViewControllerTest::CheckController() {
+ EXPECT_TRUE([controller_ view]);
+ EXPECT_TRUE([controller_ collectionView]);
+ EXPECT_TRUE([controller_ collectionViewModel]);
+ EXPECT_EQ(controller_.get(), [controller_ collectionView].dataSource);
+ EXPECT_EQ(controller_.get(), [controller_ collectionView].delegate);
+}
+
+int CollectionViewControllerTest::NumberOfSections() {
+ return [[controller_ collectionViewModel] numberOfSections];
+}
+
+int CollectionViewControllerTest::NumberOfItemsInSection(int section) {
+ return [[controller_ collectionViewModel] numberOfItemsInSection:section];
+}
+
+id CollectionViewControllerTest::GetCollectionViewItem(int section, int item) {
+ CollectionViewModel* model = [controller_ collectionViewModel];
+ NSIndexPath* index_path =
+ [NSIndexPath indexPathForItem:item inSection:section];
+ CollectionViewItem* collection_view_item =
+ [model hasItemAtIndexPath:index_path] ? [model itemAtIndexPath:index_path]
+ : nil;
+ EXPECT_TRUE(collection_view_item);
+ return collection_view_item;
+}
+
+void CollectionViewControllerTest::CheckTitle(NSString* expected_title) {
+ EXPECT_NSEQ(expected_title, [controller_ title]);
+}
+
+void CollectionViewControllerTest::CheckTitleWithId(int expected_title_id) {
+ CheckTitle(l10n_util::GetNSString(expected_title_id));
+}
+
+void CollectionViewControllerTest::CheckSectionHeader(NSString* expected_title,
+ int section) {
+ CollectionViewItem* header =
+ [[controller_ collectionViewModel] headerForSection:section];
+ ASSERT_TRUE([header respondsToSelector:@selector(text)]);
+ EXPECT_NSEQ(expected_title, [(id)header text]);
+}
+
+void CollectionViewControllerTest::CheckSectionHeaderWithId(
+ int expected_title_id,
+ int section) {
+ CheckSectionHeader(l10n_util::GetNSString(expected_title_id), section);
+}
+
+void CollectionViewControllerTest::CheckSectionFooter(NSString* expected_text,
+ int section) {
+ ASSERT_EQ(1, NumberOfItemsInSection(section));
+ CollectionViewFooterItem* footer_item =
+ base::mac::ObjCCastStrict<CollectionViewFooterItem>(
+ GetCollectionViewItem(section, 0));
+ EXPECT_NSEQ(expected_text, footer_item.text);
+}
+
+void CollectionViewControllerTest::CheckSectionFooterWithId(
+ int expected_text_id,
+ int section) {
+ return CheckSectionFooter(l10n_util::GetNSString(expected_text_id), section);
+}
+
+void CollectionViewControllerTest::CheckTextCellTitle(NSString* expected_title,
+ int section,
+ int item) {
+ CollectionViewTextItem* cell = GetCollectionViewItem(section, item);
+ EXPECT_NSEQ(expected_title, cell.text);
+ EXPECT_FALSE(cell.detailText);
+}
+
+void CollectionViewControllerTest::CheckTextCellTitleWithId(
+ int expected_title_id,
+ int section,
+ int item) {
+ CheckTextCellTitle(l10n_util::GetNSString(expected_title_id), section, item);
+}
+
+void CollectionViewControllerTest::CheckTextCellTitleAndSubtitle(
+ NSString* expected_title,
+ NSString* expected_subtitle,
+ int section,
+ int item) {
+ CollectionViewTextItem* cell = GetCollectionViewItem(section, item);
+ EXPECT_NSEQ(expected_title, cell.text);
+ EXPECT_NSEQ(expected_subtitle, cell.detailText);
+}
+
+void CollectionViewControllerTest::CheckDetailItemTextWithIds(
+ int expected_text_id,
+ int expected_detail_text_id,
+ int section_id,
+ int item_id) {
+ CollectionViewDetailItem* item = GetCollectionViewItem(section_id, item_id);
+ EXPECT_NSEQ(l10n_util::GetNSString(expected_text_id), item.text);
+ EXPECT_NSEQ(l10n_util::GetNSString(expected_detail_text_id), item.detailText);
+}
+
+void CollectionViewControllerTest::CheckSwitchCellStateAndTitle(
+ BOOL expected_state,
+ NSString* expected_title,
+ int section,
+ int item) {
+ CollectionViewSwitchItem* cell = GetCollectionViewItem(section, item);
+ EXPECT_NSEQ(expected_title, cell.text);
+ EXPECT_EQ(expected_state, cell.isOn);
+}
+
+void CollectionViewControllerTest::CheckSwitchCellStateAndTitleWithId(
+ BOOL expected_state,
+ int expected_title_id,
+ int section,
+ int item) {
+ CheckSwitchCellStateAndTitle(
+ expected_state, l10n_util::GetNSString(expected_title_id), section, item);
+}
+
+void CollectionViewControllerTest::CheckAccessoryType(
+ MDCCollectionViewCellAccessoryType accessory_type,
+ int section,
+ int item) {
+ id text_item = GetCollectionViewItem(section, item);
+ EXPECT_TRUE([text_item respondsToSelector:@selector(accessoryType)]);
+ EXPECT_EQ(accessory_type,
+ (MDCCollectionViewCellAccessoryType)[text_item accessoryType]);
+}
+
+void CollectionViewControllerTest::DeleteItem(
+ int section,
+ int item,
+ ProceduralBlock completion_block) {
+ NSIndexPath* index_path =
+ [NSIndexPath indexPathForItem:item inSection:section];
+ base::WeakNSObject<CollectionViewController> weak_controller(controller_);
+ void (^batch_updates)() = ^{
+ base::scoped_nsobject<CollectionViewController> strong_controller(
+ [weak_controller retain]);
+ if (!strong_controller)
+ return;
+ // Notify delegate to delete data.
+ [strong_controller collectionView:[strong_controller collectionView]
+ willDeleteItemsAtIndexPaths:@[ index_path ]];
+
+ // Delete index paths.
+ [[strong_controller collectionView]
+ deleteItemsAtIndexPaths:@[ index_path ]];
+ };
+
+ void (^completion)(BOOL finished) = ^(BOOL finished) {
+ // Notify delegate of deletion.
+ base::scoped_nsobject<CollectionViewController> strong_controller(
+ [weak_controller retain]);
+ if (!strong_controller)
+ return;
+ [strong_controller collectionView:[strong_controller collectionView]
+ didDeleteItemsAtIndexPaths:@[ index_path ]];
+ if (completion_block) {
+ completion_block();
+ }
+ };
+
+ [[controller_ collectionView] performBatchUpdates:batch_updates
+ completion:completion];
+}

Powered by Google App Engine
This is Rietveld 408576698