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 android.testing.AndroidTestingRunner; 22 import android.view.LayoutInflater; 23 import android.view.View; 24 import android.view.ViewGroup; 25 26 import androidx.test.filters.SmallTest; 27 28 import com.android.systemui.R; 29 import com.android.systemui.SysuiTestCase; 30 31 import org.junit.Before; 32 import org.junit.Test; 33 import org.junit.runner.RunWith; 34 35 /** 36 * Tests for {@link ListGridLayout}. 37 */ 38 @SmallTest 39 @RunWith(AndroidTestingRunner.class) 40 public class ListGridLayoutTest extends SysuiTestCase { 41 42 private ListGridLayout mListGridLayout; 43 44 @Before setUp()45 public void setUp() throws Exception { 46 GlobalActionsGridLayout globalActions = LayoutInflater.from(mContext) 47 .inflate(R.layout.global_actions_grid, null) 48 .requireViewById(R.id.global_actions_view); 49 mListGridLayout = globalActions.getListView(); 50 } 51 52 @Test testInflation()53 public void testInflation() { 54 assertEquals(3, mListGridLayout.getChildCount()); 55 } 56 57 @Test testGetRowCount()58 public void testGetRowCount() { 59 // above expected range 60 mListGridLayout.setExpectedCount(99); 61 assertEquals(3, mListGridLayout.getRowCount()); 62 63 mListGridLayout.setExpectedCount(9); 64 assertEquals(3, mListGridLayout.getRowCount()); 65 mListGridLayout.setExpectedCount(8); 66 assertEquals(3, mListGridLayout.getRowCount()); 67 mListGridLayout.setExpectedCount(7); 68 assertEquals(3, mListGridLayout.getRowCount()); 69 mListGridLayout.setExpectedCount(6); 70 assertEquals(2, mListGridLayout.getRowCount()); 71 mListGridLayout.setExpectedCount(5); 72 assertEquals(2, mListGridLayout.getRowCount()); 73 mListGridLayout.setExpectedCount(4); 74 assertEquals(2, mListGridLayout.getRowCount()); 75 mListGridLayout.setExpectedCount(3); 76 assertEquals(1, mListGridLayout.getRowCount()); 77 mListGridLayout.setExpectedCount(2); 78 assertEquals(1, mListGridLayout.getRowCount()); 79 mListGridLayout.setExpectedCount(1); 80 assertEquals(1, mListGridLayout.getRowCount()); 81 mListGridLayout.setExpectedCount(0); 82 assertEquals(0, mListGridLayout.getRowCount()); 83 84 // below expected range 85 mListGridLayout.setExpectedCount(-1); 86 assertEquals(0, mListGridLayout.getRowCount()); 87 } 88 89 @Test testGetColumnCount()90 public void testGetColumnCount() { 91 // above expected range 92 mListGridLayout.setExpectedCount(99); 93 94 assertEquals(3, mListGridLayout.getColumnCount()); 95 mListGridLayout.setExpectedCount(9); 96 assertEquals(3, mListGridLayout.getColumnCount()); 97 mListGridLayout.setExpectedCount(8); 98 assertEquals(3, mListGridLayout.getColumnCount()); 99 mListGridLayout.setExpectedCount(7); 100 assertEquals(3, mListGridLayout.getColumnCount()); 101 mListGridLayout.setExpectedCount(6); 102 assertEquals(3, mListGridLayout.getColumnCount()); 103 mListGridLayout.setExpectedCount(5); 104 assertEquals(3, mListGridLayout.getColumnCount()); 105 mListGridLayout.setExpectedCount(4); 106 assertEquals(2, mListGridLayout.getColumnCount()); 107 mListGridLayout.setExpectedCount(3); 108 assertEquals(3, mListGridLayout.getColumnCount()); 109 mListGridLayout.setExpectedCount(2); 110 assertEquals(2, mListGridLayout.getColumnCount()); 111 mListGridLayout.setExpectedCount(1); 112 assertEquals(1, mListGridLayout.getColumnCount()); 113 mListGridLayout.setExpectedCount(0); 114 assertEquals(0, mListGridLayout.getColumnCount()); 115 116 // below expected range 117 mListGridLayout.setExpectedCount(-1); 118 assertEquals(0, mListGridLayout.getColumnCount()); 119 } 120 121 @Test testGetParentView_default()122 public void testGetParentView_default() { 123 mListGridLayout.setExpectedCount(9); 124 125 // below valid range 126 assertEquals(null, 127 mListGridLayout.getParentView(-1, false, false)); 128 129 assertEquals(mListGridLayout.getSublist(0), 130 mListGridLayout.getParentView(0, false, false)); 131 assertEquals(mListGridLayout.getSublist(1), 132 mListGridLayout.getParentView(1, false, false)); 133 assertEquals(mListGridLayout.getSublist(2), 134 mListGridLayout.getParentView(2, false, false)); 135 assertEquals(mListGridLayout.getSublist(0), 136 mListGridLayout.getParentView(3, false, false)); 137 assertEquals(mListGridLayout.getSublist(1), 138 mListGridLayout.getParentView(4, false, false)); 139 assertEquals(mListGridLayout.getSublist(2), 140 mListGridLayout.getParentView(5, false, false)); 141 assertEquals(mListGridLayout.getSublist(0), 142 mListGridLayout.getParentView(6, false, false)); 143 assertEquals(mListGridLayout.getSublist(1), 144 mListGridLayout.getParentView(7, false, false)); 145 assertEquals(mListGridLayout.getSublist(2), 146 mListGridLayout.getParentView(8, false, false)); 147 148 // above valid range 149 assertEquals(mListGridLayout.getSublist(2), 150 mListGridLayout.getParentView(9, false, false)); 151 } 152 153 @Test testGetParentView_reverseSublists()154 public void testGetParentView_reverseSublists() { 155 mListGridLayout.setExpectedCount(9); 156 157 // below valid range 158 assertEquals(null, 159 mListGridLayout.getParentView(-1, true, false)); 160 161 assertEquals(mListGridLayout.getSublist(2), 162 mListGridLayout.getParentView(0, true, false)); 163 assertEquals(mListGridLayout.getSublist(1), 164 mListGridLayout.getParentView(1, true, false)); 165 assertEquals(mListGridLayout.getSublist(0), 166 mListGridLayout.getParentView(2, true, false)); 167 assertEquals(mListGridLayout.getSublist(2), 168 mListGridLayout.getParentView(3, true, false)); 169 assertEquals(mListGridLayout.getSublist(1), 170 mListGridLayout.getParentView(4, true, false)); 171 assertEquals(mListGridLayout.getSublist(0), 172 mListGridLayout.getParentView(5, true, false)); 173 assertEquals(mListGridLayout.getSublist(2), 174 mListGridLayout.getParentView(6, true, false)); 175 assertEquals(mListGridLayout.getSublist(1), 176 mListGridLayout.getParentView(7, true, false)); 177 assertEquals(mListGridLayout.getSublist(0), 178 mListGridLayout.getParentView(8, true, false)); 179 180 // above valid range 181 assertEquals(mListGridLayout.getSublist(0), 182 mListGridLayout.getParentView(9, true, false)); 183 } 184 185 @Test testGetParentView_swapRowsAndColumns()186 public void testGetParentView_swapRowsAndColumns() { 187 mListGridLayout.setExpectedCount(9); 188 189 // below valid range 190 assertEquals(null, 191 mListGridLayout.getParentView(-1, false, true)); 192 193 assertEquals(mListGridLayout.getSublist(0), 194 mListGridLayout.getParentView(0, false, true)); 195 assertEquals(mListGridLayout.getSublist(0), 196 mListGridLayout.getParentView(1, false, true)); 197 assertEquals(mListGridLayout.getSublist(0), 198 mListGridLayout.getParentView(2, false, true)); 199 assertEquals(mListGridLayout.getSublist(1), 200 mListGridLayout.getParentView(3, false, true)); 201 assertEquals(mListGridLayout.getSublist(1), 202 mListGridLayout.getParentView(4, false, true)); 203 assertEquals(mListGridLayout.getSublist(1), 204 mListGridLayout.getParentView(5, false, true)); 205 assertEquals(mListGridLayout.getSublist(2), 206 mListGridLayout.getParentView(6, false, true)); 207 assertEquals(mListGridLayout.getSublist(2), 208 mListGridLayout.getParentView(7, false, true)); 209 assertEquals(mListGridLayout.getSublist(2), 210 mListGridLayout.getParentView(8, false, true)); 211 212 // above valid range 213 assertEquals(mListGridLayout.getSublist(2), 214 mListGridLayout.getParentView(9, false, true)); 215 } 216 217 @Test testGetParentView_swapRowsAndColumnsAndReverseSublists()218 public void testGetParentView_swapRowsAndColumnsAndReverseSublists() { 219 mListGridLayout.setExpectedCount(9); 220 221 // below valid range 222 assertEquals(null, 223 mListGridLayout.getParentView(-1, true, true)); 224 225 assertEquals(mListGridLayout.getSublist(2), 226 mListGridLayout.getParentView(0, true, true)); 227 assertEquals(mListGridLayout.getSublist(2), 228 mListGridLayout.getParentView(1, true, true)); 229 assertEquals(mListGridLayout.getSublist(2), 230 mListGridLayout.getParentView(2, true, true)); 231 assertEquals(mListGridLayout.getSublist(1), 232 mListGridLayout.getParentView(3, true, true)); 233 assertEquals(mListGridLayout.getSublist(1), 234 mListGridLayout.getParentView(4, true, true)); 235 assertEquals(mListGridLayout.getSublist(1), 236 mListGridLayout.getParentView(5, true, true)); 237 assertEquals(mListGridLayout.getSublist(0), 238 mListGridLayout.getParentView(6, true, true)); 239 assertEquals(mListGridLayout.getSublist(0), 240 mListGridLayout.getParentView(7, true, true)); 241 assertEquals(mListGridLayout.getSublist(0), 242 mListGridLayout.getParentView(8, true, true)); 243 244 // above valid range 245 assertEquals(mListGridLayout.getSublist(0), 246 mListGridLayout.getParentView(9, true, true)); 247 } 248 249 @Test testRemoveAllItems()250 public void testRemoveAllItems() { 251 ViewGroup row1 = mListGridLayout.getSublist(0); 252 row1.setVisibility(View.VISIBLE); 253 ViewGroup row2 = mListGridLayout.getSublist(1); 254 row2.setVisibility(View.VISIBLE); 255 ViewGroup row3 = mListGridLayout.getSublist(2); 256 row3.setVisibility(View.VISIBLE); 257 View item1 = new View(mContext, null); 258 View item2 = new View(mContext, null); 259 View item3 = new View(mContext, null); 260 261 row1.addView(item1); 262 row2.addView(item2); 263 row3.addView(item3); 264 265 assertEquals(1, row1.getChildCount()); 266 assertEquals(1, row2.getChildCount()); 267 assertEquals(1, row3.getChildCount()); 268 269 mListGridLayout.removeAllItems(); 270 271 assertEquals(0, row1.getChildCount()); 272 assertEquals(View.GONE, row1.getVisibility()); 273 assertEquals(0, row2.getChildCount()); 274 assertEquals(View.GONE, row2.getVisibility()); 275 assertEquals(0, row3.getChildCount()); 276 assertEquals(View.GONE, row3.getVisibility()); 277 } 278 279 @Test testAddItem()280 public void testAddItem() { 281 mListGridLayout.setExpectedCount(4); 282 283 View item1 = new View(mContext, null); 284 View item2 = new View(mContext, null); 285 View item3 = new View(mContext, null); 286 View item4 = new View(mContext, null); 287 288 mListGridLayout.addItem(item1); 289 mListGridLayout.addItem(item2); 290 mListGridLayout.addItem(item3); 291 mListGridLayout.addItem(item4); 292 assertEquals(2, mListGridLayout.getSublist(0).getChildCount()); 293 assertEquals(2, mListGridLayout.getSublist(1).getChildCount()); 294 assertEquals(0, mListGridLayout.getSublist(2).getChildCount()); 295 296 mListGridLayout.removeAllItems(); 297 mListGridLayout.addItem(item1); 298 299 assertEquals(1, mListGridLayout.getSublist(0).getChildCount()); 300 assertEquals(0, mListGridLayout.getSublist(1).getChildCount()); 301 assertEquals(0, mListGridLayout.getSublist(2).getChildCount()); 302 } 303 304 @Test testAddItem_reverseItems()305 public void testAddItem_reverseItems() { 306 mListGridLayout.setExpectedCount(3); 307 308 View item1 = new View(mContext, null); 309 View item2 = new View(mContext, null); 310 View item3 = new View(mContext, null); 311 312 mListGridLayout.addItem(item1); 313 mListGridLayout.addItem(item2); 314 mListGridLayout.addItem(item3); 315 316 ViewGroup sublist = mListGridLayout.getSublist(0); 317 318 assertEquals(item1, sublist.getChildAt(0)); 319 assertEquals(item2, sublist.getChildAt(1)); 320 assertEquals(item3, sublist.getChildAt(2)); 321 322 323 mListGridLayout.removeAllItems(); 324 mListGridLayout.setReverseItems(true); 325 326 mListGridLayout.addItem(item1); 327 mListGridLayout.addItem(item2); 328 mListGridLayout.addItem(item3); 329 330 assertEquals(item3, sublist.getChildAt(0)); 331 assertEquals(item2, sublist.getChildAt(1)); 332 assertEquals(item1, sublist.getChildAt(2)); 333 } 334 } 335