예제 #1
0
    def test_PlotAxes(self,
                      elements=[
                          "_test_ct_1_1", "_test_ct_1_2", "_test_ct_1_3",
                          "_test_2d_1_3", "_test_mt_1_3/position"
                      ]):
        mg_name = str(uuid.uuid1())
        argin = [mg_name] + elements
        self.pool.CreateMeasurementGroup(argin)

        try:
            mg = Device(mg_name)
            mg.setPlotType("Image", elements[0])
            mg.setPlotType("Spectrum", elements[1])
            mg.setPlotType("No", elements[2])
            mg.setPlotType("Image", elements[3])
            mg.setPlotType("Image", elements[4])
            result = mg.getPlotAxes()
            self._assertResult(result, elements, [])

            mg.setPlotAxes(["<idx>", "<idx>"], elements[0])
            mg.setPlotAxes(["<mov>"], elements[1])
            with self.assertRaises(Exception):
                mg.setPlotAxes(['<mov>'], elements[2])
            mg.setPlotAxes(["<idx>", "<idx>"], elements[3])
            mg.setPlotAxes(["<idx>", "<idx>"], elements[4])

            result = mg.getPlotAxes()
            expected_result = [['<idx>', '<idx>'], ['<mov>'], [],
                               ['<idx>', '<idx>'], ['<idx>', '<idx>']]
            self._assertMultipleResults(result, elements, expected_result)

            mg.setPlotAxes(["<mov>", "<idx>"], elements[0])
            mg.setPlotAxes(["<idx>"], elements[1])
            result = mg.getPlotAxes()
            expected_result = [['<mov>', '<idx>'], ['<idx>'], [],
                               ['<idx>', '<idx>'], ['<idx>', '<idx>']]
            self._assertMultipleResults(result, elements, expected_result)

            mg.setPlotAxes(["<mov>", "<mov>"], elements[0])
            result = mg.getPlotAxes()
            expected_result = [['<mov>', '<mov>'], ['<idx>'], [],
                               ['<idx>', '<idx>'], ['<idx>', '<idx>']]
            self._assertMultipleResults(result, elements, expected_result)

            with self.assertRaises(RuntimeError):
                mg.setPlotAxes(["<mov>"], elements[2])
            with self.assertRaises(ValueError):
                mg.setPlotAxes(["<mov>", "<idx>"], elements[1])
            with self.assertRaises(ValueError):
                mg.setPlotAxes(["<mov>"], elements[0])

            elements = ["_test_ct_1_1", "_test_ct_1_2", "_test_ct_1_3"]
            # Set values using the controller instead of channels
            with self.assertRaises(Exception):
                mg.setPlotAxes(["<mov>"], "_test_ct_ctrl_1")
            # TODO get method by controller doesn't give the order
            # Get values by controller
            result = mg.getPlotAxes("_test_ct_ctrl_1")
            expected_result = [['<mov>', '<mov>'], ['<idx>'], []]
            self._assertMultipleResults(result, elements, expected_result)

            # Check ret_full_name
            v = TangoDeviceNameValidator()
            full_names = [v.getNames(element)[0] for element in elements]
            result = mg.getPlotAxes(*full_names)
            expected_result = [['<mov>', '<mov>'], ['<idx>'], []]
            self._assertMultipleResults(result, elements, expected_result)
            mg.setPlotAxes(["<idx>", "<idx>"], full_names[0])
            mg.setPlotAxes(["<mov>"], full_names[1])
            result = mg.getPlotAxes(*elements, ret_full_name=True)
            expected_result = [['<idx>', '<idx>'], ['<mov>'], []]
            self._assertMultipleResults(result, full_names, expected_result)
        finally:
            mg.cleanUp()
            self.pool.DeleteElement(mg_name)