Skip to content
Snippets Groups Projects
Commit 5bb65a8d authored by Jan David Mol's avatar Jan David Mol
Browse files

L2SS-554: Test is_valid_direction, make its implementation more solid, and use...

L2SS-554: Test is_valid_direction, make its implementation more solid, and use it when converting directions
parent 003b67cc
No related branches found
No related tags found
No related merge requests found
...@@ -53,18 +53,19 @@ class delay_calculator: ...@@ -53,18 +53,19 @@ class delay_calculator:
def is_valid_direction(self, direction): def is_valid_direction(self, direction):
try: try:
_ = self.measure.direction(*direction) _ = self.measure.direction(*direction)
except RuntimeError as e: except (RuntimeError, TypeError) as e:
return False return False
return True return True
def convert(self, direction, antenna_itrf: list([float])): def convert(self, direction, antenna_itrf: list([float])):
try: # explicitly check validity to get a proper error message
# obtain the direction vector for a specific pointing if not self.is_valid_direction(direction):
pointing = self.measure.direction(*direction)
except RuntimeError as e:
raise ValueError(f"Could not convert direction {direction} into a pointing") from e raise ValueError(f"Could not convert direction {direction} into a pointing") from e
# obtain the direction vector for a specific pointing
pointing = self.measure.direction(*direction)
reference_dir_vector = self.get_direction_vector(pointing) reference_dir_vector = self.get_direction_vector(pointing)
# # compute the delays for an antennas w.r.t. the reference position # # compute the delays for an antennas w.r.t. the reference position
......
...@@ -18,6 +18,29 @@ class TestDelays(base.TestCase): ...@@ -18,6 +18,29 @@ class TestDelays(base.TestCase):
self.assertIsNotNone(d) self.assertIsNotNone(d)
def test_is_valid_direction(self):
d = delay_calculator([0, 0, 0])
# should accept base use cases
self.assertTrue(d.is_valid_direction(("J2000", "0deg", "0deg")))
self.assertTrue(d.is_valid_direction(("J2000", "270deg", "90deg")))
self.assertTrue(d.is_valid_direction(("AZELGEO", "0deg", "0deg")))
self.assertTrue(d.is_valid_direction(("AZELGEO", "270deg", "90deg")))
self.assertTrue(d.is_valid_direction(("SUN", "0deg", "0deg")))
# i dont get these either, but casacore accepts them
self.assertTrue(d.is_valid_direction([]))
self.assertTrue(d.is_valid_direction(("J2000",)))
self.assertTrue(d.is_valid_direction(("J2000", "0deg",)))
self.assertTrue(d.is_valid_direction(("J2000", "0deg", "0deg", "0deg")))
# should not throw, and return False, on bad uses
self.assertFalse(d.is_valid_direction(("", "", "")))
self.assertFalse(d.is_valid_direction(("J2000", "0deg", "0deg", "0deg", "0deg")))
self.assertFalse(d.is_valid_direction((1, 2, 3)))
self.assertFalse(d.is_valid_direction("foo"))
self.assertFalse(d.is_valid_direction(None))
def test_sun(self): def test_sun(self):
# # create a frame tied to the reference position # # create a frame tied to the reference position
reference_itrf = [3826577.066, 461022.948, 5064892.786] reference_itrf = [3826577.066, 461022.948, 5064892.786]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment