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