''' ** By Cro-Ki l@b, 2017 ** ''' import unittest from pypog import geometry from pypog.grid_objects import Grid, SquareGrid, HexGrid class Test(unittest.TestCase): def test_init(self): # square grid _ = Grid(geometry.SQUARE, 1, 1) _ = SquareGrid(1, 1) # hex grid _ = Grid(geometry.FLAT_HEX, 1, 1) _ = HexGrid(1, 1) def test_cell_shape(self): grid = Grid(geometry.SQUARE, 1, 1) self.assertEqual(grid.cell_shape, geometry.SQUARE) grid.cell_shape = geometry.FLAT_HEX self.assertEqual(grid.cell_shape, geometry.FLAT_HEX) def _set_invalid_cell_shape(): grid.cell_shape = -1 self.assertRaises(ValueError, _set_invalid_cell_shape) def test_dimensions(self): for cls in (SquareGrid, HexGrid): grid = cls(1, 1) self.assertEqual(grid.height, 1) self.assertEqual(grid.width, 1) grid.height = 1000 self.assertEqual(grid.height, 1000) grid.width = 1000 self.assertEqual(grid.width, 1000) def _set_invalid_height(): grid.height = -1 self.assertRaises(ValueError, _set_invalid_height) def _set_invalid_width(): grid.height = -1 self.assertRaises(ValueError, _set_invalid_width) def test_cases_number(self): for cls in (SquareGrid, HexGrid): grid = cls(1, 1) self.assertEqual(grid.cases_number(), 1) grid.width = 100 grid.height = 100 self.assertEqual(grid.cases_number(), 10000) def test_in_grid(self): for cls in (SquareGrid, HexGrid): grid = cls(10, 10) self.assertTrue(grid.in_grid(5, 5)) self.assertFalse(grid.in_grid(11, 5)) self.assertFalse(grid.in_grid(5, 11)) def test_line(self): # line algorithm is tested in tests.geometry.test_line grid = SquareGrid(10, 10) line = grid.line(0, 0, 0, 1) self.assertEqual(line, [(0, 0), (0, 1)]) def test_line_3d(self): # line algorithm is tested in tests.geometry.test_line grid = HexGrid(10, 10) line = grid.line3d(1, 1, 1, 1, 1, 1) self.assertEqual(line, [(1, 1, 1)]) def test_hex_zone(self): # zone algorithm is tested in tests.geometry.test_zone grid = HexGrid(10, 10) zone = grid.zone(0, 0, 0) self.assertCountEqual(zone, [(0, 0)]) if __name__ == "__main__": unittest.main()