def test_subtract_true(): a = Point(1, 2) b = Point(3, 4) c = Point(2, 2) d = Point(-2, -2) assert b.subtract(a).equals(c) == True assert a.subtract(b).equals(d) == True
def test_intersection(): line1 = Line(Point(0, 0), Point(2, 0)) line2 = Line(Point(1, 1), Point(1, 0)) assert line1.intersects(line2) == True assert line2.intersects(line1) == True
def test_collinear_non_intersection(): line1 = Line(Point(0, 1), Point(2, 1)) line2 = Line(Point(3, 1), Point(4, 1)) assert line1.intersects(line2) == False assert line2.intersects(line1) == False
def test_perpendicular_intersection_two(): line1 = Line(Point(0, 2), Point(2, 2)) line2 = Line(Point(2, 0), Point(2, 2)) assert line1.intersects(line2) == True assert line2.intersects(line1) == True
def test_parallel(): line1 = Line(Point(0, 1), Point(2, 1)) line2 = Line(Point(0, 2), Point(2, 2)) assert line1.intersects(line2) == False assert line2.intersects(line1) == False
def test_cross_product(): a = Point(1, 2) b = Point(3, 4) assert a.cross_product(b) == -2 assert b.cross_product(a) == 2
def test_subtract_zero(): a = Point(1, 2) b = Point(0, 0) assert a.subtract(a).equals(b) == True
def test_subtract_false(): a = Point(1, 2) b = Point(3, 4) assert a.subtract(b).equals(b) == False
def test_equals_false(): a = Point(1, 2) b = Point(2, 1) assert a.equals(b) == False assert b.equals(a) == False
def test_equals_true(): a = Point(1, 2) b = Point(1, 2) assert a.equals(b) == True assert b.equals(a) == True