test_line.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import numpy
  2. import pytest
  3. from freesurfer_surface.geometry import _Line
  4. def test_init_list():
  5. line = _Line(point=[1, 2, 3], vector=[4, 5, 6])
  6. assert isinstance(line.point, numpy.ndarray)
  7. assert line.point.dtype == float
  8. assert line.point.shape == (3,)
  9. assert numpy.allclose(line.point, [1, 2, 3])
  10. assert isinstance(line.vector, numpy.ndarray)
  11. assert line.vector.dtype == float
  12. assert line.vector.shape == (3,)
  13. assert numpy.allclose(line.vector, [4, 5, 6])
  14. def test_init_numpy_array():
  15. line = _Line(point=numpy.array([2, 3, 4]),
  16. vector=numpy.array([6, 7, 8]))
  17. assert isinstance(line.point, numpy.ndarray)
  18. assert line.point.dtype == float
  19. assert line.point.shape == (3,)
  20. assert numpy.allclose(line.point, [2, 3, 4])
  21. assert isinstance(line.vector, numpy.ndarray)
  22. assert line.vector.dtype == float
  23. assert line.vector.shape == (3,)
  24. assert numpy.allclose(line.vector, [6, 7, 8])
  25. @pytest.mark.parametrize(('line_a', 'line_b', 'equal'), [
  26. (_Line(point=(0, 0, 0), vector=(0, 0, 1)),
  27. _Line(point=(0, 0, 0), vector=(0, 0, -1)),
  28. True),
  29. (_Line(point=(0, 0, 0), vector=(0, 0, 1)),
  30. _Line(point=(0, 0, 1), vector=(0, 0, -1)),
  31. True),
  32. (_Line(point=(2, 4, 0), vector=(0, 0, 1)),
  33. _Line(point=(2, 4, 1), vector=(0, 0, -1)),
  34. True),
  35. (_Line(point=(2, 4, 0), vector=(0, 0, 1)),
  36. _Line(point=(2, 4, 1), vector=(0, 1, -1)),
  37. False),
  38. (_Line(point=(2, 4, 0), vector=(2, 0, 1)),
  39. _Line(point=(2, 4, 1), vector=(0, 0, -1)),
  40. False),
  41. (_Line(point=(2, 4, 0), vector=(0, 0, 1)),
  42. _Line(point=(2, 5, 1), vector=(0, 0, -1)),
  43. False),
  44. (_Line(point=(0, 0, 0), vector=(0, 0, 1)),
  45. _Line(point=(0, 0, 0), vector=(0, 1, 0)),
  46. False),
  47. (_Line(point=(1, 2, 3), vector=(-1, 3, -5)),
  48. _Line(point=(-1, 8, -7), vector=(2, -6, 10)),
  49. True),
  50. ])
  51. def test__equal(line_a, line_b, equal):
  52. assert (line_a == line_b) == equal
  53. def test_repr():
  54. line = _Line(point=[1, 2, 3], vector=[4, 5, 6])
  55. assert repr(line) == 'line(t) = [1. 2. 3.] + [4. 5. 6.] t'