class TestVliegPositionTransformer(unittest.TestCase): def setUp(self): names = 'a', 'd', 'g', 'o', 'c', 'phi' self.hardware = DummyHardwareAdapter(names) self.geometry = SixCircleGammaOnArmGeometry() self.transform_selector = VliegTransformSelector() self.transformer = VliegPositionTransformer( self.geometry, self.hardware, self.transform_selector) self.transform_commands = TransformCommands(self.transform_selector) diffcalc.util.RAISE_EXCEPTIONS_FOR_ALL_ERRORS = True def map(self, pos): # @ReservedAssignment pos = self.transformer.transform(pos) angle_tuple = self.geometry.internal_position_to_physical_angles(pos) angle_tuple = self.hardware.cut_angles(angle_tuple) return angle_tuple def testMapDefaultSector(self): eq_(self.map(Pos(1, 2, 3, 4, 5, 6)), (1, 2, 3, 4, 5, 6)) eq_(self.map(Pos(-180, -179, 0, 179, 180, 359)), (-180, -179, 0, 179, 180, 359)) eq_(self.map(Pos(0, 0, 0, 0, 0, 0)), (0, 0, 0, 0, 0, 0)) eq_(self.map(Pos(-270, 270, 0, 0, 0, -90)), (90, -90, 0, 0, 0, 270)) def testMapSector1(self): self.transform_commands._sectorSelector.setSector(1) eq_(self.map(Pos(1, 2, 3, 4, 5, 6)), (1, 2, 3, 4 - 180, -5, (6 - 180) + 360)) eq_(self.map(Pos(-180, -179, 0, 179, 180, 359)), (-180, -179, 0, 179 - 180, -180, 359 - 180)) eq_(self.map(Pos(0, 0, 0, 0, 0, 0)), (0, 0, 0, 0 - 180, 0, (0 - 180) + 360)) eq_(self.map(Pos(-270, 270, 0, 0, 0, -90)), (90, -90, 0, 0 - 180, 0, 270 - 180)) def testMapAutoSector(self): self.transform_commands._sectorSelector.addAutoTransorm(1) self.hardware.set_lower_limit('c', 0) eq_(self.map(Pos(1, 2, 3, 4, -5, 6)), (1, 2, 3, 4 - 180, 5, (6 - 180) + 360)) eq_(self.map(Pos(-180, -179, 0, 179, -180, 359)), (-180, -179, 0, 179 - 180, 180, 359 - 180)) eq_(self.map(Pos(0, 0, 0, 0, -5, 0)), (0, 0, 0, 0 - 180, 5, (0 - 180) + 360)) eq_(self.map(Pos(-270, 270, 0, 0, -5, -90)), (90, -90, 0, 0 - 180, 5, 270 - 180)) def testTransform(self): # mapper self.transform_commands.transform() # should print its state self.assertRaises(TypeError, self.transform_commands.transform, 1) self.assertRaises(TypeError, self.transform_commands.transform, 'a', 1) def testTransformsOnOff(self): # transforma [on/off/auto/manual] ss = self.transform_commands._sectorSelector self.transform_commands.transforma() # should print mapper state eq_(ss.transforms, [], "test assumes transforms are off to start") self.transform_commands.transforma('on') eq_(ss.transforms, ['a']) self.transform_commands.transformb('on') eq_(ss.transforms, ['a', 'b']) self.transform_commands.transformc('off') eq_(ss.transforms, ['a', 'b']) self.transform_commands.transformb('off') eq_(ss.transforms, ['a']) def testTransformsAuto(self): ss = self.transform_commands._sectorSelector eq_(ss.autotransforms, [], "test assumes transforms are off to start") self.transform_commands.transforma('auto') eq_(ss.autotransforms, ['a']) self.transform_commands.transformb('auto') eq_(ss.autotransforms, ['a', 'b']) self.transform_commands.transformc('manual') eq_(ss.autotransforms, ['a', 'b']) self.transform_commands.transformb('manual') eq_(ss.autotransforms, ['a']) def testTransformsBadInput(self): transforma = self.transform_commands.transforma self.assertRaises(TypeError, transforma, 1) self.assertRaises(TypeError, transforma, 'not_valid') self.assertRaises(TypeError, transforma, 'auto', 1) def testSector(self): #sector [0-7] ss = self.transform_commands._sectorSelector self.transform_commands.sector() # should print mapper state eq_(ss.sector, 0, "test assumes sector is 0 to start") self.transform_commands.sector(1) eq_(ss.sector, 1) self.assertRaises(TypeError, self.transform_commands.sector, 1, 2) self.assertRaises(TypeError, self.transform_commands.sector, 'a') def testAutosectors(self): #autosector [0-7] ss = self.transform_selector self.transform_commands.autosector() # should print mapper state eq_(ss.autosectors, [], "test assumes no auto sectors to start") self.transform_commands.autosector(1) eq_(ss.autosectors, [1]) self.transform_commands.autosector(1, 2) eq_(ss.autosectors, [1, 2]) self.transform_commands.autosector(1) eq_(ss.autosectors, [1]) self.transform_commands.autosector(3) eq_(ss.autosectors, [3]) self.assertRaises( TypeError, self.transform_commands.autosector, 1, 'a') self.assertRaises( TypeError, self.transform_commands.autosector, 'a')
class TestVliegPositionTransformer(object): def setup_method(self): names = 'a', 'd', 'g', 'o', 'c', 'phi' self.hardware = DummyHardwareAdapter(names) self.geometry = SixCircleGammaOnArmGeometry() self.transform_selector = VliegTransformSelector() self.transformer = VliegPositionTransformer(self.geometry, self.hardware, self.transform_selector) self.transform_commands = TransformCommands(self.transform_selector) diffcalc.util.RAISE_EXCEPTIONS_FOR_ALL_ERRORS = True def map(self, pos): # @ReservedAssignment pos = self.transformer.transform(pos) angle_tuple = self.geometry.internal_position_to_physical_angles(pos) angle_tuple = self.hardware.cut_angles(angle_tuple) return angle_tuple def testMapDefaultSector(self): eq_(self.map(Pos(1, 2, 3, 4, 5, 6)), (1, 2, 3, 4, 5, 6)) eq_(self.map(Pos(-180, -179, 0, 179, 180, 359)), (-180, -179, 0, 179, 180, 359)) eq_(self.map(Pos(0, 0, 0, 0, 0, 0)), (0, 0, 0, 0, 0, 0)) eq_(self.map(Pos(-270, 270, 0, 0, 0, -90)), (90, -90, 0, 0, 0, 270)) def testMapSector1(self): self.transform_commands._sectorSelector.setSector(1) eq_(self.map(Pos(1, 2, 3, 4, 5, 6)), (1, 2, 3, 4 - 180, -5, (6 - 180) + 360)) eq_(self.map(Pos(-180, -179, 0, 179, 180, 359)), (-180, -179, 0, 179 - 180, -180, 359 - 180)) eq_(self.map(Pos(0, 0, 0, 0, 0, 0)), (0, 0, 0, 0 - 180, 0, (0 - 180) + 360)) eq_(self.map(Pos(-270, 270, 0, 0, 0, -90)), (90, -90, 0, 0 - 180, 0, 270 - 180)) def testMapAutoSector(self): self.transform_commands._sectorSelector.addAutoTransorm(1) self.hardware.set_lower_limit('c', 0) eq_(self.map(Pos(1, 2, 3, 4, -5, 6)), (1, 2, 3, 4 - 180, 5, (6 - 180) + 360)) eq_(self.map(Pos(-180, -179, 0, 179, -180, 359)), (-180, -179, 0, 179 - 180, 180, 359 - 180)) eq_(self.map(Pos(0, 0, 0, 0, -5, 0)), (0, 0, 0, 0 - 180, 5, (0 - 180) + 360)) eq_(self.map(Pos(-270, 270, 0, 0, -5, -90)), (90, -90, 0, 0 - 180, 5, 270 - 180)) def testTransform(self): # mapper self.transform_commands.transform() # should print its state with pytest.raises(TypeError): self.transform_commands.transform(1) with pytest.raises(TypeError): self.transform_commands.transform('a', 1) def testTransformsOnOff(self): # transforma [on/off/auto/manual] ss = self.transform_commands._sectorSelector self.transform_commands.transforma() # should print mapper state eq_(ss.transforms, [], "test assumes transforms are off to start") self.transform_commands.transforma('on') eq_(ss.transforms, ['a']) self.transform_commands.transformb('on') eq_(ss.transforms, ['a', 'b']) self.transform_commands.transformc('off') eq_(ss.transforms, ['a', 'b']) self.transform_commands.transformb('off') eq_(ss.transforms, ['a']) def testTransformsAuto(self): ss = self.transform_commands._sectorSelector eq_(ss.autotransforms, [], "test assumes transforms are off to start") self.transform_commands.transforma('auto') eq_(ss.autotransforms, ['a']) self.transform_commands.transformb('auto') eq_(ss.autotransforms, ['a', 'b']) self.transform_commands.transformc('manual') eq_(ss.autotransforms, ['a', 'b']) self.transform_commands.transformb('manual') eq_(ss.autotransforms, ['a']) def testTransformsBadInput(self): transforma = self.transform_commands.transforma with pytest.raises(TypeError): transforma(1) with pytest.raises(TypeError): transforma('not_valid') with pytest.raises(TypeError): transforma('auto', 1) def testSector(self): #sector [0-7] ss = self.transform_commands._sectorSelector self.transform_commands.sector() # should print mapper state eq_(ss.sector, 0, "test assumes sector is 0 to start") self.transform_commands.sector(1) eq_(ss.sector, 1) with pytest.raises(TypeError): self.transform_commands.sector(1, 2) with pytest.raises(TypeError): self.transform_commands.sector('a') def testAutosectors(self): #autosector [0-7] ss = self.transform_selector self.transform_commands.autosector() # should print mapper state eq_(ss.autosectors, [], "test assumes no auto sectors to start") self.transform_commands.autosector(1) eq_(ss.autosectors, [1]) self.transform_commands.autosector(1, 2) eq_(ss.autosectors, [1, 2]) self.transform_commands.autosector(1) eq_(ss.autosectors, [1]) self.transform_commands.autosector(3) eq_(ss.autosectors, [3]) with pytest.raises(TypeError): self.transform_commands.autosector(1, 'a') with pytest.raises(TypeError): self.transform_commands.autosector('a')