test_line.py 3.3 KB

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