import unittest
from pyplanetarium import SpotShape
class ShapeCase(unittest.TestCase):
def test_init(self) -> None:
shape1 = SpotShape()
self.assertIsInstance(shape1, SpotShape)
self.assertEqual(str(shape1), "[[1, 0], [0, 1]]")
self.assertEqual(
repr(shape1), "SpotShape { xx: 1.0, xy: 0.0, yx: 0.0, yy: 1.0 }"
)
shape2 = shape1.scale(3.5)
self.assertNotEqual(shape1, shape2)
shape3 = SpotShape(3.5)
self.assertIsInstance(shape3, SpotShape)
self.assertEqual(str(shape3), "[[3.5, 0], [0, 3.5]]")
self.assertEqual(
repr(shape3), "SpotShape { xx: 3.5, xy: 0.0, yx: 0.0, yy: 3.5 }"
)
shape4 = SpotShape((3.5, 2.5))
self.assertIsInstance(shape4, SpotShape)
self.assertEqual(str(shape4), "[[3.5, 0], [0, 2.5]]")
self.assertEqual(
repr(shape4), "SpotShape { xx: 3.5, xy: 0.0, yx: 0.0, yy: 2.5 }"
)
shape5 = SpotShape([[3.5, 0.5], [-0.5, 2.5]])
self.assertIsInstance(shape5, SpotShape)
self.assertEqual(str(shape5), "[[3.5, 0.5], [-0.5, 2.5]]")
self.assertEqual(
repr(shape5), "SpotShape { xx: 3.5, xy: 0.5, yx: -0.5, yy: 2.5 }"
)
shape6 = SpotShape(3)
self.assertIsInstance(shape6, SpotShape)
shape7 = SpotShape((3, 2))
self.assertIsInstance(shape7, SpotShape)
shape8 = SpotShape([[3, 0], [0, 2]])
self.assertIsInstance(shape8, SpotShape)
def test_init_err(self) -> None:
with self.assertRaises(TypeError):
SpotShape({})
with self.assertRaises(TypeError):
SpotShape("1")
with self.assertRaises(TypeError):
SpotShape((1,))
with self.assertRaises(TypeError):
SpotShape([])
with self.assertRaises(TypeError):
SpotShape([1])
with self.assertRaises(TypeError):
SpotShape([1, 2])
with self.assertRaises(TypeError):
SpotShape([1, 2, 3])
with self.assertRaises(TypeError):
SpotShape([[1, 2], 2])
with self.assertRaises(TypeError):
SpotShape([[1, 2], [2]])
with self.assertRaises(TypeError):
SpotShape([[1, 2], [2, 3, 4]])
with self.assertRaises(TypeError):
SpotShape([[1, 2], [2, 3], 4])
if __name__ == "__main__":
unittest.main()