Salome HOME
Merge branch V7_3_1_BR
[modules/yacs.git] / src / pmml / pmml_swig / PMMLBasicsTest.py
1 # -*- coding: utf-8 -*-
2
3 # imports Salomé
4 from PMML import PMMLlib, kANN, kLR
5
6 # imports python
7 import unittest
8 import exceptions
9 from exceptions import RuntimeError
10 import os
11 import shutil
12
13 class PMMLBasicsTest(unittest.TestCase):
14
15     def setUp(self):
16         pmmlRootDir = os.getenv("YACS_ROOT_DIR");
17         self.resourcesDir = os.path.join(pmmlRootDir,"share","salome","resources","pmml");
18         self.resourcesDir += os.sep ;
19         self.tmpDir = "/tmp/";
20         self.tmpDir += os.environ['LOGNAME']; # ("USER");
21         self.tmpDir += "/PmmlUnitTest/";
22         if ( not os.path.exists(self.tmpDir) ):
23             os.mkdir(self.tmpDir);
24             pass
25         pass
26
27     def tearDown(self):
28         if ( os.path.exists(self.tmpDir) ):
29             shutil.rmtree(self.tmpDir);
30             pass 
31         pass
32
33     def testExportPythonNeuralNet(self):
34         pmmlFile = self.resourcesDir + "ann_model.pmml";
35         model = "sANNName";
36         exportPyScript = self.tmpDir + "swigTestExportPythonNeuralNet.py";
37         refPyFilename = self.resourcesDir + "unittest_ref_ann_model.py";
38         refLines = file(refPyFilename).readlines(); 
39         #
40         p = PMMLlib( pmmlFile );
41         p.SetCurrentModel( model, kANN );
42         p.ExportPython( exportPyScript, "myTestFunc", 
43                         "File used by unit test\n PMMLBasicsTest1::testExportNeuralNetworkPython" );
44         myLines = file(exportPyScript).readlines();
45         self.assertEqual( len(myLines), len(refLines) );
46         for (i,line) in enumerate(myLines):
47             self.assertEqual( line, refLines[i] );
48             pass
49         pass
50   
51     def testExportPythonRegression(self):
52         pmmlFile = self.resourcesDir + "lr_model.pmml";
53         model = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
54         exportPyScript = self.tmpDir + "swigTestExportPythonRegression.py";
55         refPyFilename = self.resourcesDir + "unittest_ref_lr_model.py";
56         refLines = file(refPyFilename).readlines(); 
57         #
58         p = PMMLlib( pmmlFile );
59         p.SetCurrentModel( model, kLR );
60         p.ExportPython( exportPyScript, "myTestFunc", 
61                                "File used by unit test\n PMMLBasicsTest1::testExportLinearRegressionPython" );
62         myLines = file(exportPyScript).readlines();
63         self.assertEqual( len(myLines), len(refLines) );
64         for (i,line) in enumerate(myLines):
65             self.assertEqual( line, refLines[i] );
66             pass
67         pass
68
69     def testPmmlFileNotReadable(self):
70         self.assertRaises( RuntimeError, PMMLlib, "0.mml" );
71         pass
72
73     def testPmmlFileNotReadable(self):
74         pmmlFile = self.resourcesDir + "ann_model.pmml";
75         model = "sANNName";
76         p = PMMLlib(pmmlFile);
77         self.assertRaises( RuntimeError, p.SetCurrentModel, model, kLR );
78         pass
79
80     def testPmmlFileNotWritable(self):
81         p = PMMLlib();
82         self.assertRaises( RuntimeError, p.Write );
83         pass
84     pass
85
86 unittest.main()