Add tests for linesegment module
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
176
test/test_linesegment.py
Normal file
176
test/test_linesegment.py
Normal file
@@ -0,0 +1,176 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import point
|
||||
import linesegment
|
||||
|
||||
def test_init():
|
||||
"""Test init routine"""
|
||||
line_seg = linesegment.LineSegment()
|
||||
assert line_seg.get_startpoint().get_x() == 0
|
||||
assert line_seg.get_startpoint().get_y() == 0
|
||||
assert line_seg.get_endpoint().get_x() == 0
|
||||
assert line_seg.get_endpoint().get_y() == 0
|
||||
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10,20), point.Point(40,30))
|
||||
assert line_seg.get_startpoint().get_x() == 10
|
||||
assert line_seg.get_startpoint().get_y() == 20
|
||||
assert line_seg.get_endpoint().get_x() == 40
|
||||
assert line_seg.get_endpoint().get_y() == 30
|
||||
|
||||
def test_set_and_get_endpoints():
|
||||
"""Test setting and changing the endpoints"""
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(40, 30))
|
||||
assert line_seg.get_startpoint() == point.Point(10, 20)
|
||||
assert line_seg.get_endpoint() == point.Point(40, 30)
|
||||
assert line_seg[0] == point.Point(10, 20)
|
||||
assert line_seg[1] == point.Point(40, 30)
|
||||
assert line_seg.get_min_x() == 10
|
||||
assert line_seg.get_min_y() == 20
|
||||
assert line_seg.get_max_x() == 40
|
||||
assert line_seg.get_max_y() == 30
|
||||
assert str(line_seg) == "(10/20)-->(40/30)"
|
||||
|
||||
line_seg.set_startpoint(point.Point(60, 70))
|
||||
assert line_seg.get_startpoint() == point.Point(60, 70)
|
||||
assert line_seg.get_endpoint() == point.Point(40, 30)
|
||||
assert line_seg[0] == point.Point(60, 70)
|
||||
assert line_seg[1] == point.Point(40, 30)
|
||||
assert line_seg.get_min_x() == 40
|
||||
assert line_seg.get_min_y() == 30
|
||||
assert line_seg.get_max_x() == 60
|
||||
assert line_seg.get_max_y() == 70
|
||||
assert str(line_seg) == "(60/70)-->(40/30)"
|
||||
|
||||
line_seg.set_endpoint(point.Point(90, 20))
|
||||
assert line_seg.get_startpoint() == point.Point(60, 70)
|
||||
assert line_seg.get_endpoint() == point.Point(90, 20)
|
||||
assert line_seg[0] == point.Point(60, 70)
|
||||
assert line_seg[1] == point.Point(90, 20)
|
||||
assert line_seg.get_min_x() == 60
|
||||
assert line_seg.get_min_y() == 20
|
||||
assert line_seg.get_max_x() == 90
|
||||
assert line_seg.get_max_y() == 70
|
||||
assert str(line_seg) == "(60/70)-->(90/20)"
|
||||
|
||||
line_seg[0] = point.Point(30, 40)
|
||||
line_seg[1] = point.Point(60, 10)
|
||||
assert line_seg.get_startpoint() == point.Point(30, 40)
|
||||
assert line_seg.get_endpoint() == point.Point(60, 10)
|
||||
assert line_seg[0] == point.Point(30, 40)
|
||||
assert line_seg[1] == point.Point(60, 10)
|
||||
assert line_seg.get_min_x() == 30
|
||||
assert line_seg.get_min_y() == 10
|
||||
assert line_seg.get_max_x() == 60
|
||||
assert line_seg.get_max_y() == 40
|
||||
assert str(line_seg) == "(30/40)-->(60/10)"
|
||||
|
||||
assert line_seg[2] is None
|
||||
|
||||
def test_get_random():
|
||||
"""Test generating random linesegments"""
|
||||
min_x = 10
|
||||
max_x = 25
|
||||
min_y = 30
|
||||
max_y = 50
|
||||
for _ in range(100):
|
||||
line_seg = linesegment.get_random(min_x, max_x, min_y, max_y)
|
||||
assert min_x <= line_seg[0].get_x() <= max_x
|
||||
assert min_y <= line_seg[0].get_y() <= max_y
|
||||
assert min_x <= line_seg[1].get_x() <= max_x
|
||||
assert min_y <= line_seg[1].get_y() <= max_y
|
||||
|
||||
def test_get_length():
|
||||
"""Test length calculation of linesegment."""
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(10, 70))
|
||||
assert line_seg.get_length() == 50
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(70, 20))
|
||||
assert line_seg.get_length() == 60
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(70, 60))
|
||||
assert line_seg.get_length() == 72.11102550927978
|
||||
|
||||
def test_get_slope():
|
||||
"""Test slope calculation of linesegment."""
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(10, 70))
|
||||
assert line_seg.get_slope() is None
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 70), point.Point(10, 20))
|
||||
assert line_seg.get_slope() is None
|
||||
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(50, 20))
|
||||
assert line_seg.get_slope() == 0
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(50, 20), point.Point(10, 20))
|
||||
assert line_seg.get_slope() == 0
|
||||
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(50, 60))
|
||||
assert line_seg.get_slope() == 1
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(50, 60), point.Point(10, 20))
|
||||
assert line_seg.get_slope() == 1
|
||||
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(16, 7), point.Point(68, 25))
|
||||
assert line_seg.get_slope() == 0.34615384615384615
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(68, 25), point.Point(16, 7))
|
||||
assert line_seg.get_slope() == 0.34615384615384615
|
||||
|
||||
def test_get_y_at():
|
||||
"""Test get_y_at() function of class LineSegment."""
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(90, 20))
|
||||
assert line_seg.get_y_at(50) == 20
|
||||
|
||||
line_seg = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(90, 70))
|
||||
assert line_seg.get_y_at(50) == 45
|
||||
|
||||
def test_intersection():
|
||||
"""Test intersection() function for two linesegments."""
|
||||
line_seg_a = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(10, 70))
|
||||
line_seg_b = linesegment.LineSegment( \
|
||||
point.Point(90, 70), point.Point(90, 20))
|
||||
assert linesegment.intersection(line_seg_a, line_seg_b) is None
|
||||
|
||||
line_seg_a = linesegment.LineSegment( \
|
||||
point.Point(10, 20), point.Point(90, 70))
|
||||
line_seg_b = linesegment.LineSegment( \
|
||||
point.Point(10, 70), point.Point(90, 20))
|
||||
assert linesegment.intersection(line_seg_a, line_seg_b) == \
|
||||
point.Point(50, 45)
|
||||
|
||||
line_seg_a = linesegment.LineSegment( \
|
||||
point.Point(10, 10), point.Point(50, 50))
|
||||
line_seg_b = linesegment.LineSegment( \
|
||||
point.Point(50, 50), point.Point(90, 90))
|
||||
assert linesegment.intersection(line_seg_a, line_seg_b)[0] == \
|
||||
point.Point(50, 50)
|
||||
assert linesegment.intersection(line_seg_a, line_seg_b)[1] == \
|
||||
point.Point(50, 50)
|
||||
|
||||
line_seg_a = linesegment.LineSegment( \
|
||||
point.Point(10, 10), point.Point(60, 60))
|
||||
line_seg_b = linesegment.LineSegment( \
|
||||
point.Point(40, 40), point.Point(90, 90))
|
||||
assert linesegment.intersection(line_seg_a, line_seg_b)[0] == \
|
||||
point.Point(40, 40)
|
||||
assert linesegment.intersection(line_seg_a, line_seg_b)[1] == \
|
||||
point.Point(60, 60)
|
||||
|
||||
line_seg_a = linesegment.LineSegment( \
|
||||
point.Point(40, 40), point.Point(90, 90))
|
||||
line_seg_b = linesegment.LineSegment( \
|
||||
point.Point(10, 10), point.Point(60, 60))
|
||||
assert linesegment.intersection(line_seg_a, line_seg_b)[0] == \
|
||||
point.Point(40, 40)
|
||||
assert linesegment.intersection(line_seg_a, line_seg_b)[1] == \
|
||||
point.Point(60, 60)
|
||||
Reference in New Issue
Block a user