test_grid.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. '''
  2. ** By Cro-Ki l@b, 2017 **
  3. '''
  4. import unittest
  5. from pypog import geometry
  6. from pypog.grid_objects import Grid, SquareGrid, HexGrid
  7. class Test(unittest.TestCase):
  8. def test_init(self):
  9. # square grid
  10. _ = Grid(geometry.SQUARE, 1, 1)
  11. _ = SquareGrid(1, 1)
  12. # hex grid
  13. _ = Grid(geometry.FLAT_HEX, 1, 1)
  14. _ = HexGrid(1, 1)
  15. def test_cell_shape(self):
  16. grid = Grid(geometry.SQUARE, 1, 1)
  17. self.assertEqual(grid.cell_shape, geometry.SQUARE)
  18. grid.cell_shape = geometry.FLAT_HEX
  19. self.assertEqual(grid.cell_shape, geometry.FLAT_HEX)
  20. def _set_invalid_cell_shape():
  21. grid.cell_shape = -1
  22. self.assertRaises(ValueError, _set_invalid_cell_shape)
  23. def test_dimensions(self):
  24. for cls in (SquareGrid, HexGrid):
  25. grid = cls(1, 1)
  26. self.assertEqual(grid.height, 1)
  27. self.assertEqual(grid.width, 1)
  28. grid.height = 1000
  29. self.assertEqual(grid.height, 1000)
  30. grid.width = 1000
  31. self.assertEqual(grid.width, 1000)
  32. def _set_invalid_height():
  33. grid.height = -1
  34. self.assertRaises(ValueError, _set_invalid_height)
  35. def _set_invalid_width():
  36. grid.height = -1
  37. self.assertRaises(ValueError, _set_invalid_width)
  38. def test_cases_number(self):
  39. for cls in (SquareGrid, HexGrid):
  40. grid = cls(1, 1)
  41. self.assertEqual(grid.cases_number(), 1)
  42. grid.width = 100
  43. grid.height = 100
  44. self.assertEqual(grid.cases_number(), 10000)
  45. def test_in_grid(self):
  46. for cls in (SquareGrid, HexGrid):
  47. grid = cls(10, 10)
  48. self.assertTrue(grid.in_grid(5, 5))
  49. self.assertFalse(grid.in_grid(11, 5))
  50. self.assertFalse(grid.in_grid(5, 11))
  51. def test_line(self):
  52. # line algorithm is tested in tests.geometry.test_line
  53. grid = SquareGrid(10, 10)
  54. line = grid.line(0, 0, 0, 1)
  55. self.assertEqual(line, [(0, 0), (0, 1)])
  56. def test_line_3d(self):
  57. # line algorithm is tested in tests.geometry.test_line
  58. grid = HexGrid(10, 10)
  59. line = grid.line3d(1, 1, 1, 1, 1, 1)
  60. self.assertEqual(line, [(1, 1, 1)])
  61. def test_hex_zone(self):
  62. # zone algorithm is tested in tests.geometry.test_zone
  63. grid = HexGrid(10, 10)
  64. zone = grid.zone(0, 0, 0)
  65. self.assertCountEqual(zone, [(0, 0)])
  66. if __name__ == "__main__":
  67. unittest.main()