Salome HOME
bcaa76225afcc8e759d7aa230e9c18608a7dd268
[modules/med.git] / src / MEDCouplingCorba_Swig / TestMEDCouplingCorbaClt.py
1 # Copyright (C) 2007-2020  CEA/DEN, EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19 # Author : Anthony Geay (CEA/DEN)
20
21 import unittest
22 import CORBA
23 import MEDCouplingCorbaServantTest_idl
24 import MEDCouplingCorbaSwigTest
25 from MEDCouplingClient import *
26 import MEDCouplingCorbaServant_idl
27 import threading
28
29 class MEDCouplingCorbaServBasicsTestClt(unittest.TestCase):
30     def testBaseCorbaFetching(self):
31         self.assertTrue(not CORBA.is_nil(self._objC))
32         pass
33
34     def testContentOfFetched1DMesh(self):
35         meshPtr=self._objC.get1DMesh();
36         self.assertEqual("1DMeshForCorba",meshPtr.getName());
37         _mesh_from_distant=MEDCouplingMeshClient.New(meshPtr);
38         meshPtr.UnRegister();
39         self.assertTrue(isinstance(_mesh_from_distant,MEDCouplingUMesh))
40         self.assertTrue(_mesh_from_distant.getSpaceDimension()==3);
41         self.assertTrue(_mesh_from_distant.getMeshDimension()==1);
42         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
43         meshRef=test.build1DMesh()
44         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12));
45         pass
46
47     def testCorbaFetching2D(self):
48         meshPtr=self._objC.get2DMesh();
49         _mesh_from_distant=MEDCouplingUMeshClient.New(meshPtr);
50         meshPtr.UnRegister();
51         self.assertTrue(_mesh_from_distant.getSpaceDimension()==2);
52         self.assertTrue(_mesh_from_distant.getMeshDimension()==2);
53         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
54         meshRef=test.build2DMesh()
55         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12));
56         pass
57     
58     def testContentOfFetched2DMesh(self):
59         pass
60     
61     def testMultiFetchingToTestMemoryManagement(self):
62         for i in range(1000):
63             meshPtr=self._objC.get2DMesh();
64             _mesh_from_distant=MEDCouplingUMeshClient.New(meshPtr);
65             meshPtr.UnRegister();
66             test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
67             meshRef=test.build2DMesh();
68             self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12));
69             pass
70         pass
71     
72     def testCorbaFetching3D(self):
73         meshPtr=self._objC.get3DMesh();
74         _mesh_from_distant=MEDCouplingUMeshClient.New(meshPtr);
75         meshPtr.UnRegister();
76         self.assertTrue(3==_mesh_from_distant.getSpaceDimension());
77         self.assertTrue(3==_mesh_from_distant.getMeshDimension());
78         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
79         meshRef=test.build3DMesh();
80         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12));
81         pass
82     
83     def testContentOfFetched3DMesh(self):
84         pass
85     
86     def testCorbaFetching3DSurf(self):
87         meshPtr=self._objC.get3DSurfMesh();
88         _mesh_from_distant=MEDCouplingUMeshClient.New(meshPtr);
89         meshPtr.UnRegister();
90         self.assertTrue(3==_mesh_from_distant.getSpaceDimension());
91         self.assertTrue(2==_mesh_from_distant.getMeshDimension());
92         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
93         meshRef=test.build3DSurfMesh();
94         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12));
95         pass
96     
97     def testContentOfFetched3DSurfMesh(self):
98         pass
99     
100     def testCorbaFetching0D(self):
101         meshPtr=self._objC.get0DMesh();
102         _mesh_from_distant=MEDCouplingUMeshClient.New(meshPtr);
103         meshPtr.UnRegister();
104         self.assertTrue(3==_mesh_from_distant.getSpaceDimension());
105         self.assertTrue(0==_mesh_from_distant.getMeshDimension());
106         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
107         meshRef=test.build0DMesh();
108         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12));
109         pass
110     
111     def testCorbaFetchingM1D(self):
112         meshPtr=self._objC.getM1DMesh();
113         _mesh_from_distant=MEDCouplingUMeshClient.New(meshPtr);
114         meshPtr.UnRegister();
115         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
116         meshRef=test.buildM1DMesh();
117         self.assertTrue(-1==_mesh_from_distant.getMeshDimension());
118         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12));
119         pass
120
121     def testCorbaFetchingExtruded(self):
122         meshPtr=self._objC.getExtrudedMesh();
123         _mesh_from_distant=MEDCouplingExtrudedMeshClient.New(meshPtr);
124         meshPtr.UnRegister();
125         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
126         meshRef=test.buildExtrudedMesh();
127         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12))
128         pass
129
130     def testCorbaFetchingCMesh(self):
131         meshPtr=self._objC.getCMesh();
132         _mesh_from_distant=MEDCouplingCMeshClient.New(meshPtr);
133         meshPtr.UnRegister();
134         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
135         meshRef=test.buildCMesh();
136         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12))
137         pass
138
139     def testCorbaFetchingIMesh(self):
140         meshPtr=self._objC.getIMesh();
141         _mesh_from_distant=MEDCouplingIMeshClient.New(meshPtr);
142         meshPtr.UnRegister();
143         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
144         meshRef=test.buildIMesh();
145         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12))
146         pass
147
148     def testCorbaFetchingCLMesh(self):
149         meshPtr=self._objC.getCLMesh();
150         _mesh_from_distant=MEDCouplingCurveLinearMeshClient.New(meshPtr);
151         meshPtr.UnRegister();
152         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
153         meshRef=test.buildCLMesh();
154         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12))
155         pass
156
157     def testCorbaFetching1SGTUMesh(self):
158         meshPtr=self._objC.get1SGTUMesh();
159         _mesh_from_distant=MEDCoupling1SGTUMeshClient.New(meshPtr);
160         meshPtr.UnRegister();
161         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
162         meshRef=test.build1SGTUMesh();
163         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12))
164         pass
165
166     def testCorbaFetching1DGTUMesh(self):
167         meshPtr=self._objC.get1DGTUMesh();
168         _mesh_from_distant=MEDCoupling1DGTUMeshClient.New(meshPtr);
169         meshPtr.UnRegister();
170         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
171         meshRef=test.build1DGTUMesh();
172         self.assertTrue(_mesh_from_distant.isEqual(meshRef,1e-12))
173         pass
174     
175     def testCorbaField2DNTFetching(self):
176         fieldPtr=self._objC.getFieldScalarOn2DNT();
177         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
178         fieldPtr.UnRegister();
179         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
180         refField=test.buildFieldScalarOn2DNT();
181         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
182         pass
183     
184     def testCorbaField2DNTMultiFetching(self):
185         fieldPtr=self._objC.getFieldScalarOn2DNT();
186         fieldCpp1=MEDCouplingFieldDoubleClient.New(fieldPtr);
187         fieldCpp2=MEDCouplingFieldDoubleClient.New(fieldPtr);
188         fieldPtr.UnRegister();
189         self.assertTrue(fieldCpp1.isEqual(fieldCpp2,1.e-12,1.e-15))
190         pass
191
192     def corbaField2DNTMFMTThread(self,i,fieldPtr,li):
193         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
194         li[i]=fieldCpp
195         pass
196     
197     def testCorbaField2DNTMultiFetchingMT(self):
198         li=8*[None]
199         th=8*[None]
200         fieldPtr=self._objC.getFieldScalarOn2DNT();
201         for i in range(8):
202             th[i]=threading.Thread(None,self.corbaField2DNTMFMTThread,"Test"+str(i),(i,fieldPtr,li))
203             th[i].start()
204             pass
205         for i in range(8):
206             th[i].join()
207             pass
208         for i in range(8-1):
209             self.assertTrue(li[i].isEqual(li[i+1],1.e-12,1.e-15));
210             pass
211         fieldPtr.UnRegister()
212         pass
213     
214     def testCorbaFieldNode2DNTFetching(self):
215         fieldPtr=self._objC.getFieldNodeScalarOn2DNT();
216         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
217         fieldPtr.UnRegister();
218         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
219         refField=test.buildFieldNodeScalarOn2DNT();
220         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
221         pass
222     
223     def testCorbaField3DNTFetching(self):
224         fieldPtr=self._objC.getFieldScalarOn3DNT();
225         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
226         fieldPtr.UnRegister();
227         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
228         refField=test.buildFieldScalarOn3DNT();
229         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
230         pass
231     
232     def testCorbaField3DSurfWTFetching(self):
233         fieldPtr=self._objC.getFieldScalarOn3DSurfWT();
234         self.assertEqual("toto25",fieldPtr.getName());
235         self.assertEqual(["aaa","bbbb","ccccc"],fieldPtr.getInfoOnComponents());
236         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
237         fieldPtr.UnRegister();
238         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
239         refField=test.buildFieldScalarOn3DSurfWT();
240         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
241         pass
242     
243     def testCorbaField3DSurfCOTIFetching(self):
244         fieldPtr=self._objC.getFieldScalarOn3DSurfCOTI();
245         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
246         fieldPtr.UnRegister();
247         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
248         refField=test.buildFieldScalarOn3DSurfCOTI();
249         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
250         pass
251
252     def testCorbaField2DLTFetching(self):
253         fieldPtr=self._objC.getFieldScalarOn2DLT();
254         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
255         fieldPtr.UnRegister();
256         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
257         refField=test.buildFieldScalarOn2DLT();
258         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
259         pass
260
261     def testCorbaFieldGaussPt2DWTFetching(self):
262         fieldPtr=self._objC.getFieldGaussPt2DWT();
263         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
264         fieldPtr.UnRegister();
265         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
266         refField=test.buildFieldGaussPt2DWT();
267         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
268         pass
269     
270     def testCorbaFieldGaussPtNE2DWTFetching(self):
271         fieldPtr=self._objC.getFieldGaussPtNE2DWT();
272         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
273         fieldPtr.UnRegister();
274         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
275         refField=test.buildFieldGaussPtNE2DWT();
276         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
277         pass
278
279     def testCorbaFieldVectorOnExtrudedWT(self):
280         fieldPtr=self._objC.getFieldVectorOnExtrudedWT();
281         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
282         fieldPtr.UnRegister();
283         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
284         refField=test.buildFieldVectorOnExtrudedWT();
285         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
286         pass
287
288     def testCorbaFieldVectorOnCMeshWT(self):
289         fieldPtr=self._objC.getFieldVectorOnCMeshWT();
290         fieldCpp=MEDCouplingFieldDoubleClient.New(fieldPtr);
291         fieldPtr.UnRegister();
292         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
293         refField=test.buildFieldVectorOnCMeshWT();
294         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
295         pass
296
297     def testCorbaFieldTemplateCellOn2D(self):
298         fieldPtr=self._objC.getFieldTemplateCellOn2D();
299         fieldCpp=MEDCouplingFieldTemplateClient.New(fieldPtr);
300         fieldPtr.UnRegister();
301         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
302         refField=test.buildFieldTemplateCellOn2D();
303         self.assertTrue(fieldCpp.isEqual(refField,1.e-12));
304         pass
305     
306     def testCorbaFieldTemplateNodeOn2D(self):
307         fieldPtr=self._objC.getFieldTemplateNodeOn2D();
308         fieldCpp=MEDCouplingFieldTemplateClient.New(fieldPtr);
309         fieldPtr.UnRegister();
310         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
311         refField=test.buildFieldTemplateNodeOn2D();
312         self.assertTrue(fieldCpp.isEqual(refField,1.e-12));
313         pass
314     
315     def testCorbaFieldTemplateGaussPtOn2D(self):
316         fieldPtr=self._objC.getFieldTemplateGaussPtOn2D();
317         fieldCpp=MEDCouplingFieldTemplateClient.New(fieldPtr);
318         fieldPtr.UnRegister();
319         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
320         refField=test.buildFieldTemplateGaussPtOn2D();
321         self.assertTrue(fieldCpp.isEqual(refField,1.e-12));
322         pass
323     
324     def testCorbaFieldTemplateGaussNEOn2D(self):
325         fieldPtr=self._objC.getFieldTemplateGaussNEOn2D();
326         fieldCpp=MEDCouplingFieldTemplateClient.New(fieldPtr);
327         fieldPtr.UnRegister();
328         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
329         refField=test.buildFieldTemplateGaussNEOn2D();
330         self.assertTrue(fieldCpp.isEqual(refField,1.e-12));
331         pass
332
333     def testCorbaMultiFields1(self):
334         fieldPtr=self._objC.getMultiFields1()
335         fieldCpp=MEDCouplingMultiFieldsClient.New(fieldPtr);
336         fieldPtr.UnRegister()
337         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
338         refField=test.buildMultiFields1();
339         self.assertTrue(fieldCpp.isEqual(refField,1.e-12,1.e-15));
340         pass
341
342     def testCorbaArrayDouble1(self):
343         fieldPtr=self._objC.getArrayDouble1()
344         self.assertEqual("toto",fieldPtr.getName());
345         self.assertEqual(["sss","ppp","ttt"],fieldPtr.getInfoOnComponents());
346         fieldCpp=DataArrayDoubleClient.New(fieldPtr)
347         fieldPtr.UnRegister()
348         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
349         refField=test.buildArrayDouble1();
350         self.assertTrue(fieldCpp.isEqual(refField,1e-12))
351         pass
352     
353     def testCorbaArrayDouble2(self):
354         fieldPtr=self._objC.getArrayDouble2()
355         fieldCpp=DataArrayDoubleClient.New(fieldPtr)
356         fieldPtr.UnRegister()
357         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
358         refField=test.buildArrayDouble2();
359         self.assertTrue(fieldCpp.isEqual(refField,1e-12))
360         pass
361
362     def testCorbaArrayDouble3(self):
363         fieldPtr=self._objC.getArrayDouble3()
364         fieldCpp=DataArrayDoubleClient.New(fieldPtr)
365         fieldPtr.UnRegister()
366         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
367         refField=test.buildArrayDouble3();
368         self.assertTrue(fieldCpp.isEqual(refField,1e-12))
369         pass
370
371     def testCorbaArrayInt1(self):
372         fieldPtr=self._objC.getArrayInt1()
373         fieldCpp=DataArrayIntClient.New(fieldPtr)
374         fieldPtr.UnRegister()
375         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
376         refField=test.buildArrayInt1();
377         self.assertTrue(fieldCpp.isEqual(refField))
378         pass
379
380     def testCorbaArrayInt2(self):
381         fieldPtr=self._objC.getArrayInt2()
382         fieldCpp=DataArrayIntClient.New(fieldPtr)
383         fieldPtr.UnRegister()
384         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
385         refField=test.buildArrayInt2();
386         self.assertTrue(fieldCpp.isEqual(refField))
387         pass
388
389     def testCorbaArrayInt3(self):
390         fieldPtr=self._objC.getArrayInt3()
391         fieldCpp=DataArrayIntClient.New(fieldPtr)
392         fieldPtr.UnRegister()
393         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
394         refField=test.buildArrayInt3();
395         self.assertTrue(fieldCpp.isEqual(refField))
396         pass
397
398     def testCorbaFetchingCoords1(self):
399         meshPtr=self._objC.get3DSurfMesh();
400         cooPtr=meshPtr.getCoords();
401         meshPtr.UnRegister();
402         cooCpp=DataArrayDoubleClient.New(cooPtr);
403         cooPtr.UnRegister();
404         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
405         meshRef=test.build3DSurfMesh();
406         #
407         self.assertTrue(meshRef.getCoords().isEqual(cooCpp,1e-12));
408         pass
409
410     def testCorbaMultiFields2(self):
411         fotPtr=self._objC.getMultiFields2();
412         fotc=MEDCouplingFieldOverTimeClient.New(fotPtr);
413         fotPtr.UnRegister();
414         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
415         refField=test.buildMultiFields2()
416         #
417         self.assertTrue(fotc.isEqual(refField,1.e-12,1.e-15));
418         ts=fotc.getTimeSteps();
419         self.assertEqual(6,len(ts));
420         expected=[0.2,0.7,1.2,1.35,1.7,2.7];
421         for i in range(6):
422             self.assertAlmostEqual(expected[i],ts[i],12);
423         pass
424     
425     def testShutdownServer(self):
426         self._objC.shutdownOrb()
427         pass
428     
429     def setUp(self):
430         self._orb=CORBA.ORB_init([''])      
431         test=MEDCouplingCorbaSwigTest.MEDCouplingCorbaServBasicsTest()
432         f=file(test.buildFileNameForIOR(),"r")
433         ior=f.read()
434         self._objC=self._orb.string_to_object(ior);
435         pass
436     pass
437
438 unittest.main()