def test_assertion_for_getter(): """Test assertion for empty Coordinates objects""" coords = Coordinates() with raises(ValueError, match="Object is empty"): coords.get_cart() with raises(ValueError, match="Object is empty"): coords.get_sph() with raises(ValueError, match="Object is empty"): coords.get_cyl()
def test_getter_with_degrees(): """Test if getter return correct values also in degrees""" coords = Coordinates(0, 1, 0) sph = coords.get_sph(unit="deg") npt.assert_allclose(sph, np.atleast_2d([90, 90, 1])) cyl = coords.get_cyl(unit="deg") npt.assert_allclose(cyl, np.atleast_2d([90, 0, 1]))
def test_orientations_from_view_up_show_coordinate_system_change( views, ups, positions): """ Create `Orientations` from view and up vectors in the spherical domain as well as in the carteesian domain, and visualize both to compare them manually by eye. """ # Carteesian: Visualize to manually validate orientations views = np.asarray(views) ups = np.asarray(ups) views = Coordinates(views[:, 0], views[:, 1], views[:, 2]) ups = Coordinates(ups[:, 0], ups[:, 1], ups[:, 2]) positions = np.asarray(positions) positions = Coordinates(positions[:, 0], positions[:, 1], positions[:, 2]) orient_from_cart = Orientations.from_view_up(views, ups) orient_from_cart.show(positions) # Convert to spherical: And again visualize to manually validate views.get_sph(convert=True) ups.get_sph(convert=True) positions.get_sph(convert=True) orient_from_sph = Orientations.from_view_up(views, ups) orient_from_sph.show(positions) # Check if coordinate system has not been changed by orientations assert views._system['domain'] == 'sph', ( "Coordinate system has been changed by Orientations.") assert ups._system['domain'] == 'sph', ( "Coordinate system has been changed by Orientations.") assert positions._system['domain'] == 'sph', ( "Coordinate system has been changed by Orientations.show().")