def test_setters(): """vector property setters""" v = Vector(1,2,3) v.x = 4 assert v.x==4 and v.y==2 and v.z==3 v.y = 5 assert v.x==4 and v.y==5 and v.z==3 v.z = 6 assert v.x==4 and v.y==5 and v.z==6
def test_equality(): """vector equality""" # exact equality v1 = Vector(1,2,3) v2 = Vector(1,2,3) assert v1==v2 v2.z = 1 assert v1!=v2 v2.z = 3 v2.y = 3 assert v1!=v2 v2.y = 2 v2.x = 2 assert v1!=v2 v2.x = 1 assert v1==v2 # approximate equality v1 = Vector(1,2,3) v2 = Vector(1,2,3) assert v1.approx(v2) v2.z = 1 assert not v1.approx(v2) v2.z = 3 v2.y = 3 assert not v1.approx(v2) v2.y = 2 v2.x = 2 assert not v1.approx(v2) v2.x = 1 assert v1.approx(v2) # tolerance checking in all directions assert Vector(0,0,0).approx(Vector(0.000001,0,0),0.00001) assert Vector(0,0,0).approx(Vector(0,0.000001,0),0.00001) assert Vector(0,0,0).approx(Vector(0,0,0.000001),0.00001) # tolerance checking over multiple tolerances assert Vector(0,0,0).approx(Vector(0.000001,0,0),0.01) assert Vector(0,0,0).approx(Vector(0.000001,0,0),0.001) assert Vector(0,0,0).approx(Vector(0.000001,0,0),0.0001) assert Vector(0,0,0).approx(Vector(0.000001,0,0),0.00001) assert not Vector(0,0,0).approx(Vector(0.000001,0,0),0.000001) assert not Vector(0,0,0).approx(Vector(0.000001,0,0),0.0000001) assert not Vector(0,0,0).approx(Vector(0.000001,0,0),0.00000001)