1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.globalactions; 18 19 import static junit.framework.Assert.assertEquals; 20 21 import static org.mockito.Mockito.doReturn; 22 import static org.mockito.Mockito.spy; 23 24 import android.testing.AndroidTestingRunner; 25 import android.view.LayoutInflater; 26 import android.view.View; 27 import android.view.ViewGroup; 28 29 import androidx.test.filters.SmallTest; 30 31 import com.android.systemui.R; 32 import com.android.systemui.SysuiTestCase; 33 import com.android.systemui.util.leak.RotationUtils; 34 35 import org.junit.Before; 36 import org.junit.Test; 37 import org.junit.runner.RunWith; 38 39 /** 40 * Tests for {@link ListGridLayout}. 41 */ 42 @SmallTest 43 @RunWith(AndroidTestingRunner.class) 44 public class GlobalActionsGridLayoutTest extends SysuiTestCase { 45 46 private GlobalActionsGridLayout mGridLayout; 47 private ListGridLayout mListGrid; 48 49 @Before setUp()50 public void setUp() throws Exception { 51 mGridLayout = spy(LayoutInflater.from(mContext) 52 .inflate(R.layout.global_actions_grid, null) 53 .requireViewById(R.id.global_actions_view)); 54 mListGrid = spy(mGridLayout.getListView()); 55 doReturn(mListGrid).when(mGridLayout).getListView(); 56 } 57 58 @Test testShouldSwapRowsAndColumns()59 public void testShouldSwapRowsAndColumns() { 60 doReturn(RotationUtils.ROTATION_NONE).when(mGridLayout).getCurrentRotation(); 61 assertEquals(false, mGridLayout.shouldSwapRowsAndColumns()); 62 63 doReturn(RotationUtils.ROTATION_LANDSCAPE).when(mGridLayout).getCurrentRotation(); 64 assertEquals(true, mGridLayout.shouldSwapRowsAndColumns()); 65 66 doReturn(RotationUtils.ROTATION_SEASCAPE).when(mGridLayout).getCurrentRotation(); 67 assertEquals(true, mGridLayout.shouldSwapRowsAndColumns()); 68 } 69 70 @Test testShouldReverseListItems()71 public void testShouldReverseListItems() { 72 doReturn(View.LAYOUT_DIRECTION_LTR).when(mGridLayout).getCurrentLayoutDirection(); 73 74 doReturn(RotationUtils.ROTATION_LANDSCAPE).when(mGridLayout).getCurrentRotation(); 75 assertEquals(false, mGridLayout.shouldReverseListItems()); 76 77 doReturn(RotationUtils.ROTATION_NONE).when(mGridLayout).getCurrentRotation(); 78 assertEquals(true, mGridLayout.shouldReverseListItems()); 79 80 doReturn(RotationUtils.ROTATION_SEASCAPE).when(mGridLayout).getCurrentRotation(); 81 assertEquals(true, mGridLayout.shouldReverseListItems()); 82 83 doReturn(View.LAYOUT_DIRECTION_RTL).when(mGridLayout).getCurrentLayoutDirection(); 84 85 doReturn(RotationUtils.ROTATION_LANDSCAPE).when(mGridLayout).getCurrentRotation(); 86 assertEquals(true, mGridLayout.shouldReverseListItems()); 87 88 doReturn(RotationUtils.ROTATION_NONE).when(mGridLayout).getCurrentRotation(); 89 assertEquals(false, mGridLayout.shouldReverseListItems()); 90 91 doReturn(RotationUtils.ROTATION_SEASCAPE).when(mGridLayout).getCurrentRotation(); 92 assertEquals(false, mGridLayout.shouldReverseListItems()); 93 } 94 95 @Test testShouldReverseSublists()96 public void testShouldReverseSublists() { 97 doReturn(RotationUtils.ROTATION_LANDSCAPE).when(mGridLayout).getCurrentRotation(); 98 assertEquals(false, mGridLayout.shouldReverseSublists()); 99 100 doReturn(RotationUtils.ROTATION_NONE).when(mGridLayout).getCurrentRotation(); 101 assertEquals(false, mGridLayout.shouldReverseSublists()); 102 103 doReturn(RotationUtils.ROTATION_SEASCAPE).when(mGridLayout).getCurrentRotation(); 104 assertEquals(true, mGridLayout.shouldReverseSublists()); 105 } 106 107 @Test testGetAnimationOffsetX()108 public void testGetAnimationOffsetX() { 109 doReturn(50f).when(mGridLayout).getAnimationDistance(); 110 111 doReturn(RotationUtils.ROTATION_NONE).when(mGridLayout).getCurrentRotation(); 112 assertEquals(0f, mGridLayout.getAnimationOffsetX(), .01); 113 114 doReturn(RotationUtils.ROTATION_LANDSCAPE).when(mGridLayout).getCurrentRotation(); 115 assertEquals(50f, mGridLayout.getAnimationOffsetX(), .01); 116 117 doReturn(RotationUtils.ROTATION_SEASCAPE).when(mGridLayout).getCurrentRotation(); 118 assertEquals(-50f, mGridLayout.getAnimationOffsetX(), .01); 119 } 120 121 @Test testGetAnimationOffsetY()122 public void testGetAnimationOffsetY() { 123 doReturn(50f).when(mGridLayout).getAnimationDistance(); 124 125 doReturn(RotationUtils.ROTATION_NONE).when(mGridLayout).getCurrentRotation(); 126 assertEquals(50f, mGridLayout.getAnimationOffsetY(), .01); 127 128 doReturn(RotationUtils.ROTATION_LANDSCAPE).when(mGridLayout).getCurrentRotation(); 129 assertEquals(0f, mGridLayout.getAnimationOffsetY(), .01); 130 131 doReturn(RotationUtils.ROTATION_SEASCAPE).when(mGridLayout).getCurrentRotation(); 132 assertEquals(0f, mGridLayout.getAnimationOffsetY(), .01); 133 } 134 135 @Test testUpdateSeparatedItemSize()136 public void testUpdateSeparatedItemSize() { 137 View firstView = new View(mContext, null); 138 View secondView = new View(mContext, null); 139 140 ViewGroup separatedView = mGridLayout.getSeparatedView(); 141 separatedView.addView(firstView); 142 143 mGridLayout.updateSeparatedItemSize(); 144 145 ViewGroup.LayoutParams childParams = firstView.getLayoutParams(); 146 assertEquals(ViewGroup.LayoutParams.MATCH_PARENT, childParams.width); 147 assertEquals(ViewGroup.LayoutParams.MATCH_PARENT, childParams.height); 148 149 separatedView.addView(secondView); 150 151 mGridLayout.updateSeparatedItemSize(); 152 153 childParams = firstView.getLayoutParams(); 154 assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, childParams.width); 155 assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, childParams.height); 156 } 157 } 158