2 # -*- coding: utf-8 -*-
3 # Copyright (C) 2007-2021 EDF R&D
5 # This library is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU Lesser General Public
7 # License as published by the Free Software Foundation; either
8 # version 2.1 of the License.
10 # This library is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 Ce module sert a lancer EFICAS configure pour Code_Aster
28 sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
30 from PyQt4.QtCore import *
31 from InterfaceQT4 import eficas_go
36 from PyQt4.QtGui import *
37 from myMain import Ui_Eficas
38 from viewManager import MyTabview
39 from getVersion import getEficasVersion
41 from Extensions.i18n import tr
42 from Extensions.eficas_exception import EficasException
44 from Editeur import session
49 class EficasEngineTestSuite(unittest.TestSuite):
50 def __init__(self, testList):
51 unittest.TestSuite.__init__(self)
55 class EficasEngineTestCase(unittest.TestCase):
57 from qtEficas import Appli
58 from Editeur import session
59 from Extensions import localisation
61 options = session.parse(sys.argv)
62 if options.code!= None : code=options.code
63 if options.ssCode!= None : ssCode=options.ssCode
69 self.app = QApplication(sys.argv)
70 localisation.localise(self.app,'en')
71 self.Eficas=Appli(code=self.code,ssCode=None,multi=False,langue='en')
81 if ( self.editor != None ):
82 vm=self.Eficas.viewmanager
83 index=vm.myQtab.currentIndex()
85 while idx < len(vm.dict_editors) -1 :
86 vm.dict_editors[idx]=vm.dict_editors[idx+1]
88 del vm.dict_editors[len (vm.dict_editors) -1]
90 del vm.doubles[vm.dict_editors[index]]
93 vm.myQtab.removeTab(index)
96 def open_file(self, fileName):
97 if ( self.Eficas == None ):
102 self.Eficas.viewmanager.handleOpen(fileName)
103 index=self.Eficas.viewmanager.myQtab.currentIndex()
104 self.editor=self.Eficas.viewmanager.dict_editors[index]
111 def save_file(self, file):
112 if ( self.editor == None ):
123 self.editor.saveFileAs(fileName=file)
129 def search_object(self, name):
131 if ( self.editor != None ):
133 return self.search_subobject(obj, name)
135 def search_subobject(self, obj, name):
139 if ( hasattr( obj, 'get_sdname' ) and obj.get_sdname() == name ):
143 if ( hasattr(obj, 'etapes') ):
145 elif ( hasattr(obj, 'mc_liste') ):
150 o=self.search_subobject(i, name)
156 def search_param(self, obj, name):
160 if ( hasattr( obj, 'nom' ) and obj.nom == name ):
164 if ( hasattr(obj, 'etapes') ):
166 elif ( hasattr(obj, 'mc_liste') ):
171 o=self.search_param(i, name)
177 def remove_object(self, obj):
178 if ( obj != None and hasattr( obj, 'parent' ) ):
183 def compare_files(self, orig, test):
184 origlines = open(orig, 'U').readlines()
185 testlines = open(test, 'U').readlines()
187 diff = difflib.unified_diff(origlines, testlines, orig, test)
191 if ( len(str) == 0 ):
193 elif ( str[0] != ' ' ):
199 def testCaseDataDir(self):
200 return '/dn24/EFICAS/stv'
202 def testCaseInputDataFile(self):
205 def testCasePatternDataFile(self):
206 dataFile=self.testCaseInputDataFile()
207 split=os.path.splitext(dataFile)
208 return split[0] + '_ptrn' + split[1]
210 def testCaseTestDataFile(self):
211 dataFile=self.testCaseInputDataFile()
212 split=os.path.splitext(dataFile)
213 return split[0] + '_test' + split[1]
215 def testCaseInputDataPath(self):
216 return self.testCaseDataDir() + os.sep + self.testCaseInputDataFile()
218 def testCasePatternDataPath(self):
219 return self.testCaseDataDir() + os.sep + self.testCasePatternDataFile()
221 def testCaseTestDataPath(self):
222 return self.testCaseDataDir() + os.sep + self.testCaseTestDataFile()
225 inputFile=self.testCaseInputDataPath()
227 self.assert_(self.open_file(inputFile), 'Can not open file: ' + inputFile)
229 self.assert_(self.performTest(), 'Test not performed')
231 testFile=self.testCaseTestDataPath()
233 self.assert_(self.save_file(testFile), 'Can not save file: ' + testFile)
235 patternFile=self.testCasePatternDataPath()
236 cmp=self.compare_files(patternFile, testFile)
238 self.assert_(cmp == 0, "Pattern file and test file are differs")
242 def performTest(self):
245 def run_tests(reportFile, testSuit):
247 buf = file(reportFile, 'wb')
248 runner = HTMLTestRunner.HTMLTestRunner(stream=buf, title='Test report', description='Result of tests')