Salome HOME
Merge remote branch 'origin/ilh/pmml'
[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         self.resourcesDir = ".." + os.sep + "Test" + os.sep + "samples" + os.sep ;
17         self.tmpDir = os.sep + "tmp" + os.sep + os.environ['LOGNAME'] + os.sep ;
18         self.tmpDir += "PmmlUnitTest";
19         self.tmpDir += os.sep ;
20         if ( not os.path.exists(self.tmpDir) ):
21             os.mkdir(self.tmpDir);
22             pass
23         pass
24
25     def tearDown(self):
26         if ( os.path.exists(self.tmpDir) ):
27             shutil.rmtree(self.tmpDir);
28             pass 
29         pass
30
31     def testExportPythonNeuralNet(self):
32         pmmlFile = self.resourcesDir + "ann_model.pmml";
33         model = "sANNName";
34         exportPyScript = self.tmpDir + "swigTestExportPythonNeuralNet.py";
35         refPyFilename = self.resourcesDir + "unittest_ref_ann_model.py";
36         refLines = file(refPyFilename).readlines(); 
37         #
38         p = PMMLlib( pmmlFile );
39         p.SetCurrentModel( model, kANN );
40         p.ExportPython( exportPyScript, "myTestFunc", 
41                         "File used by unit test\n PMMLBasicsTest1::testExportNeuralNetworkPython" );
42         myLines = file(exportPyScript).readlines();
43         self.assertEqual( len(myLines), len(refLines) );
44         for (i,line) in enumerate(myLines):
45             self.assertEqual( line, refLines[i] );
46             pass
47         pass
48   
49     def testExportPythonRegression(self):
50         pmmlFile = self.resourcesDir + "lr_model.pmml";
51         model = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
52         exportPyScript = self.tmpDir + "swigTestExportPythonRegression.py";
53         refPyFilename = self.resourcesDir + "unittest_ref_lr_model.py";
54         refLines = file(refPyFilename).readlines(); 
55         #
56         p = PMMLlib( pmmlFile );
57         p.SetCurrentModel( model, kLR );
58         p.ExportPython( exportPyScript, "myTestFunc", 
59                                "File used by unit test\n PMMLBasicsTest1::testExportLinearRegressionPython" );
60         myLines = file(exportPyScript).readlines();
61         self.assertEqual( len(myLines), len(refLines) );
62         for (i,line) in enumerate(myLines):
63             self.assertEqual( line, refLines[i] );
64             pass
65         pass
66
67     def testPmmlFileNotReadable(self):
68         self.assertRaises( RuntimeError, PMMLlib, "0.mml" );
69         pass
70
71     def testPmmlFileNotReadable(self):
72         pmmlFile = self.resourcesDir + "ann_model.pmml";
73         model = "sANNName";
74         p = PMMLlib(pmmlFile);
75         self.assertRaises( RuntimeError, p.SetCurrentModel, model, kLR );
76         pass
77
78     def testPmmlFileNotWritable(self):
79         p = PMMLlib();
80         self.assertRaises( RuntimeError, p.Write );
81         pass
82     pass
83
84 unittest.main()