from ppb_vector import Vector2
import pytest

reflect_data = (
    (Vector2(1, 1), Vector2(0, -1), Vector2(1, -1)),
    (Vector2(1, 1), Vector2(-1, 0), Vector2(-1, 1)),
    (Vector2(0, 1), Vector2(0, -1), Vector2(0, -1)),
    (Vector2(-1, -1), Vector2(1, 0), Vector2(1, -1)),
    (Vector2(-1, -1), Vector2(-1, 0), Vector2(-1,1))
)


@pytest.mark.parametrize("initial_vector, surface_normal, expected_vector", reflect_data)
def test_reflect(initial_vector, surface_normal, expected_vector):
    assert initial_vector.reflect(surface_normal).isclose(expected_vector)

@@ -38,16 +38,118 @@
  pytest%0A
+from hypothesis import given, assume, note%0Afrom math import isclose%0Afrom utils import units, vectors%0A%0A
 %0Areflect
@@ -660,8 +660,360 @@
 vector)%0A
+%0A%0A@given(initial=vectors(), normal=units())%0Adef test_reflect_prop(initial: Vector2, normal: Vector2):%0A    assume(initial %5E normal != 0)%0A    reflected = initial.reflect(normal)%0A    returned = reflected.reflect(normal)%0A    note(f%22Reflected: %7Breflected%7D%22)%0A    assert initial.isclose(returned)%0A    assert isclose((initial * normal), -(reflected * normal))%0A

Add properties for reflections