Home | History | Annotate | Download | only in util
      1 package com.android.launcher3.util;
      2 
      3 import android.support.test.filters.SmallTest;
      4 import android.support.test.runner.AndroidJUnit4;
      5 
      6 import org.junit.Test;
      7 import org.junit.runner.RunWith;
      8 
      9 import static org.junit.Assert.assertEquals;
     10 import static org.junit.Assert.assertFalse;
     11 import static org.junit.Assert.assertTrue;
     12 
     13 /**
     14  * Unit tests for {@link GridOccupancy}
     15  */
     16 @SmallTest
     17 @RunWith(AndroidJUnit4.class)
     18 public class GridOccupancyTest {
     19 
     20     @Test
     21     public void testFindVacantCell() {
     22         GridOccupancy grid = initGrid(4,
     23                 1, 1, 1, 0, 0,
     24                 0, 0, 1, 1, 0,
     25                 0, 0, 0, 0, 0,
     26                 1, 1, 0, 0, 0
     27                 );
     28 
     29         int[] vacant = new int[2];
     30         assertTrue(grid.findVacantCell(vacant, 2, 2));
     31         assertEquals(vacant[0], 0);
     32         assertEquals(vacant[1], 1);
     33 
     34         assertTrue(grid.findVacantCell(vacant, 3, 2));
     35         assertEquals(vacant[0], 2);
     36         assertEquals(vacant[1], 2);
     37 
     38         assertFalse(grid.findVacantCell(vacant, 3, 3));
     39     }
     40 
     41     @Test
     42     public void testIsRegionVacant() {
     43         GridOccupancy grid = initGrid(4,
     44                 1, 1, 1, 0, 0,
     45                 0, 0, 1, 1, 0,
     46                 0, 0, 0, 0, 0,
     47                 1, 1, 0, 0, 0
     48         );
     49 
     50         assertTrue(grid.isRegionVacant(4, 0, 1, 4));
     51         assertTrue(grid.isRegionVacant(0, 1, 2, 2));
     52         assertTrue(grid.isRegionVacant(2, 2, 3, 2));
     53 
     54         assertFalse(grid.isRegionVacant(3, 0, 2, 4));
     55         assertFalse(grid.isRegionVacant(0, 0, 2, 1));
     56     }
     57 
     58     private GridOccupancy initGrid(int rows, int... cells) {
     59         int cols = cells.length / rows;
     60         int i = 0;
     61         GridOccupancy grid = new GridOccupancy(cols, rows);
     62         for (int y = 0; y < rows; y++) {
     63             for (int x = 0; x < cols; x++) {
     64                 grid.cells[x][y] = cells[i] != 0;
     65                 i++;
     66             }
     67         }
     68         return grid;
     69     }
     70 }
     71