app_list_view_controller_unittest.mm revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
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 3// found in the LICENSE file. 4 5#include "base/memory/scoped_nsobject.h" 6#import "testing/gtest_mac.h" 7#import "ui/app_list/cocoa/app_list_view_controller.h" 8#import "ui/app_list/cocoa/apps_grid_controller.h" 9#import "ui/app_list/cocoa/test/apps_grid_controller_test_helper.h" 10#include "ui/app_list/test/app_list_test_model.h" 11#include "ui/app_list/test/app_list_test_view_delegate.h" 12 13namespace app_list { 14namespace test { 15 16class AppListViewControllerTest : public AppsGridControllerTestHelper { 17 public: 18 AppListViewControllerTest() {} 19 20 virtual void SetUp() OVERRIDE { 21 app_list_view_controller_.reset([[AppListViewController alloc] init]); 22 [app_list_view_controller_ setDelegate: 23 delegate_.PassAs<AppListViewDelegate>()]; 24 SetUpWithGridController([app_list_view_controller_ appsGridController]); 25 26 [[test_window() contentView] addSubview:[app_list_view_controller_ view]]; 27 } 28 29 virtual void TearDown() OVERRIDE { 30 app_list_view_controller_.reset(); 31 AppsGridControllerTestHelper::TearDown(); 32 } 33 34 protected: 35 scoped_nsobject<AppListViewController> app_list_view_controller_; 36 37 private: 38 DISALLOW_COPY_AND_ASSIGN(AppListViewControllerTest); 39}; 40 41TEST_VIEW(AppListViewControllerTest, [app_list_view_controller_ view]); 42 43// Test that adding and removing pages updates the pager. 44TEST_F(AppListViewControllerTest, PagerSegmentCounts) { 45 NSSegmentedControl* pager = [app_list_view_controller_ pagerControl]; 46 EXPECT_EQ(1, [pager segmentCount]); 47 48 ReplaceTestModel(kItemsPerPage * 2); 49 EXPECT_EQ(2, [pager segmentCount]); 50 model()->PopulateApps(1); 51 EXPECT_EQ(3, [pager segmentCount]); 52 53 ReplaceTestModel(1); 54 EXPECT_EQ(1, [pager segmentCount]); 55} 56 57// Test that clicking the pager changes pages. 58TEST_F(AppListViewControllerTest, PagerChangingPage) { 59 [AppsGridController setScrollAnimationDuration:0.0]; 60 NSSegmentedControl* pager = [app_list_view_controller_ pagerControl]; 61 ReplaceTestModel(kItemsPerPage * 3); 62 EXPECT_EQ(3, [pager segmentCount]); 63 64 EXPECT_EQ(0, [pager selectedSegment]); 65 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); 66 EXPECT_EQ(1.0, [apps_grid_controller_ visiblePortionOfPage:0]); 67 EXPECT_EQ(0.0, [apps_grid_controller_ visiblePortionOfPage:1]); 68 69 // Emulate a click on the second segment to navigate to the second page. 70 [pager setSelectedSegment:1]; 71 [[pager target] performSelector:[pager action] 72 withObject:pager]; 73 74 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); 75 EXPECT_EQ(1, [pager selectedSegment]); 76 EXPECT_EQ(0.0, [apps_grid_controller_ visiblePortionOfPage:0]); 77 EXPECT_EQ(1.0, [apps_grid_controller_ visiblePortionOfPage:1]); 78 79 // Replace with a single page model, and ensure we go back to the first page. 80 ReplaceTestModel(1); 81 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); 82 EXPECT_EQ(0, [pager selectedSegment]); 83 EXPECT_EQ(1, [pager segmentCount]); 84 EXPECT_EQ(1.0, [apps_grid_controller_ visiblePortionOfPage:0]); 85} 86 87} // namespace test 88} // namespace app_list 89