Module EDTestCaseEDPlugin
[hide private]
[frames] | no frames]

Source Code for Module EDTestCaseEDPlugin

  1  # 
  2  #    Project: The EDNA Kernel 
  3  #             http://www.edna-site.org 
  4  # 
  5  #    File: "$Id$" 
  6  # 
  7  #    Copyright (C) 2008-2009 European Synchrotron Radiation Facility 
  8  #                            Grenoble, France 
  9  # 
 10  #    Principal authors: Marie-Francoise Incardona (incardon@esrf.fr) 
 11  #                       Olof Svensson (svensson@esrf.fr)  
 12  # 
 13  #    This program is free software: you can redistribute it and/or modify 
 14  #    it under the terms of the GNU Lesser General Public License as published 
 15  #    by the Free Software Foundation, either version 3 of the License, or 
 16  #    (at your option) any later version. 
 17  # 
 18  #    This program is distributed in the hope that it will be useful, 
 19  #    but WITHOUT ANY WARRANTY; without even the implied warranty of 
 20  #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 21  #    GNU Lesser General Public License for more details. 
 22  # 
 23  #    You should have received a copy of the GNU General Public License 
 24  #    and the GNU Lesser General Public License  along with this program.   
 25  #    If not, see <http://www.gnu.org/licenses/>. 
 26  # 
 27   
 28   
 29  from __future__ import with_statement 
 30  __authors__ = [ "Marie-Francoise Incardona", "Olof Svensson" ] 
 31  __contact__ = "svensson@esrf.fr" 
 32  __license__ = "LGPLv3+" 
 33  __copyright__ = "European Synchrotron Radiation Facility, Grenoble, France" 
 34   
 35  import os 
 36  from EDAssert   import EDAssert 
 37  from EDPlugin   import EDPlugin 
 38  from EDTestCase import EDTestCase 
 39   
 40  from XSDataCommon import XSDataString 
 41  from XSDataCommon import XSDataResult 
 42   
 43   
 44   
