Salome HOME
modif Adao 7 6
[tools/eficas.git] / Tests / testelem / testbloc1.py
1 # coding=utf-8
2 from Accas import SIMP,FACT,BLOC,UN_PARMI,OPER,ASSD,MACRO,_F
3 import Noyau
4
5 class concept(ASSD,Noyau.AsBase):pass
6
7 import unittest
8
9 class CATA:
10    def __init__(self):
11       CONTEXT.unset_current_cata()
12       CONTEXT.set_current_cata(self)
13    def enregistre(self,cmd):
14       pass
15
16 cata=CATA()
17
18
19 OP1 = OPER(nom='OP1',op=1, sd_prod=concept, 
20       WWWW=SIMP(statut='o',typ='TXM', position='global'),
21       XXXX=SIMP(typ='TXM', position='global',defaut='XXXX'),
22     traitement=FACT(statut='o',
23       TATA=SIMP(typ='TXM', position='global',defaut='DDD'),
24       TTTT=SIMP(statut='o',typ='TXM', position='global',defaut='EEE'),
25       UUUU=SIMP(typ='TXM', position='global'),
26       VVVV=SIMP(statut='o',typ='TXM', position='global'),
27       regles=( UN_PARMI('TYPE_RAFFINEMENT_LIBRE','TYPE_RAFFINEMENT_UNIFORME'),),
28       TYPE_RAFFINEMENT_LIBRE = FACT(statut='f',
29                 RAFFINEMENT   = SIMP(statut='o',typ='TXM', position='global',
30                                      into=("LIBRE","UNIFORME",) ),
31                 DERAFFINEMENT = SIMP(statut='o',typ='TXM', position='global',
32                                      into=("LIBRE",),),
33                 TOTO=SIMP(statut='o',typ='TXM', position='global'),
34                 # un mot cle global facultatif ne sera pas visible tant
35                 # qu'il n'aura pas de valeur meme s'il a un defaut
36                 TITI=SIMP(typ='TXM', position='global',defaut='BBB'),
37                 TUTU=SIMP(statut='o',typ='TXM', position='global',defaut='CCC'),
38       ),
39       b_maj_champ =BLOC(condition="(RAFFINEMENT!=None) or (DERAFFINEMENT!=None)",
40                        NITER =SIMP(statut='o',typ='I',),
41                        NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',),
42                        FICHIER_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',),
43       ),
44     ),
45     trait=FACT(statut='o',
46       FFFF=SIMP(typ='TXM',),
47       b_champ =BLOC(condition="WWWW=='WWWW'",
48                     N =SIMP(statut='o',typ='I',),
49       ),
50     ),
51 )
52
53 MACR_BIDON=OPER(nom="MACR_BIDON",op=None,sd_prod=concept,
54                  reentrant='n',UIinfo={"groupes":("Outils métier",)},fr="",
55                  NOM_CHAM=SIMP(statut='f',typ='TXM',into=('ACCE','DEPL'),position="global"),
56                  RESULTAT=FACT(statut='o',b_acce=BLOC(condition="NOM_CHAM=='ACCE'",
57                                                        VAL1=SIMP(statut='o',typ='R'),
58                                                      ),
59                                 VAL2=SIMP(statut='o',typ='R'),
60                               ),
61                 )
62 import pprint
63
64 class TestMCBlocCase(unittest.TestCase):
65
66    def test001(self):
67       """ bloc conditionnel declenche par mot cle global avec defaut
68       """
69       mcf={'TYPE_RAFFINEMENT_LIBRE':{'TOTO':'AAA'}}
70       co=OP1(traitement=mcf,WWWW='WWWW')
71       mcfact=co.etape['traitement']
72       self.assertEqual(mcfact['TYPE_RAFFINEMENT_LIBRE']['DERAFFINEMENT'] , None)
73       dico=mcfact[0].cree_dict_valeurs(mcfact[0].mc_liste)
74       self.assertEqual(dico['DERAFFINEMENT'] , None)
75       self.assertEqual(dico['RAFFINEMENT'] , None)
76       self.assertEqual(dico['WWWW'] , 'WWWW')
77       self.assertRaises(IndexError, mcfact.__getitem__, 'NITER')
78
79       mcfact=co.etape['trait'][0]
80       dico=mcfact.cree_dict_valeurs(mcfact.mc_liste)
81       self.assertEqual(dico['DERAFFINEMENT'] , None)
82       self.assertEqual(dico['RAFFINEMENT'] , None)
83       self.assertEqual(dico['WWWW'] , 'WWWW')
84       self.assertEqual(dico['TOTO'] , 'AAA')
85       self.assertEqual(dico['TUTU'] , 'CCC')
86       self.assertEqual(dico['FFFF'] , None)
87       self.assertEqual(dico['VVVV'] , None)
88       self.assertEqual(dico['TTTT'] , 'EEE')
89       self.assertEqual(dico['XXXX'] , 'XXXX')
90       self.assertEqual(mcfact['N'] , None)
91       self.assertRaises(KeyError, dico.__getitem__, 'TITI')
92
93    def test002(self):
94       mcf={'TYPE_RAFFINEMENT_LIBRE':{'RAFFINEMENT':'LIBRE'},'NITER':1}
95       co=OP1(traitement=mcf)
96       mcfact=co.etape['traitement']
97       self.assertEqual(mcfact['TYPE_RAFFINEMENT_LIBRE']['RAFFINEMENT'] , 'LIBRE')
98       self.assertEqual(mcfact['NITER'] , 1)
99
100    def test003(self):
101       co=MACR_BIDON(NOM_CHAM='ACCE',RESULTAT=_F(VAL2=3.4))
102       mcfact=co.etape['RESULTAT']
103       self.assertEqual(co.etape.isvalid(), 0)
104
105    def test004(self):
106       mcf={'VVVV':'',
107            'TYPE_RAFFINEMENT_LIBRE':{'RAFFINEMENT':'LIBRE','DERAFFINEMENT':'LIBRE','TOTO':'AA'},
108            'NITER':1,
109            'FICHIER_MED_MAILLAGE_NP1':'',
110            'NOM_MED_MAILLAGE_NP1':'',
111            }
112       co=OP1(traitement=mcf,WWWW="WWWW",trait={'N':1})
113       val=co.etape.isvalid()
114       if not val:msg=co.etape.report()
115       else:msg=""
116       self.assertEqual(co.etape.isvalid() , 1,msg=msg)
117
118       co=OP1(traitement=mcf,WWWW="WWWW")
119       val=co.etape.isvalid()
120       if not val:msg=co.etape.report()
121       else:msg=""
122       self.assertEqual(co.etape.isvalid() , 0,msg=msg)
123
124       co=OP1(traitement=mcf,WWWW="WW",trait={'N':1})
125       val=co.etape.isvalid()
126       if not val:msg=co.etape.report()
127       else:msg=""
128       self.assertEqual(co.etape.isvalid() , 0,msg=msg)
129
130       co=OP1(traitement=mcf,WWWW="WW",trait={'FFFF':'X'})
131       val=co.etape.isvalid()
132       if not val:msg=co.etape.report()
133       else:msg=""
134       self.assertEqual(co.etape.isvalid() , 1,msg=msg)
135
136       co=OP1(traitement=mcf,WWWW="WW",)
137       val=co.etape.isvalid()
138       if not val:msg=co.etape.report()
139       else:msg=""
140       self.assertEqual(co.etape.isvalid() , 1,msg=msg)
141
142    def test005(self):
143       OP1 = OPER(nom='OP1',op=1, sd_prod=concept,
144                  MASS = FACT(statut='f',max='**',
145                                Y  = SIMP(statut='f',typ='I',),
146                                Z  = FACT(T=SIMP(typ='I')),
147                             ),
148                  b_mass = BLOC(condition = "MASS != None",
149                                MODE   = SIMP(statut='o',typ='I',)
150                               ),
151                  bb_mass = BLOC(condition = "MASS and len(MASS) > 1 ",
152                                XX   = SIMP(statut='o',typ='I',)
153                               ),
154                  bbb_mass = BLOC(condition = "MASS and MASS[0]['Y'] == 1 ",
155                                YY   = SIMP(statut='o',typ='I',)
156                               ),
157                  bbbb_mass = BLOC(condition = "MASS and MASS[0]['Z'] and MASS[0]['Z'][0]['T'] == 1 ",
158                                ZZ   = SIMP(statut='o',typ='I',)
159                               ),
160                 )
161       co=OP1()
162       msg=co.etape.report()
163       self.assertEqual(co.etape.isvalid() , 1,msg=msg)
164       co=OP1(MASS={},MODE=1)
165       msg=co.etape.report()
166       self.assertEqual(co.etape.isvalid() , 1,msg=msg)
167       co=OP1(MASS=({},{}),MODE=1,XX=1)
168       msg=co.etape.report()
169       self.assertEqual(co.etape.isvalid() , 1,msg=msg)
170       co=OP1(MASS=({'Y':1},{}),MODE=1,XX=1,YY=1)
171       msg=co.etape.report()
172       self.assertEqual(co.etape.isvalid() , 1,msg=msg)
173       co=OP1(MASS=({'Y':1,'Z':{'T':1}},{}),MODE=1,XX=1,YY=1,ZZ=1)
174       msg=co.etape.report()
175       self.assertEqual(co.etape.isvalid() , 1,msg=msg)
176