def test_setting_position(self): section = BaseSection() self.assertRaises(AttributeError, setattr, section, "position", (0, 0, 0)) section.set_position(d1=1) self.assertIsInstance(section.position[0], float) self.assertEqual(section.position, (1.0, 0.0, 0.0)) section.set_position(d2=2) self.assertIsInstance(section.position[1], float) self.assertEqual(section.position, (1.0, 2.0, 0.0)) section.set_position(theta=3) self.assertIsInstance(section.position[2], float) self.assertEqual(section.position, (1.0, 2.0, 3.0)) section.set_position(4, 5, 6) self.assertEqual(section.position, (4.0, 5.0, 6.0))
def test_vector_transformation(self): section = BaseSection() v1 = (2.0, 3.0) v2 = (0.0, 0.0) section.set_position(d1=-2.0, d2=0.0, theta=0.0) self.assertEqual(section.transform_to_global(v1), (0.0, 3.0)) self.assertEqual(section.transform_to_global(v2), (-2.0, 0.0)) section.set_position(d1=0.0, d2=-3.0, theta=0.0) self.assertEqual(section.transform_to_global(v1), (2.0, 0.0)) self.assertEqual(section.transform_to_global(v2), (0.0, -3.0)) section.set_position(d1=0.0, d2=0.0, theta=pi/2) self.assertAlmostEqual(section.transform_to_global(v1)[0], -3.0) self.assertAlmostEqual(section.transform_to_global(v1)[1], 2.0) self.assertAlmostEqual(section.transform_to_global(v2)[0], 0.0) self.assertAlmostEqual(section.transform_to_global(v2)[1], 0.0) section.set_position(d1=3.0, d2=-2.0, theta=pi/2) self.assertAlmostEqual(section.transform_to_global(v1)[0], 0.0) self.assertAlmostEqual(section.transform_to_global(v1)[1], 0.0) self.assertAlmostEqual(section.transform_to_global(v2)[0], 3.0) self.assertAlmostEqual(section.transform_to_global(v2)[1], -2.0)
def test_vector_transformation(self): section = BaseSection() v1 = (2.0, 3.0) v2 = (0.0, 0.0) section.set_position(d1=-2.0, d2=0.0, theta=0.0) self.assertEqual(section.transform_to_global(v1), (0.0, 3.0)) self.assertEqual(section.transform_to_global(v2), (-2.0, 0.0)) section.set_position(d1=0.0, d2=-3.0, theta=0.0) self.assertEqual(section.transform_to_global(v1), (2.0, 0.0)) self.assertEqual(section.transform_to_global(v2), (0.0, -3.0)) section.set_position(d1=0.0, d2=0.0, theta=pi / 2) self.assertAlmostEqual(section.transform_to_global(v1)[0], -3.0) self.assertAlmostEqual(section.transform_to_global(v1)[1], 2.0) self.assertAlmostEqual(section.transform_to_global(v2)[0], 0.0) self.assertAlmostEqual(section.transform_to_global(v2)[1], 0.0) section.set_position(d1=3.0, d2=-2.0, theta=pi / 2) self.assertAlmostEqual(section.transform_to_global(v1)[0], 0.0) self.assertAlmostEqual(section.transform_to_global(v1)[1], 0.0) self.assertAlmostEqual(section.transform_to_global(v2)[0], 3.0) self.assertAlmostEqual(section.transform_to_global(v2)[1], -2.0)
def test_symmetric_matrix_transformation(self): # Symmetric matrix is defined by (m11, m22, m12) # Position of the origin should have no influence on matrix components # Transformation should only depend on rotation of the section section = BaseSection() m1 = (1.0, 1.0, 0.0) m2 = (1.0, 2.0, 3.0) section.set_position(d1=2.0, d2=0.0, theta=0.0) self.assertEqual(section.transform_to_global(m1), m1) self.assertEqual(section.transform_to_global(m2), m2) section.set_position(d1=0.0, d2=3.0, theta=0.0) self.assertEqual(section.transform_to_global(m1), m1) self.assertEqual(section.transform_to_global(m2), m2) section.set_position(d1=0.0, d2=0.0, theta=pi/2) self.assertAlmostEqual(section.transform_to_global(m1)[0], 1.0) self.assertAlmostEqual(section.transform_to_global(m1)[1], 1.0) self.assertAlmostEqual(section.transform_to_global(m1)[2], 0.0) self.assertAlmostEqual(section.transform_to_global(m2)[0], 2.0) self.assertAlmostEqual(section.transform_to_global(m2)[1], 1.0) self.assertAlmostEqual(section.transform_to_global(m2)[2], -3.0)
def test_symmetric_matrix_transformation(self): # Symmetric matrix is defined by (m11, m22, m12) # Position of the origin should have no influence on matrix components # Transformation should only depend on rotation of the section section = BaseSection() m1 = (1.0, 1.0, 0.0) m2 = (1.0, 2.0, 3.0) section.set_position(d1=2.0, d2=0.0, theta=0.0) self.assertEqual(section.transform_to_global(m1), m1) self.assertEqual(section.transform_to_global(m2), m2) section.set_position(d1=0.0, d2=3.0, theta=0.0) self.assertEqual(section.transform_to_global(m1), m1) self.assertEqual(section.transform_to_global(m2), m2) section.set_position(d1=0.0, d2=0.0, theta=pi / 2) self.assertAlmostEqual(section.transform_to_global(m1)[0], 1.0) self.assertAlmostEqual(section.transform_to_global(m1)[1], 1.0) self.assertAlmostEqual(section.transform_to_global(m1)[2], 0.0) self.assertAlmostEqual(section.transform_to_global(m2)[0], 2.0) self.assertAlmostEqual(section.transform_to_global(m2)[1], 1.0) self.assertAlmostEqual(section.transform_to_global(m2)[2], -3.0)