Skip to content
Snippets Groups Projects

Add initial version of the integration testing class

Merged m.marn requested to merge 106-integration-test into master
Files
52
@@ -14,11 +14,9 @@
@@ -14,11 +14,9 @@
# You should have received a copy of the GNU General Public License
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import unittest
import fesa.fesa_7_3_0.generateFesaDesign
import fesa.fesa_7_3_0.generateFesaDesign
fesa_version = "7.3.0"
fesa_version = "7.5.0"
import libxml2
import libxml2
import unittest
import unittest
@@ -57,13 +55,13 @@ class TestGenerateFesaDesign(unittest.TestCase):
@@ -57,13 +55,13 @@ class TestGenerateFesaDesign(unittest.TestCase):
def test_fillXML_EmptyTemplate(self):
def test_fillXML_EmptyTemplate(self):
fesaRoot = libxml2.parseFile("test/fesa/emptyTemplate.xml")
fesaRoot = libxml2.parseFile("test/fesa/emptyTemplate.xml")
self.generator.fillXML(fesa_version, 'MyClass', fesaRoot, simpleSilecsDesignRoot, logTopics={'errorlog': True})
self.generator.fillXML(fesa_version, 'AllTypesFESA', fesaRoot, simpleSilecsDesignRoot, logTopics={'errorlog': True})
self.assertTrue(fesaRoot.xpathEval('/equipment-model/events') is not None)
self.assertTrue(fesaRoot.xpathEval('/equipment-model/events') is not None)
self.assertTrue(fesaRoot.xpathEval('/equipment-model/scheduling-units') is not None)
self.assertTrue(fesaRoot.xpathEval('/equipment-model/scheduling-units') is not None)
def test_fillXML_GSITemplate(self):
def test_fillXML_GSITemplate(self):
fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplate.xml")
fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplate.xml")
self.generator.fillXML(fesa_version, 'MyClass', fesaRoot, simpleSilecsDesignRoot, logTopics={'errorlog': True})
self.generator.fillXML(fesa_version, 'AllTypesFESA', fesaRoot, simpleSilecsDesignRoot, logTopics={'errorlog': True})
self.assertTrue(fesaRoot.xpathEval('/equipment-model/events') is not None)
self.assertTrue(fesaRoot.xpathEval('/equipment-model/events') is not None)
self.assertTrue(fesaRoot.xpathEval('/equipment-model/scheduling-units') is not None)
self.assertTrue(fesaRoot.xpathEval('/equipment-model/scheduling-units') is not None)
@@ -85,21 +83,31 @@ class TestGenerateFesaDesign(unittest.TestCase):
@@ -85,21 +83,31 @@ class TestGenerateFesaDesign(unittest.TestCase):
commandBlock = myRoot.xpathEval('/SILECS-Design/SILECS-Class/Command-Block')[0]
commandBlock = myRoot.xpathEval('/SILECS-Design/SILECS-Class/Command-Block')[0]
commandBlock.setProp("name", "Init")
commandBlock.setProp("name", "Init")
self.assertRaises(Exception, lambda: self.generator.fillXML(fesa_version, 'MyClass', fesaRoot, myRoot, logTopics={'errorlog': True}))
self.assertRaises(Exception, lambda: self.generator.fillXML(fesa_version, 'AllTypesFESA', fesaRoot, myRoot, logTopics={'errorlog': True}))
commandBlock.setProp("name", "Reset")
commandBlock.setProp("name", "Reset")
self.assertRaises(Exception, lambda: self.generator.fillXML(fesa_version, 'MyClass', fesaRoot, myRoot, logTopics={'errorlog': True}))
self.assertRaises(Exception, lambda: self.generator.fillXML(fesa_version, 'AllTypesFESA', fesaRoot, myRoot, logTopics={'errorlog': True}))
def testFillXML_AllTypes(self):
def testFillXML_AllTypes(self):
fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplate.xml")
fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplate.xml")
silecsRoot = libxml2.parseFile("test/AllTypesFESA.silecsdesign")
silecsRoot = libxml2.parseFile("test/AllTypesFESA.silecsdesign")
fesaRoot = self.generator.fillXML(fesa_version, 'MyClass', fesaRoot, silecsRoot, logTopics={'errorlog': True})
fesaRoot = self.generator.fillXML(fesa_version, 'AllTypesFESA', fesaRoot, silecsRoot, logTopics={'errorlog': True})
fesaNewDocPath = "test/generated_temp/AllTypesFESA.design"
fesaNewDocPath = "test/generated_temp/AllTypesFESA.design"
fesaCompareDocPath = "test/generated_correct/AllTypesFESA.design"
fesaCompareDocPath = "test/generated_correct/AllTypesFESA.design"
 
fesaCompareTestDocPath = "test/generated_correct/AllTypesFESA.design.testing"
with open(fesaNewDocPath, 'w') as fd:
with open(fesaNewDocPath, 'w') as fd:
fesaRoot.saveTo(fd, format = True)
fesaRoot.saveTo(fd, format = True)
 
correct = libxml2.readFile(fesaCompareDocPath, "utf-8", 0)
 
for node in correct.xpathEval("//*"):
 
if node.hasProp("id"):
 
node.unsetProp("id")
 
if node.name == "equipment-model":
 
node.setProp("xsi:noNamespaceSchemaLocation", "../design-gsi.xsd")
 
 
correct.saveFormatFile(fesaCompareTestDocPath, format=True)
 
print('FESA design document saved successfully')
print('FESA design document saved successfully')
# Compare files.
# Compare files.
with open(fesaNewDocPath) as a, open(fesaCompareDocPath) as b:
with open(fesaNewDocPath) as a, open(fesaCompareTestDocPath) as b:
self.assertListEqual(list(a), list(b))
self.assertListEqual(list(a), list(b))
Loading