45 -class EDTestCaseEDPlugin(EDTestCase):
46 """ 47 This is the test case for the plugin base class EDPlugin. 48 """ 49
50 - def testSetDataInput(self):
51 """ 52 Test the setDataInput method with different inputs 53 """ 54 # Test 1: default input with XML 55 edPlugin = EDPlugin() 56 edPlugin.setXSDataInputClass(XSDataString) 57 xsDataStringTest = XSDataString("Test") 58 edPlugin.setDataInput(xsDataStringTest.marshal()) 59 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.getDataInput().marshal(), "Test 1: default input with XML") 60 # Test 2: default input with object 61 edPlugin = EDPlugin() 62 edPlugin.setXSDataInputClass(XSDataString) 63 xsDataStringTest = XSDataString("Test") 64 edPlugin.setDataInput(xsDataStringTest) 65 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.getDataInput().marshal(), "Test 2: default input with object") 66 # Test 3: named input with XML 67 edPlugin = EDPlugin() 68 edPlugin.setXSDataInputClass(XSDataString, "testData") 69 xsDataStringTest = XSDataString("Test") 70 edPlugin.setDataInput(xsDataStringTest.marshal(), "testData") 71 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.getDataInput("testData")[0].marshal(), "Test 3: named input with XML") 72 # Test 4: named input with object 73 edPlugin = EDPlugin() 74 edPlugin.setXSDataInputClass(XSDataString, "testData") 75 xsDataStringTest = XSDataString("Test") 76 edPlugin.setDataInput(xsDataStringTest, "testData") 77 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.getDataInput("testData")[0].marshal(), "Test 4: named input with object") 78 # Test 4: several inputs with the same name, XML input 79 edPlugin = EDPlugin() 80 edPlugin.setXSDataInputClass(XSDataString, "testData") 81 xsDataStringTest1 = XSDataString("Test1") 82 xsDataStringTest2 = XSDataString("Test2") 83 edPlugin.setDataInput(xsDataStringTest1.marshal(), "testData") 84 edPlugin.setDataInput(xsDataStringTest2.marshal(), "testData") 85 pyListDataInput = edPlugin.getDataInput("testData") 86 EDAssert.equal(xsDataStringTest1.marshal(), pyListDataInput[0].marshal(), "Test 4: several inputs with the same name, XML input, 1") 87 EDAssert.equal(xsDataStringTest2.marshal(), pyListDataInput[1].marshal(), "Test 4: several inputs with the same name, XML input, 2") 88 # Test 5: several inputs with the same name, object input 89 edPlugin = EDPlugin() 90 edPlugin.setXSDataInputClass(XSDataString, "testData") 91 xsDataStringTest1 = XSDataString("Test1") 92 xsDataStringTest2 = XSDataString("Test2") 93 edPlugin.setDataInput(xsDataStringTest1, "testData") 94 edPlugin.setDataInput(xsDataStringTest2, "testData") 95 pyListDataInput = edPlugin.getDataInput("testData") 96 EDAssert.equal(xsDataStringTest1.marshal(), pyListDataInput[0].marshal(), "Test 5: several inputs with the same name, object input, 1") 97 EDAssert.equal(xsDataStringTest2.marshal(), pyListDataInput[1].marshal(), "Test 5: several inputs with the same name, object input, 2") 98 # Test 6: test of delDataInput 99 edPlugin = EDPlugin() 100 edPlugin.setXSDataInputClass(XSDataString) 101 xsDataStringTest = XSDataString("Test") 102 edPlugin.setDataInput(xsDataStringTest.marshal()) 103 edPlugin.delDataInput() 104 EDAssert.equal(None, edPlugin.getDataInput(), "Test 6: test of delDataInput")
105 106
107 - def testSetDataOutput(self):
108 """ 109 Test the setDataOutput method with different arguments 110 """ 111 # Test 1: default output 112 edPlugin = EDPlugin() 113 xsDataStringTest = XSDataString("Test") 114 edPlugin.setDataOutput(xsDataStringTest) 115 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.getDataOutput().marshal(), "Test 1: default output") 116 # Test 2: named output 117 edPlugin = EDPlugin() 118 xsDataStringTest = XSDataString("Test") 119 edPlugin.setDataOutput(xsDataStringTest, "testData") 120 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.getDataOutput("testData")[0].marshal(), "Test 2: named output") 121 # Test 3: several inputs with the same name 122 edPlugin = EDPlugin() 123 xsDataStringTest1 = XSDataString("Test1") 124 xsDataStringTest2 = XSDataString("Test2") 125 edPlugin.setDataOutput(xsDataStringTest1, "testData") 126 edPlugin.setDataOutput(xsDataStringTest2, "testData") 127 pyListDataOutput = edPlugin.getDataOutput("testData") 128 EDAssert.equal(xsDataStringTest1.marshal(), pyListDataOutput[0].marshal(), "Test 3: several inputs with the same name, 1") 129 EDAssert.equal(xsDataStringTest2.marshal(), pyListDataOutput[1].marshal(), "Test 3: several inputs with the same name, 2") 130 # Test 6: test of delDataOutput 131 edPlugin = EDPlugin() 132 xsDataStringTest = XSDataString("Test") 133 edPlugin.setDataOutput(xsDataStringTest.marshal()) 134 edPlugin.delDataOutput() 135 EDAssert.equal(None, edPlugin.getDataOutput(), "Test 6: test of delDataOutput")
136 137
138 - def testWriteDataInput(self):
139 # Test 1: default input with XML 140 edPlugin = EDPlugin() 141 edPlugin.configure() 142 edPlugin.setXSDataInputClass(XSDataString) 143 xsDataStringTest = XSDataString("Test") 144 edPlugin.setDataInput(xsDataStringTest.marshal()) 145 edPlugin.writeDataInput() 146 EDAssert.equal(True, os.path.exists(os.path.join(edPlugin.getWorkingDirectory(), "_dataInput.xml")), "Test 1: default input with XML") 147 # Test 2: named input with XML 148 edPlugin = EDPlugin() 149 edPlugin.configure() 150 edPlugin.setXSDataInputClass(XSDataString, "testData") 151 xsDataStringTest = XSDataString("Test") 152 edPlugin.setDataInput(xsDataStringTest.marshal(), "testData") 153 edPlugin.writeDataInput() 154 EDAssert.equal(True, os.path.exists(os.path.join(edPlugin.getWorkingDirectory(), "_testData_0_dataInput.xml")), "Test 2: named input with XML") 155 # Test 3: several inputs with the same name, XML input 156 edPlugin = EDPlugin() 157 edPlugin.configure() 158 edPlugin.setXSDataInputClass(XSDataString, "testData") 159 xsDataStringTest1 = XSDataString("Test1") 160 xsDataStringTest2 = XSDataString("Test2") 161 edPlugin.setDataInput(xsDataStringTest1.marshal(), "testData") 162 edPlugin.setDataInput(xsDataStringTest2.marshal(), "testData") 163 edPlugin.writeDataInput() 164 EDAssert.equal(True, os.path.exists(os.path.join(edPlugin.getWorkingDirectory(), "_testData_0_dataInput.xml")), "Test 3: several inputs with the same name, XML input, 1") 165 EDAssert.equal(True, os.path.exists(os.path.join(edPlugin.getWorkingDirectory(), "_testData_1_dataInput.xml")), "Test 3: several inputs with the same name, XML input, 2")
166 167
168 - def testWriteDataOutput(self):
169 # Test 1: default Output with XML 170 edPlugin = EDPlugin() 171 edPlugin.configure() 172 xsDataStringTest = XSDataString("Test") 173 edPlugin.setDataOutput(xsDataStringTest) 174 edPlugin.writeDataOutput() 175 EDAssert.equal(True, os.path.exists(os.path.join(edPlugin.getWorkingDirectory(), "_dataOutput.xml")), "Test 1: default Output with XML") 176 # Test 2: named Output with XML 177 edPlugin = EDPlugin() 178 edPlugin.configure() 179 xsDataStringTest = XSDataString("Test") 180 edPlugin.setDataOutput(xsDataStringTest, "testData") 181 edPlugin.writeDataOutput() 182 EDAssert.equal(True, os.path.exists(os.path.join(edPlugin.getWorkingDirectory(), "_testData_0_dataOutput.xml")), "Test 2: named Output with XML") 183 # Test 3: several Outputs with the same name, XML Output 184 edPlugin = EDPlugin() 185 edPlugin.configure() 186 xsDataStringTest1 = XSDataString("Test1") 187 xsDataStringTest2 = XSDataString("Test2") 188 edPlugin.setDataOutput(xsDataStringTest1, "testData") 189 edPlugin.setDataOutput(xsDataStringTest2, "testData") 190 edPlugin.writeDataOutput() 191 EDAssert.equal(True, os.path.exists(os.path.join(edPlugin.getWorkingDirectory(), "_testData_0_dataOutput.xml")), "Test 3: several Outputs with the same name, XML Output, 1") 192 EDAssert.equal(True, os.path.exists(os.path.join(edPlugin.getWorkingDirectory(), "_testData_1_dataOutput.xml")), "Test 3: several Outputs with the same name, XML Output, 2")
193 194
196 # Test dataInput property with XSDataObject 197 edPlugin = EDPlugin() 198 edPlugin.setXSDataInputClass(XSDataString) 199 edPlugin.configure() 200 xsDataStringTest = XSDataString("Test1") 201 edPlugin.dataInput = xsDataStringTest 202 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.dataInput.marshal(), "Test dataInput property with XSDataObject") 203 # Test dataInput property with XML 204 edPlugin = EDPlugin() 205 edPlugin.setXSDataInputClass(XSDataString) 206 edPlugin.configure() 207 xsDataStringTest = XSDataString("Test1") 208 edPlugin.dataInput = xsDataStringTest.marshal() 209 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.dataInput.marshal(), "Test dataInput property with XML") 210 # Test dataOutput property with XSDataObject 211 edPlugin = EDPlugin() 212 edPlugin.configure() 213 xsDataStringTest = XSDataString("Test1") 214 edPlugin.dataOutput = xsDataStringTest 215 EDAssert.equal(xsDataStringTest.marshal(), edPlugin.dataOutput.marshal(), "Test dataOutput property with XSDataObject")
216 217
219 # Test warning in case of no output data 220 edPlugin = EDPlugin() 221 edPlugin.configure() 222 edPlugin.executeSynchronous() 223 xsDataResultReference = XSDataResult() 224 listOfWarningMessages = edPlugin.getListOfWarningMessages() 225 EDAssert.equal(1, len(listOfWarningMessages), "Test warning in case of no output data, no warning messages = 1") 226 EDAssert.equal(xsDataResultReference.marshal(), edPlugin.dataOutput.marshal(), "Test warning in case of no output data, default XSDataResult") 227 # Test warning in case of named output data 228 edPlugin = EDPlugin() 229 edPlugin.configure() 230 xsDataStringTest = XSDataString("Test1") 231 edPlugin.setDataOutput(xsDataStringTest, "test") 232 edPlugin.executeSynchronous() 233 xsDataResultReference = XSDataResult() 234 listOfWarningMessages = edPlugin.getListOfWarningMessages() 235 EDAssert.equal(0, len(listOfWarningMessages), "Test warning in case of named output data, no warning messages = 0")
236 237
238 - def testCreateBaseName(self):
239 # Test 1 : naming of working directory 240 edPlugin = EDPlugin() 241 edPlugin.setBaseName("EDPlugin_testCreateBaseName") 242 edPlugin.configure() 243 strWorkingDir = edPlugin.getWorkingDirectory() 244 EDAssert.equal(True, os.path.exists(strWorkingDir), "Test 1 : naming of working directory")
245 246
247 - def testWithSingleThread(self):
248 edPlugin = EDPlugin() 249 with edPlugin.locked(): 250 edPlugin.screen("test of with singleThread")
251 252
253 - def process(self):
264 265 266 267 268 if __name__ == '__main__': 269 270 EDTestCaseEDPlugin = EDTestCaseEDPlugin("TestCase EDPluginExecProcessScript") 271 EDTestCaseEDPlugin.execute() 272