111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan/*
211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * Copyright (C) 2016 The Android Open Source Project
311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan *
411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * Licensed under the Apache License, Version 2.0 (the "License");
511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * you may not use this file except in compliance with the License.
611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * You may obtain a copy of the License at
711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan *
811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan *      http://www.apache.org/licenses/LICENSE-2.0
911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan *
1011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * Unless required by applicable law or agreed to in writing, software
1111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * distributed under the License is distributed on an "AS IS" BASIS,
1211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * See the License for the specific language governing permissions and
1411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan * limitations under the License.
1511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan */
1611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
1711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanpackage com.android.documentsui.sorting;
1811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
1911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport static org.junit.Assert.assertEquals;
2011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport static org.junit.Assert.assertSame;
2111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport static org.junit.Assert.fail;
2211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
2311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport android.support.annotation.Nullable;
2411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport android.support.test.filters.SmallTest;
2511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport android.support.test.runner.AndroidJUnit4;
2611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport android.view.View;
2711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
2811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport com.android.documentsui.R;
2911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport com.android.documentsui.sorting.SortModel.UpdateListener;
3011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport com.android.documentsui.sorting.SortModel.UpdateType;
3161f564beacafc5edebbb4b05d098203816ff7f64Garfield, Tanimport com.android.documentsui.testing.Parcelables;
3211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
3311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport org.junit.Before;
3411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport org.junit.Test;
3511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport org.junit.runner.RunWith;
3611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
3711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanimport java.util.Arrays;
3811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
3911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan@RunWith(AndroidJUnit4.class)
4011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan@SmallTest
4111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tanpublic class SortModelTest {
4211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
4311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    private static final SortDimension DIMENSION_1 = new SortDimension.Builder()
4411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withId(1)
4511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withLabelId(R.string.sort_dimension_name)
4611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withDataType(SortDimension.DATA_TYPE_STRING)
4711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withSortCapability(SortDimension.SORT_CAPABILITY_BOTH_DIRECTION)
4811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withDefaultSortDirection(SortDimension.SORT_DIRECTION_ASCENDING)
4911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withVisibility(View.VISIBLE)
5011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .build();
5111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
5211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    private static final SortDimension DIMENSION_2 = new SortDimension.Builder()
5311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withId(2)
5411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withLabelId(R.string.sort_dimension_date)
5511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withSortCapability(SortDimension.SORT_CAPABILITY_BOTH_DIRECTION)
5611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withDefaultSortDirection(SortDimension.SORT_DIRECTION_DESCENDING)
5711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .build();
5811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
5911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    private static final SortDimension DIMENSION_3 = new SortDimension.Builder()
6011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withId(3)
6111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withLabelId(R.string.sort_dimension_size)
6211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withDataType(SortDimension.DATA_TYPE_NUMBER)
6311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .withSortCapability(SortDimension.SORT_CAPABILITY_NONE)
6411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            .build();
6511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
6611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    private static final SortDimension[] DIMENSIONS = new SortDimension[] {
6711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan                    DIMENSION_1,
6811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan                    DIMENSION_2,
6911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan                    DIMENSION_3
7011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            };
7111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
7211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    private static final DummyListener DUMMY_LISTENER = new DummyListener();
7311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
7411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    private SortModel mModel;
7511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
7611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Before
7711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void setUp() {
7811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel = new SortModel(Arrays.asList(DIMENSIONS));
7911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.addListener(DUMMY_LISTENER);
8011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
8111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
8211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
8311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testSizeEquals() {
8411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(DIMENSIONS.length, mModel.getSize());
8511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
8611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
8711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
8811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testDimensionSame_getDimensionAt() {
8911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        for (int i = 0; i < DIMENSIONS.length; ++i) {
9011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            assertSame(DIMENSIONS[i], mModel.getDimensionAt(i));
9111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        }
9211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
9311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
9411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
9511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testDimensionSame_getDimensionById() {
9611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        for (SortDimension dimension : DIMENSIONS) {
9711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            assertSame(dimension, mModel.getDimensionById(dimension.getId()));
9811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        }
9911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
10011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
10111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
10211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testSetDimensionVisibility() {
10311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(View.VISIBLE, DIMENSION_1.getVisibility());
10411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
10511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.setDimensionVisibility(DIMENSION_1.getId(), View.GONE);
10611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
10711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(View.GONE, DIMENSION_1.getVisibility());
10811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortModel.UPDATE_TYPE_VISIBILITY, DUMMY_LISTENER.mLastUpdateType);
10911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
11011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
11111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
11211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testNotSortedByDefault() {
11311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortModel.SORT_DIMENSION_ID_UNKNOWN, mModel.getSortedDimensionId());
11411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
11511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
11611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
11711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testSortByDefault() {
11811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.setDefaultDimension(DIMENSION_1.getId());
11911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
12011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        SortDimension sortedDimension = getSortedDimension();
12111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(DIMENSION_1, sortedDimension);
12211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(DIMENSION_1.getDefaultSortDirection(), sortedDimension.getSortDirection());
12311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
12411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(mModel, DUMMY_LISTENER.mLastSortModel);
12511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortModel.UPDATE_TYPE_SORTING, DUMMY_LISTENER.mLastUpdateType);
12611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
12711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
12811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
12911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testSortByUser() {
13011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.sortByUser(DIMENSION_1.getId(), SortDimension.SORT_DIRECTION_DESCENDING);
13111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
13211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        SortDimension sortedDimension = getSortedDimension();
13311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(DIMENSION_1, sortedDimension);
13411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortDimension.SORT_DIRECTION_DESCENDING, sortedDimension.getSortDirection());
13511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
13611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(mModel, DUMMY_LISTENER.mLastSortModel);
13711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortModel.UPDATE_TYPE_SORTING, DUMMY_LISTENER.mLastUpdateType);
13811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
13911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
14011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
14111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testOrderNotChanged_sortByDefaultAfterSortByUser() {
14211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.sortByUser(DIMENSION_1.getId(), SortDimension.SORT_DIRECTION_DESCENDING);
14311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.setDefaultDimension(DIMENSION_2.getId());
14411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
14511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        SortDimension sortedDimension = getSortedDimension();
14611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(DIMENSION_1, sortedDimension);
14711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortDimension.SORT_DIRECTION_DESCENDING, sortedDimension.getSortDirection());
14811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
14911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(mModel, DUMMY_LISTENER.mLastSortModel);
15011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortModel.UPDATE_TYPE_SORTING, DUMMY_LISTENER.mLastUpdateType);
15111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
15211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
15311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
15411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testOrderChanged_sortByUserAfterSortByDefault() {
15511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.setDefaultDimension(DIMENSION_2.getId());
15611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.sortByUser(DIMENSION_1.getId(), SortDimension.SORT_DIRECTION_DESCENDING);
15711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
15811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        SortDimension sortedDimension = getSortedDimension();
15911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(DIMENSION_1, sortedDimension);
16011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortDimension.SORT_DIRECTION_DESCENDING, sortedDimension.getSortDirection());
16111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
16211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(mModel, DUMMY_LISTENER.mLastSortModel);
16311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortModel.UPDATE_TYPE_SORTING, DUMMY_LISTENER.mLastUpdateType);
16411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
16511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
16611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
16711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testSortByUserTwice() {
16811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.sortByUser(DIMENSION_1.getId(), SortDimension.SORT_DIRECTION_DESCENDING);
16911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.sortByUser(DIMENSION_2.getId(), SortDimension.SORT_DIRECTION_ASCENDING);
17011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
17111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        SortDimension sortedDimension = getSortedDimension();
17211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(DIMENSION_2, sortedDimension);
17311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortDimension.SORT_DIRECTION_ASCENDING, sortedDimension.getSortDirection());
17411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
17511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortDimension.SORT_DIRECTION_NONE, DIMENSION_1.getSortDirection());
17611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
17711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
17811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
17911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testSortByUserTwice_sameDimension() {
18011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.sortByUser(DIMENSION_1.getId(), SortDimension.SORT_DIRECTION_DESCENDING);
18111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.sortByUser(DIMENSION_1.getId(), SortDimension.SORT_DIRECTION_ASCENDING);
18211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
18311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        SortDimension sortedDimension = getSortedDimension();
18411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertSame(DIMENSION_1, sortedDimension);
18511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        assertEquals(SortDimension.SORT_DIRECTION_ASCENDING, sortedDimension.getSortDirection());
18611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
18711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
18811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
18911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testSetDefaultDimension_noSortingCapability() {
19011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        try {
19111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            mModel.setDefaultDimension(DIMENSION_3.getId());
19211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            fail("Expect exception but not raised.");
19311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        } catch(IllegalStateException expected) {
19411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            // Expected
19511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        }
19611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
19711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
19811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
19911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testSortByUser_noSortingCapability() {
20011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        try {
20111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            mModel.sortByUser(DIMENSION_3.getId(), SortDimension.SORT_DIRECTION_DESCENDING);
20211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            fail("Expect exception but not raised.");
20311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        } catch(IllegalStateException expected) {
20411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            // Expected
20511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        }
20611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
20711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
20811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    @Test
20911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    public void testParceling() {
21011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.setDefaultDimension(DIMENSION_1.getId());
21111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.sortByUser(DIMENSION_2.getId(), SortDimension.SORT_DIRECTION_DESCENDING);
21211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        mModel.setDimensionVisibility(DIMENSION_3.getId(), View.GONE);
21311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
214c6b0432938a798833a4bbe528e5abcc67e69a7b1Garfield Tan        Parcelables.assertParcelable(mModel, 0);
21561f564beacafc5edebbb4b05d098203816ff7f64Garfield, Tan    }
21611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
21761f564beacafc5edebbb4b05d098203816ff7f64Garfield, Tan    @Test
21861f564beacafc5edebbb4b05d098203816ff7f64Garfield, Tan    public void testParceling_NoSortedDimension() {
219c6b0432938a798833a4bbe528e5abcc67e69a7b1Garfield Tan        Parcelables.assertParcelable(mModel, 0);
22011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
22111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
22211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    private @Nullable SortDimension getSortedDimension() {
22311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        final int sortedDimensionId = mModel.getSortedDimensionId();
22411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        return mModel.getDimensionById(sortedDimensionId);
22511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
22611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
22711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    private static class DummyListener implements UpdateListener {
22811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
22911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        private SortModel mLastSortModel;
23011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        private @UpdateType int mLastUpdateType;
23111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan
23211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        @Override
23311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        public void onModelUpdate(SortModel newModel, @UpdateType int updateType) {
23411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            mLastSortModel = newModel;
23511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan            mLastUpdateType = updateType;
23611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan        }
23711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan    }
23811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan}
239