Salome HOME
19-07-16
[tools/eficas.git] / ts / test_dicoparser.py
1
2 import dicoparser
3 import unittest
4
5 class Test1( unittest.TestCase ):
6     def runTest(self):
7                 d = dicoparser.DicoParser( '', '', '' )
8                 t = d.parse_tokens( """
9   / comment
10   TYPE = LOGIQUE
11   INDEX = 23 
12   MNEMO = 'VERLIM'
13   MNEMO1 = ''
14   NOM = 'CONTROLE DES LIMITES'
15   RUBRIQUE1 = 'ENTREES-SORTIES, GENERALITES';'CONTROLE' 
16   CHOIX1 = '0="list of tests"';  
17   '1="gradient simple"'; 
18   '2="conj gradient"'; 
19   '3="Lagrange interp."'
20   AIDE = 'UTILISER AVEC LE MOT-CLE : VALEURS LIMITES, LE PROGRAMME 
21   S''ARRETE SI LES LIMITES SUR U,V,H OU T SONT DEPASSEES' 
22   DEFAUT = -1000.;9000.;-1000. 
23 """ )
24                 self.assertEqual( len(t), 39 )
25                 self.assertEqual( t[0], 'TYPE' )
26                 self.assertEqual( t[1], '=' )
27                 self.assertEqual( t[2], 'LOGIQUE' )
28                 self.assertEqual( t[3], 'INDEX' )
29                 self.assertEqual( t[4], '=' )
30                 self.assertEqual( t[5], '23' )
31                 self.assertEqual( t[6], 'MNEMO' )
32                 self.assertEqual( t[7], '=' )
33                 self.assertEqual( t[8], 'VERLIM' )
34                 self.assertEqual( t[9], 'MNEMO1' )
35                 self.assertEqual( t[10], '=' )
36                 self.assertEqual( t[11], '' )
37                 self.assertEqual( t[12], 'NOM' )
38                 self.assertEqual( t[13], '=' )
39                 self.assertEqual( t[14], 'CONTROLE DES LIMITES' )
40                 self.assertEqual( t[15], 'RUBRIQUE1' )
41                 self.assertEqual( t[16], '=' )
42                 self.assertEqual( t[17], 'ENTREES-SORTIES, GENERALITES' )
43                 self.assertEqual( t[18], ';' )
44                 self.assertEqual( t[19], 'CONTROLE' )
45                 self.assertEqual( t[20], 'CHOIX1' )
46                 self.assertEqual( t[21], '=' )
47                 self.assertEqual( t[22], '0="list of tests"' )
48                 self.assertEqual( t[23], ';' )
49                 self.assertEqual( t[24], '1="gradient simple"' )
50                 self.assertEqual( t[25], ';' )
51                 self.assertEqual( t[26], '2="conj gradient"' )
52                 self.assertEqual( t[27], ';' )
53                 self.assertEqual( t[28], '3="Lagrange interp."' )
54                 self.assertEqual( t[29], 'AIDE' )
55                 self.assertEqual( t[30], '=' )
56                 self.assertEqual( t[31], 'UTILISER AVEC LE MOT-CLE : VALEURS LIMITES, LE PROGRAMME S\'ARRETE SI LES LIMITES SUR U,V,H OU T SONT DEPASSEES' )
57                 self.assertEqual( t[32], 'DEFAUT' )
58                 self.assertEqual( t[33], '=' )
59                 self.assertEqual( t[34], '-1000.' )
60                 self.assertEqual( t[35], ';' )
61                 self.assertEqual( t[36], '9000.' )
62                 self.assertEqual( t[37], ';' )
63                 self.assertEqual( t[38], '-1000.' )
64                 
65                 d.expand_values( t )
66                 self.assertEqual( t[24], ( '1', 'gradient simple' ) )
67                 self.assertEqual( t[26], ( '2', 'conj gradient' ) )
68                 self.assertEqual( t[28], ( '3', 'Lagrange interp.' ) )
69                 
70                 lst = d.convert_to_tuples( t )
71                 self.assertEqual( len(lst), 9 )
72                 self.assertEqual( lst[0], ( 'TYPE', 'LOGIQUE' ) )
73                 self.assertEqual( lst[1], ( 'INDEX', '23' ) )
74                 self.assertEqual( lst[2], ( 'MNEMO', 'VERLIM' ) )
75                 self.assertEqual( lst[3], ( 'MNEMO1', '' ) )
76                 self.assertEqual( lst[4], ( 'NOM', 'CONTROLE DES LIMITES' ) )
77                 self.assertEqual( lst[5], ( 'RUBRIQUE1', ['ENTREES-SORTIES, GENERALITES', 'CONTROLE'] ) )
78                 self.assertEqual( lst[6], ( 'CHOIX1', [('0','list of tests'), ('1','gradient simple'), ('2','conj gradient'), ('3','Lagrange interp.') ] ) )
79                 self.assertEqual( lst[7], ( 'AIDE', 'UTILISER AVEC LE MOT-CLE : VALEURS LIMITES, LE PROGRAMME S\'ARRETE SI LES LIMITES SUR U,V,H OU T SONT DEPASSEES' ) )
80                 self.assertEqual( lst[8], ( 'DEFAUT', ['-1000.', '9000.', '-1000.' ] ) )
81
82 class Test2( unittest.TestCase ):
83     def runTest(self):
84                 d = dicoparser.DicoParser( '', '', '' )
85                 self.assertEqual( d.are_equal( 'WIND IN SUMMER', 'Wind_In_Summer' ), True )
86                 self.assertEqual( d.are_equal( 'HELLO', 'Bonjour' ), False )
87                 self.assertEqual( d.are_equal( 'MAXIMUM NUMBER OF ITERATIONS FOR SOLVER', 'Maximum_Number_Of_Iterations_For_Solver' ), True )
88                 #self.assertEqual( d.are_equal( 'WIND IN SUMMER', 'Wind' ), True ) #TODO: check the specification about this issue
89
90 class Test3( unittest.TestCase ):
91     def runTest(self):
92                 d = dicoparser.DicoParser( 'test', 'NOM', 'NOM1' )
93                 #print d.data.keys()
94                 #for aKey, aValue in d.data['TYPE OF ADVECTION'].iteritems():
95                 #       print aKey, aValue 
96                 
97                 self.assertEqual( d.data['TYPE OF ADVECTION'].keys(), ['AIDE', 'NOM', 'DEFAUT1', 'INDEX', 'NIVEAU', 'TAILLE', 'CHOIX1', 'RUBRIQUE1', 'MNEMO', 'NOM1', 'AIDE1', 'COMPORT', 'DEFAUT', 'CHOIX', 'RUBRIQUE', 'TYPE' ] )
98                 self.assertEqual( d.translate( 'Control_Of_Limits', 'NOM' ), 'Controle Des Limites' )
99                 self.assertEqual( d.translate( 'Type_Of_Advection', 'NOM' ), 'Forme De La Convection' )
100                 self.assertEqual( d.translate( 'Type_Of_Advection', '', 'Characteristics', 'CHOIX1', 'CHOIX' ), 'Caracteristiques' )
101
102 class Test4( unittest.TestCase ):
103     def runTest(self):
104                 d = dicoparser.DicoParser( 'telemac2dv6p3.dico', 'NOM', 'NOM1' )
105                 self.assertEqual( d.translate( 'Reference_File_Format', 'NOM' ), 'Format Du Fichier De Reference' )
106                 self.assertEqual( d.translate( 'Reference_File_Format', '', 'Serafin', 'CHOIX1', 'CHOIX' ), 'Serafin' )
107                 self.assertEqual( d.translate( 'Reference_File_Format', '', 'Serafin', 'DEFAUT1', 'DEFAUT' ), 'Serafin' )
108                 self.assertEqual( d.translate( 'Destination', '', 'CHE43A', 'DEFAUT1', 'DEFAUT' ), 'Che43a' )
109                 self.assertEqual( d.translate( 'Destination', '', 0.0, 'DEFAUT1', 'DEFAUT' ), '' )
110                 self.assertEqual( d.translate( 'Destination', '', (1,2,3), 'DEFAUT1', 'DEFAUT' ), '' )
111
112 class Test5( unittest.TestCase ):
113     def runTest(self):
114                 d = dicoparser.DicoParser( '', '', '' )
115                 t = d.parse_tokens( """
116 CHOIX = '" "="pas de biliotheque"';
117 '"$PVM_ROOT/lib/$PVM_ARCH/libpvm3.a"="bibliotheque PVM1"' 
118 """ )
119                 self.assertEqual( len(t), 5 )
120                 self.assertEqual( t[0], 'CHOIX' )
121                 self.assertEqual( t[1], '=' )
122                 self.assertEqual( t[2], '" "="pas de biliotheque"' )
123                 self.assertEqual( t[3], ';' )
124                 self.assertEqual( t[4], '"$PVM_ROOT/lib/$PVM_ARCH/libpvm3.a"="bibliotheque PVM1"' )
125
126
127 t1 = Test1()
128 t1.runTest()
129
130 t2 = Test2()
131 t2.runTest()
132
133 t3 = Test3()
134 t3.runTest()
135
136 t4 = Test4()
137 t4.runTest()
138
139 t5 = Test5()
140 t5.runTest()