test_line.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. '''
  2. Created on 20 nov. 2016
  3. @author: olinox
  4. '''
  5. import unittest
  6. from core import geometry
  7. from core.geometry import gline
  8. class Test(unittest.TestCase):
  9. """test line algorithms"""
  10. def test_hex_line(self):
  11. """ 2d line on hexagonal grid """
  12. grid_shape = geometry.HEX
  13. line = gline.line2d(grid_shape, 1,1,1,1)
  14. self.assertEqual(line, [(1,1)])
  15. line = gline.line2d(grid_shape, 0,0,1,1)
  16. self.assertEqual(line, [(0,0), (0,1), (1,1)])
  17. line = gline.line2d(grid_shape, 0,0,7,3)
  18. self.assertEqual(line, [(0,0), (1,0), (2,1), (3,1), (4,2), (5,2), (6,3), (7,3)] )
  19. line = gline.line2d(grid_shape, 4,3,0,3)
  20. self.assertEqual(line, [(4,3), (3,2), (2,3), (1,2), (0,3)] )
  21. line = gline.line2d(grid_shape, 3,0,3,3)
  22. self.assertEqual(line, [(3,0), (3,1), (3,2), (3,3)] )
  23. def test_squ_line(self):
  24. """ 2d line on square grid """
  25. grid_shape = geometry.SQUARE
  26. line = gline.line2d(grid_shape,0,0,0,1)
  27. self.assertEqual(line, [(0,0), (0,1)])
  28. line = gline.line2d(grid_shape,0,0,1,1)
  29. self.assertEqual(line, [(0,0), (1,1)])
  30. line = gline.line2d(grid_shape,0,0,7,3)
  31. self.assertEqual(line, [(0,0), (1,0), (2,1), (3,1), (4,2), (5,2), (6,3), (7,3)] )
  32. line = gline.line2d(grid_shape,4,3,0,3)
  33. self.assertEqual(line, [(4,3), (3,3), (2,3), (1,3), (0,3)] )
  34. line = gline.line2d(grid_shape,3,0,3,3)
  35. self.assertEqual(line, [(3,0), (3,1), (3,2), (3,3)] )
  36. def test_hex_line_3d(self):
  37. """ 3d line on hexagonal grid """
  38. grid_shape = geometry.HEX
  39. line = gline.line3d(grid_shape,1,1,1,1,1,1)
  40. self.assertEqual(line, [(1,1,1)])
  41. line = gline.line3d(grid_shape,1,1,0,1,1,1)
  42. self.assertEqual(line, [(1,1,0), (1,1,1)])
  43. line = gline.line3d(grid_shape,0,0,0,1,1,1)
  44. self.assertEqual(line, [(0,0,0), (0,1,0), (1,1,1)])
  45. line = gline.line3d(grid_shape,0,0,0,7,3,7)
  46. self.assertEqual(line, [(0,0,0), (1,0,1), (2,1,2), (3,1,3), (4,2,4), (5,2,5), (6,3,6), (7,3,7)] )
  47. line = gline.line3d(grid_shape,4,3,10,0,3,3)
  48. self.assertEqual(line, [(4,3,10), (3,2,9), (3,2,8), (2,3,7), (2,3,6), (1,2,5), (1,2,4), (0,3,3)] )
  49. line = gline.line3d(grid_shape,3,0,0,3,3,0)
  50. self.assertEqual(line, [(3,0,0), (3,1,0), (3,2,0), (3,3,0)] )
  51. def test_squ_line_3d(self):
  52. """ 3d line on square grid """
  53. grid_shape = geometry.SQUARE
  54. line = gline.line3d(grid_shape,1,1,1,1,1,1)
  55. self.assertEqual(line, [(1,1,1)])
  56. line = gline.line3d(grid_shape,1,1,0,1,1,1)
  57. self.assertEqual(line, [(1,1,0), (1,1,1)])
  58. line = gline.line3d(grid_shape,0,0,0,1,1,1)
  59. self.assertEqual(line, [(0,0,0), (1,1,1)])
  60. line = gline.line3d(grid_shape,0,0,0,7,3,7)
  61. self.assertEqual(line, [(0,0,0), (1,0,1), (2,1,2), (3,1,3), (4,2,4), (5,2,5), (6,3,6), (7,3,7)] )
  62. line = gline.line3d(grid_shape,4,3,10,0,3,3)
  63. self.assertEqual(line, [(4,3,10), (3,3,9), (3,3,8), (2,3,7), (2,3,6), (1,3,5), (1,3,4), (0,3,3)] )
  64. line = gline.line3d(grid_shape,3,0,0,3,3,0)
  65. self.assertEqual(line, [(3,0,0), (3,1,0), (3,2,0), (3,3,0)] )
  66. if __name__ == "__main__":
  67. unittest.main()