def test_quaternion_generation(): q = Quaternion() identity = (1, 0, 0, 0) assert all(i == j for i, j in zip(q, identity)) q_id = Quaternion.identity() assert all(i == j for i, j in zip(q_id, identity))
def test_quaternion_inverse(): q1 = Quaternion(1, 2, 3, 4) inv = q1.inverse() assert q1 * inv == Quaternion.identity() with pytest.raises(ValueError): zero_q = Quaternion(0, 0, 0, 0) zero_q.inverse()
def test_quaternion_pow(): _ = Quaternion.identity() i = Quaternion(0, 1, 0, 0) j = Quaternion(0, 0, 1, 0) k = Quaternion(0, 0, 0, 1) i2 = i**2 j2 = j**2 k2 = k**2 assert i2 == j2 == k2
def test_quaternion_mul_basis(): _ = Quaternion.identity() i = Quaternion(0, 1, 0, 0) j = Quaternion(0, 0, 1, 0) k = Quaternion(0, 0, 0, 1) # test identity multiplication assert _ * i == i assert i * _ == i assert j * _ == j assert _ * j == j assert _ * k == k assert k * _ == k i2 = i * i j2 = j * j k2 = k * k ijk = i * j * k assert i2 == j2 == k2 == ijk == -_
def test_quaternion_div(): q1 = Quaternion(1, 2, 3, 4) assert q1 / q1 == Quaternion.identity()