Source code for sardana.macroserver.macros.test.test_list

#!/usr/bin/env python

##############################################################################
##
# This file is part of Sardana
##
# http://www.sardana-controls.org/
##
# Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain
##
# Sardana is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
##
# Sardana is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
##
# You should have received a copy of the GNU Lesser General Public License
# along with Sardana.  If not, see <http://www.gnu.org/licenses/>.
##
##############################################################################

"""Tests for list macros"""

import time
from taurus.external import unittest
from sardana.macroserver.macros.test import (RunMacroTestCase, testRun,
                                             SarDemoEnv)


[docs]class LsTest(RunMacroTestCase): """Base class for testing macros used to list elements. See :class:`.RunMacroTestCase` for requirements. LsTest use the lists of elem_type generated by :class:`.SarDemoEnv` as reference for compare with the output of the tested ls macro. LsTest provide the class member: - elem_type (str): Type of the element to validate (mandatory). Must be a valid type for :class:`.SarDemoEnv` class. It provides the helper method: - :meth:`check_elements` """ elem_type = None
[docs] def check_elements(self, list1, list2): """ A helper method to evaluate if all elements of list1 are in list2. :params list1: (seq<str>) List of elements to evaluate. :params list2: (seq<str>) List of elements for validate. """ for elem in list1: msg = "{0} does not contain {1}".format(self.macro_name, elem) self.assertTrue(elem in list2, msg)
[docs] def macro_runs(self, **kwargs): """ Reimplementation of macro_runs method for ls macros. It verifies that elements (elem_type) gotten by parsing the macro executor log output are in the correspondent list (elem_type) of SardanaEnv. """ RunMacroTestCase.macro_runs(self, **kwargs) self.log_output = self.macro_executor.getLog("output") msg = "generic ls macro does not contain elements" self.assertTrue(len(self.log_output) > 0, msg) if (self.elem_type is not None): list_sardemo = SarDemoEnv().getElements(self.elem_type) else: raise Exception("element_type cannot be None") # parsing log output to get all elements header_rows = 2 names_column_index = 0 macro_output = [] for row, in self.log_output[header_rows:]: macro_output.append(row.split()[names_column_index]) # Evaluate if element of A are in B if len(macro_output) >= len(list_sardemo): self.check_elements(list_sardemo, macro_output) else: self.check_elements(macro_output, list_sardemo)
[docs]@testRun(macro_params=['l.*']) @testRun class LsmTest(LsTest, unittest.TestCase): """Class used for testing the 'lsm' macro. It verifies that all motors created by sar_demo are listed after execution of the macro 'lsm'. """ macro_name = "lsm" elem_type = "moveable"
[docs]@testRun class LspmTest(LsTest, unittest.TestCase): """Class used for testing the 'lspm' macro. It verifies that all pseudomotors created by sar_demo are listed after execution of the macro 'lspm'. """ macro_name = "lspm" elem_type = "pseudomotor"
[docs]@testRun class LsctrlTest(LsTest, unittest.TestCase): """Class used for testing the 'lsctrl' macro. It verifies that all controllers created by sar_demo are listed after execution of the macro 'lsctrl'. """ macro_name = "lsctrl" elem_type = "controller"
[docs]@testRun class LsctTest(LsTest, unittest.TestCase): """Class used for testing the 'lsct' macro. It verifies that all ct created by sar_demo are listed after execution of the macro 'lsct'. """ macro_name = "lsct" elem_type = "ctexpchannel"
[docs]@testRun class Ls0dTest(LsTest, unittest.TestCase): """Class used for testing the 'ls0d' macro. It verifies that all 0d created by sar_demo are listed after execution of the macro 'ls0d'. """ macro_name = "ls0d" elem_type = "zerodexpchannel"
[docs]@testRun class Ls1dTest(LsTest, unittest.TestCase): """Class used for testing the 'ls1d' macro. It verifies that all 1d created by sar_demo are listed after execution of the macro 'ls1d'. """ macro_name = "ls1d" elem_type = "onedexpchannel"
[docs]@testRun class Ls2dTest(LsTest, unittest.TestCase): """Class used for testing the 'ls2d' macro. It verifies that all 2d created by sar_demo are listed after execution of the macro 'ls2d'. """ macro_name = "ls2d" elem_type = "twodexpchannel"
@testRun @testRun(macro_params=["w.*"]) class LsdefTest(RunMacroTestCase, unittest.TestCase): macro_name = "lsdef" @testRun @testRun(macro_params=["Dummy.*"]) class LsctrllibTest(RunMacroTestCase, unittest.TestCase): macro_name = "lsctrllib" @testRun @testRun(macro_params=["mot.*"]) class LsiTest(RunMacroTestCase, unittest.TestCase): macro_name = "lsi" @testRun @testRun(macro_params=["mot.*"]) class LsaTest(RunMacroTestCase, unittest.TestCase): macro_name = "lsa" @testRun @testRun(macro_params=["mot.*"]) class LsmeasTest(RunMacroTestCase, unittest.TestCase): macro_name = "lsmeas" @testRun @testRun(macro_params=["w.*"]) class LsmacTest(RunMacroTestCase, unittest.TestCase): macro_name = "lsmac" @testRun @testRun(macro_params=["s.*"]) class LsmaclibTest(RunMacroTestCase, unittest.TestCase): macro_name = "lsmaclib"