예제 #1
0
    def test_output(self,
                    elements=[
                        "_test_ct_1_1", "_test_ct_1_2", "_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)

            # Check initial state of all kind of channels, nonexistent
            # channels for the feature return None as result.
            enabled = mg.getOutput(*elements)
            expected = [True] * len(elements)
            self._assertMultipleResults(enabled, elements, expected)

            # Test every possible combination of setting values
            # Check that changing one channel doesn't affect the other
            mg.setOutput(False, *elements)
            is_output = mg.getOutput(*elements)
            self._assertResult(is_output, elements, False)
            mg.setOutput(True, elements[0])
            result = mg.getOutput(*elements)
            expected = [False] * len(elements)
            expected[0] = True
            self._assertMultipleResults(result, elements, expected)
            mg.setOutput(False, *elements)
            is_output = mg.getOutput(*elements)
            self._assertResult(is_output, elements, False)

            # Redefine elements to ony use existing values
            elements = ["_test_ct_1_1", "_test_ct_1_2"]

            # Set values using the controller instead of channels
            mg.setOutput(True, "_test_ct_ctrl_1")
            is_output = mg.getOutput(*elements)
            self._assertResult(is_output, elements, True)

            # Get values by controller
            mg.setOutput(False, *elements)
            is_output = mg.getOutput("_test_ct_ctrl_1")
            self._assertResult(is_output, elements, False)

            # Check ret_full_name
            v = TangoDeviceNameValidator()
            full_names = [v.getNames(element)[0] for element in elements]
            is_output = mg.getOutput(*full_names)
            self._assertResult(is_output, elements, False)
            mg.setOutput(True, *full_names)
            is_output = mg.getOutput(*elements, ret_full_name=True)
            self._assertResult(is_output, full_names, True)
        finally:
            mg.cleanUp()
            self.pool.DeleteElement(mg_name)