test_grid.py 2.7 KB

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