44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from numpy import pi
|
|
from numpy.testing import assert_equal, assert_allclose
|
|
|
|
from ..shapes import Arc, Ellipse
|
|
|
|
|
|
def test_shape_mirror() -> None:
|
|
e = Ellipse(radii=(10, 5), offset=(10, 20), rotation=pi / 4)
|
|
e.mirror(0)
|
|
assert_equal(e.offset, [10, 20])
|
|
assert_allclose(e.rotation, 3 * pi / 4, atol=1e-10)
|
|
|
|
a = Arc(radii=(10, 10), angles=(0, pi / 4), width=2, offset=(10, 20))
|
|
a.mirror(0)
|
|
assert_equal(a.offset, [10, 20])
|
|
assert_allclose(a.angles, [0, -pi / 4], atol=1e-10)
|
|
|
|
a = Arc(radii=(10, 5), angles=(0, pi / 4), width=2, angle_ref=Arc.AngleRef.FocusPos)
|
|
a.mirror(1)
|
|
assert a.angle_ref == Arc.AngleRef.FocusNeg
|
|
|
|
a = Arc(radii=(5, 10), angles=(0, pi / 4), width=2, angle_ref=Arc.AngleRef.FocusPos)
|
|
a.mirror(0)
|
|
assert a.angle_ref == Arc.AngleRef.FocusNeg
|
|
|
|
def test_shape_flip_across() -> None:
|
|
e = Ellipse(radii=(10, 5), offset=(10, 20), rotation=pi / 4)
|
|
e.flip_across(axis=0)
|
|
assert_equal(e.offset, [10, -20])
|
|
assert_allclose(e.rotation, 3 * pi / 4, atol=1e-10)
|
|
|
|
e = Ellipse(radii=(10, 5), offset=(10, 20))
|
|
e.flip_across(y=10)
|
|
assert_equal(e.offset, [10, 0])
|
|
|
|
def test_shape_scale() -> None:
|
|
e = Ellipse(radii=(10, 5))
|
|
e.scale_by(2)
|
|
assert_equal(e.radii, [20, 10])
|
|
|
|
a = Arc(radii=(10, 5), angles=(0, pi), width=2)
|
|
a.scale_by(0.5)
|
|
assert_equal(a.radii, [5, 2.5])
|
|
assert a.width == 1
|