189fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu/* 289fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * Copyright (C) 2015 The Android Open Source Project 389fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * 489fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * Licensed under the Apache License, Version 2.0 (the "License"); 589fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * you may not use this file except in compliance with the License. 689fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * You may obtain a copy of the License at 789fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * 889fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * http://www.apache.org/licenses/LICENSE-2.0 989fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * 1089fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * Unless required by applicable law or agreed to in writing, software 1189fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * distributed under the License is distributed on an "AS IS" BASIS, 1289fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1389fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * See the License for the specific language governing permissions and 1489fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * limitations under the License. 1589fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu */ 1689fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gupackage android.support.v17.leanback.widget; 1789fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 1889fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu/** 1989fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * Testing StaggeredGridDefault algorithm 2089fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu * @hide 2189fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu */ 2289fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gupublic class StaggeredGridDefaultTest extends GridTest { 2389fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 2489fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu StaggeredGridDefault mStaggeredGrid; 2589fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 2689fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu public void testWhenToFillNextRow() throws Throwable { 2789fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mProvider = new Provider(new int[]{100, 100, 100, 100, 40, 100, 100, 30, 100}); 2889fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 2989fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu // layout first 8 items then all items 3089fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid = new StaggeredGridDefault(); 3189fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.setNumRows(3); 3289fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.setMargin(20); 3389fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.setProvider(mProvider); 3489fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.appendVisibleItems(210); 3589fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu assertEquals(dump(mStaggeredGrid) + " Should fill 8 items", 3689fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 8, mStaggeredGrid.mLocations.size()); 3789fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu // 2nd fill rest 3889fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.appendVisibleItems(100000); 3989fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu assertEquals(dump(mStaggeredGrid) + " Should fill 9 items", 4089fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 9, mStaggeredGrid.mLocations.size()); 4189fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu int row_result1 = mStaggeredGrid.getLocation(8).row; 4289fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu assertEquals(dump(mStaggeredGrid) + " last item should be placed on row 1", 4389fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 1, row_result1); 4489fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 4589fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu // layout all items together 4689fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid = new StaggeredGridDefault(); 4789fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.setNumRows(3); 4889fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.setMargin(20); 4989fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.setProvider(mProvider); 5089fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu mStaggeredGrid.appendVisibleItems(100000); 5189fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu assertEquals(dump(mStaggeredGrid) + " should fill 9 items", 5289fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 9, mStaggeredGrid.mLocations.size()); 5389fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu int row_result2 = mStaggeredGrid.getLocation(8).row; 5489fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 5589fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu assertEquals(dump(mStaggeredGrid) + " last item should be placed on row 1", 5689fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu 1, row_result2); 5789fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu } 5889fac6fa5d32123cc79d1d4127a4a7bcf86c498aDake Gu} 59