()
| 1901 | |
| 1902 | |
| 1903 | def test_quaternion(): |
| 1904 | # 1: |
| 1905 | q1 = Quaternion(1, [0, 0, 0]) |
| 1906 | assert q1.scalar == 1 |
| 1907 | assert (q1.vector == [0, 0, 0]).all |
| 1908 | # __neg__: |
| 1909 | assert (-q1).scalar == -1 |
| 1910 | assert ((-q1).vector == [0, 0, 0]).all |
| 1911 | # i, j, k: |
| 1912 | qi = Quaternion(0, [1, 0, 0]) |
| 1913 | assert qi.scalar == 0 |
| 1914 | assert (qi.vector == [1, 0, 0]).all |
| 1915 | qj = Quaternion(0, [0, 1, 0]) |
| 1916 | assert qj.scalar == 0 |
| 1917 | assert (qj.vector == [0, 1, 0]).all |
| 1918 | qk = Quaternion(0, [0, 0, 1]) |
| 1919 | assert qk.scalar == 0 |
| 1920 | assert (qk.vector == [0, 0, 1]).all |
| 1921 | # i^2 = j^2 = k^2 = -1: |
| 1922 | assert qi*qi == -q1 |
| 1923 | assert qj*qj == -q1 |
| 1924 | assert qk*qk == -q1 |
| 1925 | # identity: |
| 1926 | assert q1*qi == qi |
| 1927 | assert q1*qj == qj |
| 1928 | assert q1*qk == qk |
| 1929 | # i*j=k, j*k=i, k*i=j: |
| 1930 | assert qi*qj == qk |
| 1931 | assert qj*qk == qi |
| 1932 | assert qk*qi == qj |
| 1933 | assert qj*qi == -qk |
| 1934 | assert qk*qj == -qi |
| 1935 | assert qi*qk == -qj |
| 1936 | # __mul__: |
| 1937 | assert (Quaternion(2, [3, 4, 5]) * Quaternion(6, [7, 8, 9]) |
| 1938 | == Quaternion(-86, [28, 48, 44])) |
| 1939 | # conjugate(): |
| 1940 | for q in [q1, qi, qj, qk]: |
| 1941 | assert q.conjugate().scalar == q.scalar |
| 1942 | assert (q.conjugate().vector == -q.vector).all |
| 1943 | assert q.conjugate().conjugate() == q |
| 1944 | assert ((q*q.conjugate()).vector == 0).all |
| 1945 | # norm: |
| 1946 | q0 = Quaternion(0, [0, 0, 0]) |
| 1947 | assert q0.norm == 0 |
| 1948 | assert q1.norm == 1 |
| 1949 | assert qi.norm == 1 |
| 1950 | assert qj.norm == 1 |
| 1951 | assert qk.norm == 1 |
| 1952 | for q in [q0, q1, qi, qj, qk]: |
| 1953 | assert q.norm == (q*q.conjugate()).scalar |
| 1954 | # normalize(): |
| 1955 | for q in [ |
| 1956 | Quaternion(2, [0, 0, 0]), |
| 1957 | Quaternion(0, [3, 0, 0]), |
| 1958 | Quaternion(0, [0, 4, 0]), |
| 1959 | Quaternion(0, [0, 0, 5]), |
| 1960 | Quaternion(6, [7, 8, 9]) |
nothing calls this directly
no test coverage detected
searching dependent graphs…