Salome HOME
Merge from V6_main_20120808 08Aug12
[modules/med.git] / src / MEDCouplingCorba / Test / MEDCouplingMeshFieldFactoryComponentClt.cxx
1 // Copyright (C) 2007-2012  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.
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
20 #include "MEDCouplingMeshFieldFactoryComponentClt.hxx"
21 #include "MEDCouplingMeshFieldFactoryComponent.hxx"
22 #include "MEDCouplingUMesh.hxx"
23 #include "MEDCouplingUMeshClient.hxx"
24 #include "MEDCouplingExtrudedMesh.hxx"
25 #include "MEDCouplingExtrudedMeshClient.hxx"
26 #include "MEDCouplingCMesh.hxx"
27 #include "MEDCouplingCMeshClient.hxx"
28 #include "MEDCouplingFieldDouble.hxx"
29 #include "MEDCouplingFieldDoubleClient.hxx"
30 #include "MEDCouplingFieldTemplate.hxx"
31 #include "MEDCouplingFieldTemplateClient.hxx"
32 #include "MEDCouplingMultiFields.hxx"
33 #include "MEDCouplingMultiFieldsClient.hxx"
34 #include "MEDCouplingFieldOverTime.hxx"
35 #include "MEDCouplingFieldOverTimeClient.hxx"
36 #include "DataArrayDoubleClient.hxx"
37 #include "DataArrayIntClient.hxx"
38 #include <fstream>
39 #include <pthread.h>
40
41 SALOME_TEST::MEDCouplingMeshFieldFactory_ptr SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_objC;
42
43 ParaMEDMEM::MEDCouplingUMesh *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_mesh_from_distant=0;
44
45 int SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argc=0;
46
47 char **SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argv=0;
48
49 CORBA::ORB_var SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_orb;
50
51 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkBaseCorbaFetching()
52 {
53   _orb=CORBA::ORB_init(_argc,_argv);
54   std::ifstream ifs(SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFileNameForIOR().c_str());
55   std::string ior;
56   ifs >> ior;
57   CORBA::Object_var obj=_orb->string_to_object(ior.c_str());
58   _objC=SALOME_TEST::MEDCouplingMeshFieldFactory::_narrow(obj);
59   CPPUNIT_ASSERT(!CORBA::is_nil(_objC));
60 }
61
62
63
64 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched1DMesh()
65 {
66   SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get1DMesh();
67   _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
68   char *meshName=meshPtr->getName();
69   std::string meshNameCpp(meshName);
70   CPPUNIT_ASSERT(meshNameCpp=="1DMeshForCorba");
71   CORBA::string_free(meshName);
72   meshPtr->UnRegister();
73   CORBA::release(meshPtr);
74   CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
75   CPPUNIT_ASSERT_EQUAL(1,_mesh_from_distant->getMeshDimension());
76   ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build1DMesh();
77   CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
78   meshRef->decrRef();
79   _mesh_from_distant->decrRef();
80 }
81
82 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching2D()
83 {
84   SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get2DMesh();
85   _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
86   meshPtr->UnRegister();
87   CORBA::release(meshPtr);
88   CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getSpaceDimension());
89   CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getMeshDimension());
90 }
91
92 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched2DMesh()
93 {
94   ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
95   CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
96   meshRef->decrRef();
97   _mesh_from_distant->decrRef();
98 }
99
100 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkMultiFetchingToTestMemoryManagement()
101 {
102   for(int i=0;i<1000;i++)
103     {
104       SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get2DMesh();
105       _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
106       meshPtr->UnRegister();
107       CORBA::release(meshPtr);
108       ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
109       CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
110       meshRef->decrRef();
111       _mesh_from_distant->decrRef();
112     }
113 }
114
115 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3D()
116 {
117   SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DMesh();
118   _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
119   meshPtr->UnRegister();
120   CORBA::release(meshPtr);
121   CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
122   CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getMeshDimension());
123 }
124
125 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DMesh()
126 {
127   ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DMesh();
128   CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
129   meshRef->decrRef();
130   _mesh_from_distant->decrRef();
131 }
132
133 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3DSurf()
134 {
135   SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DSurfMesh();
136   _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
137   meshPtr->UnRegister();
138   CORBA::release(meshPtr);
139   CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
140   CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getMeshDimension());
141 }
142
143 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DSurfMesh()
144 {
145   ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
146   CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
147   meshRef->decrRef();
148   _mesh_from_distant->decrRef();
149 }
150
151 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching0D()
152 {
153   SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get0DMesh();
154   _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
155   meshPtr->UnRegister();
156   CORBA::release(meshPtr);
157   ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build0DMesh();
158   CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
159   CPPUNIT_ASSERT_EQUAL(0,_mesh_from_distant->getMeshDimension());
160   CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
161   meshRef->decrRef();
162   _mesh_from_distant->decrRef();
163 }
164
165 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingM1D()
166 {
167   SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->getM1DMesh();
168   _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
169   meshPtr->UnRegister();
170   CORBA::release(meshPtr);
171   ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildM1DMesh();
172   CPPUNIT_ASSERT_EQUAL(-1,_mesh_from_distant->getMeshDimension());
173   CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
174   meshRef->decrRef();
175   _mesh_from_distant->decrRef();
176 }
177
178 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingExtruded()
179 {
180   SALOME_MED::MEDCouplingExtrudedMeshCorbaInterface_ptr meshPtr=_objC->getExtrudedMesh();
181   ParaMEDMEM::MEDCouplingExtrudedMesh *meshFromDistant=ParaMEDMEM::MEDCouplingExtrudedMeshClient::New(meshPtr);
182   meshPtr->UnRegister();
183   CORBA::release(meshPtr);
184   ParaMEDMEM::MEDCouplingUMesh *meshRef2;
185   ParaMEDMEM::MEDCouplingExtrudedMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildExtrudedMesh(meshRef2);
186   CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
187   CPPUNIT_ASSERT(meshFromDistant->getMesh2D()->isEqual(meshRef2,1e-12));
188   meshRef2->decrRef();
189   meshRef->decrRef();
190   meshFromDistant->decrRef();
191 }
192
193 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCMesh()
194 {
195   SALOME_MED::MEDCouplingCMeshCorbaInterface_ptr meshPtr=_objC->getCMesh();
196   ParaMEDMEM::MEDCouplingCMesh *meshFromDistant=ParaMEDMEM::MEDCouplingCMeshClient::New(meshPtr);
197   meshPtr->UnRegister();
198   CORBA::release(meshPtr);
199   ParaMEDMEM::MEDCouplingCMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildCMesh();
200   CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
201   meshRef->decrRef();
202   meshFromDistant->decrRef();
203 }
204
205 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTFetching()
206 {
207   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
208   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
209   fieldPtr->UnRegister();
210   CORBA::release(fieldPtr);
211   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn2DNT();
212   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
213   CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
214   refField->decrRef();
215   fieldCpp->decrRef();
216 }
217
218 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetching()
219 {
220   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
221   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
222   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp2=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
223   fieldPtr->UnRegister();
224   CORBA::release(fieldPtr);
225   CPPUNIT_ASSERT(fieldCpp->isEqual(fieldCpp2,1.e-12,1.e-15));
226   fieldCpp->decrRef();
227   fieldCpp2->decrRef();
228 }
229
230 void *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMTStatic(void *stack)
231 {
232   char *stackS=(char *)stack;
233   CORBA::Object_var obj=_orb->string_to_object(stackS);
234   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=SALOME_MED::MEDCouplingFieldDoubleCorbaInterface::_narrow(obj);
235   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
236   CORBA::release(fieldPtr);
237   return fieldCpp;
238 }
239
240 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMT()
241 {
242   const int nbOfThreads=8;
243   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
244   //doing nbOfThreads-1 Register.
245   char *ior=_orb->object_to_string(fieldPtr);
246   pthread_t threads[nbOfThreads];
247   ParaMEDMEM::MEDCouplingFieldDouble *rets[nbOfThreads];
248   for(int i=0;i<nbOfThreads;i++)
249     pthread_create(&threads[i],0,checkCorbaField2DNTMultiFetchingMTStatic,ior);
250   for(int i=0;i<nbOfThreads;i++)
251     pthread_join(threads[i],(void **)&rets[i]);
252   for(int i=0;i<nbOfThreads-1;i++)
253     CPPUNIT_ASSERT(rets[i]->isEqual(rets[i+1],1.e-12,1.e-15));
254   for(int i=0;i<nbOfThreads;i++)
255     rets[i]->decrRef();
256   fieldPtr->UnRegister();
257   CORBA::release(fieldPtr);
258   CORBA::string_free(ior);
259 }
260
261 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldNode2DNTFetching()
262 {
263   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldNodeScalarOn2DNT();
264   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
265   fieldPtr->UnRegister();
266   CORBA::release(fieldPtr);
267   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldNodeScalarOn2DNT();
268   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
269   CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
270   refField->decrRef();
271   fieldCpp->decrRef();
272 }
273
274 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DNTFetching()
275 {
276   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DNT();
277   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
278   fieldPtr->UnRegister();
279   CORBA::release(fieldPtr);
280   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DNT();
281   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
282   CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
283   refField->decrRef();
284   fieldCpp->decrRef();
285 }
286
287 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfWTFetching()
288 {
289   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfWT();
290   //
291   char *fieldName=fieldPtr->getName();
292   std::string fieldNameCpp(fieldName);
293   CPPUNIT_ASSERT(fieldNameCpp=="toto25");
294   CORBA::string_free(fieldName);
295   SALOME_TYPES::ListOfString *comps=fieldPtr->getInfoOnComponents();
296   CPPUNIT_ASSERT_EQUAL(3,(int)comps->length());
297   CPPUNIT_ASSERT(std::string((*comps)[0])=="aaa");
298   CPPUNIT_ASSERT(std::string((*comps)[1])=="bbbb");
299   CPPUNIT_ASSERT(std::string((*comps)[2])=="ccccc");
300   delete comps;
301   //
302   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
303   fieldPtr->UnRegister();
304   CORBA::release(fieldPtr);
305   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DSurfWT();
306   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
307   int dt,it;
308   fieldCpp->getTime(dt,it);
309   CPPUNIT_ASSERT_EQUAL(1,dt);
310   CPPUNIT_ASSERT_EQUAL(4,it);
311   refField->decrRef();
312   fieldCpp->decrRef();
313 }
314
315 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfCOTIFetching()
316 {
317   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfCOTI();
318   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
319   fieldPtr->UnRegister();
320   CORBA::release(fieldPtr);
321   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DSurfCOTI();
322   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
323   int dt,it;
324   fieldCpp->getStartTime(dt,it);
325   CPPUNIT_ASSERT_EQUAL(1,dt);
326   CPPUNIT_ASSERT_EQUAL(4,it);
327   fieldCpp->getEndTime(dt,it);
328   CPPUNIT_ASSERT_EQUAL(2,dt);
329   CPPUNIT_ASSERT_EQUAL(8,it);
330   refField->decrRef();
331   fieldCpp->decrRef();
332 }
333
334 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DLTFetching()
335 {
336   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DLT();
337   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
338   fieldPtr->UnRegister();
339   CORBA::release(fieldPtr);
340   double res[4];
341   const double pos[2]={0.3,-0.2};
342   fieldCpp->getValueOn(pos,10.,res);
343   CPPUNIT_ASSERT_DOUBLES_EQUAL(25.4,res[0],1e-12);
344   CPPUNIT_ASSERT_DOUBLES_EQUAL(25.04,res[1],1e-12);
345   CPPUNIT_ASSERT_DOUBLES_EQUAL(25.004,res[2],1e-12);
346   CPPUNIT_ASSERT_DOUBLES_EQUAL(25.0004,res[3],1e-12);
347   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn2DLT();
348   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
349   int dt,it;
350   CPPUNIT_ASSERT_DOUBLES_EQUAL(6.7,fieldCpp->getStartTime(dt,it),1e-14);
351   CPPUNIT_ASSERT_EQUAL(25,dt);
352   CPPUNIT_ASSERT_EQUAL(26,it);
353   CPPUNIT_ASSERT_DOUBLES_EQUAL(17.2,fieldCpp->getEndTime(dt,it),1e-14);
354   CPPUNIT_ASSERT_EQUAL(125,dt);
355   CPPUNIT_ASSERT_EQUAL(126,it);
356   refField->decrRef();
357   fieldCpp->decrRef();
358 }
359
360 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPt2DWTFetching()
361 {
362   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPt2DWT();
363   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
364   fieldPtr->UnRegister();
365   CORBA::release(fieldPtr);
366   //
367   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPt2DWT();
368   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
369   refField->decrRef();
370   fieldCpp->decrRef();
371 }
372
373 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPtNE2DWTFetching()
374 {
375   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPtNE2DWT();
376   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
377   fieldPtr->UnRegister();
378   CORBA::release(fieldPtr);
379   //
380   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPtNE2DWT();
381   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
382   refField->decrRef();
383   fieldCpp->decrRef();
384 }
385
386 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnExtrudedWT()
387 {
388   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnExtrudedWT();
389   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
390   fieldPtr->UnRegister();
391   CORBA::release(fieldPtr);
392   //
393   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnExtrudedWT();
394   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
395   refField->decrRef();
396   fieldCpp->decrRef();
397 }
398
399 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnCMeshWT()
400 {
401   SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnCMeshWT();
402   ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
403   fieldPtr->UnRegister();
404   CORBA::release(fieldPtr);
405   //
406   ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnCMeshWT();
407   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
408   refField->decrRef();
409   fieldCpp->decrRef();
410 }
411
412 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateCellOn2D()
413 {
414   SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateCellOn2D();
415   ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
416   fieldPtr->UnRegister();
417   CORBA::release(fieldPtr);
418   //
419   ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateCellOn2D();
420   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
421   refField->decrRef();
422   fieldCpp->decrRef();
423 }
424
425 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateNodeOn2D()
426 {
427   SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateNodeOn2D();
428   ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
429   fieldPtr->UnRegister();
430   CORBA::release(fieldPtr);
431   //
432   ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateNodeOn2D();
433   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
434   refField->decrRef();
435   fieldCpp->decrRef();
436 }
437
438 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussPtOn2D()
439 {
440   SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussPtOn2D();
441   ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
442   fieldPtr->UnRegister();
443   CORBA::release(fieldPtr);
444   //
445   ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussPtOn2D();
446   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
447   refField->decrRef();
448   fieldCpp->decrRef();
449 }
450
451 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussNEOn2D()
452 {
453   SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussNEOn2D();
454   ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
455   fieldPtr->UnRegister();
456   CORBA::release(fieldPtr);
457   //
458   ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussNEOn2D();
459   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
460   refField->decrRef();
461   fieldCpp->decrRef();
462 }
463
464 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields1()
465 {
466   SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_ptr fieldPtr=_objC->getMultiFields1();
467   ParaMEDMEM::MEDCouplingMultiFields *fieldCpp=ParaMEDMEM::MEDCouplingMultiFieldsClient::New(fieldPtr);
468   fieldPtr->UnRegister();
469   CORBA::release(fieldPtr);
470   //
471   ParaMEDMEM::MEDCouplingMultiFields *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields1();
472   CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
473   refField->decrRef();
474   fieldCpp->decrRef();
475 }
476
477 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble1()
478 {
479   SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble1();
480   //
481   char *fieldName=fieldPtr->getName();
482   std::string fieldNameCpp(fieldName);
483   CPPUNIT_ASSERT(fieldNameCpp=="toto");
484   CORBA::string_free(fieldName);
485   SALOME_TYPES::ListOfString *comps=fieldPtr->getInfoOnComponents();
486   CPPUNIT_ASSERT_EQUAL(3,(int)comps->length());
487   CPPUNIT_ASSERT(std::string((*comps)[0])=="sss");
488   CPPUNIT_ASSERT(std::string((*comps)[1])=="ppp");
489   CPPUNIT_ASSERT(std::string((*comps)[2])=="ttt");
490   delete comps;
491   //
492   ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
493   fieldPtr->UnRegister();
494   CORBA::release(fieldPtr);
495   //
496   ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble1();
497   CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
498   refField->decrRef();
499   fieldCpp->decrRef();
500 }
501
502 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble2()
503 {
504   SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble2();
505   ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
506   fieldPtr->UnRegister();
507   CORBA::release(fieldPtr);
508   //
509   ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble2();
510   CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
511   refField->decrRef();
512   fieldCpp->decrRef();
513 }
514
515 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble3()
516 {
517   SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble3();
518   ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
519   fieldPtr->UnRegister();
520   CORBA::release(fieldPtr);
521   //
522   ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble3();
523   CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
524   refField->decrRef();
525   fieldCpp->decrRef();
526 }
527
528 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt1()
529 {
530   SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt1();
531   ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
532   fieldPtr->UnRegister();
533   CORBA::release(fieldPtr);
534   //
535   ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt1();
536   CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
537   refField->decrRef();
538   fieldCpp->decrRef();
539 }
540
541 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt2()
542 {
543   SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt2();
544   ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
545   fieldPtr->UnRegister();
546   CORBA::release(fieldPtr);
547   //
548   ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt2();
549   CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
550   refField->decrRef();
551   fieldCpp->decrRef();
552 }
553
554 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt3()
555 {
556   SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt3();
557   ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
558   fieldPtr->UnRegister();
559   CORBA::release(fieldPtr);
560   //
561   ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt3();
562   CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
563   refField->decrRef();
564   fieldCpp->decrRef();
565 }
566
567 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCoords1()
568 {
569   SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DSurfMesh();
570   SALOME_MED::DataArrayDoubleCorbaInterface_ptr cooPtr=meshPtr->getCoords();
571   meshPtr->UnRegister();
572   CORBA::release(meshPtr);
573   ParaMEDMEM::DataArrayDouble *cooCpp=ParaMEDMEM::DataArrayDoubleClient::New(cooPtr);
574   ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
575   //
576   CPPUNIT_ASSERT(meshRef->getCoords()->isEqual(*cooCpp,1e-12));
577   //
578   cooPtr->UnRegister();
579   CORBA::release(cooPtr);
580   cooCpp->decrRef();
581   meshRef->decrRef();
582 }
583
584 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields2()
585 {
586   SALOME_MED::MEDCouplingFieldOverTimeCorbaInterface_ptr fotPtr=_objC->getMultiFields2();
587   ParaMEDMEM::MEDCouplingFieldOverTimeClient *fotc=ParaMEDMEM::MEDCouplingFieldOverTimeClient::New(fotPtr);
588   fotPtr->UnRegister();
589   CORBA::release(fotPtr);
590   //
591   ParaMEDMEM::MEDCouplingFieldOverTime *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields2();
592   CPPUNIT_ASSERT(fotc->isEqual(refField,1.e-12,1.e-15));
593   refField->decrRef();
594   std::vector<double> ts=fotc->getTimeSteps();
595   CPPUNIT_ASSERT_EQUAL(6,(int)ts.size());
596   const double expected[6]={0.2,0.7,1.2,1.35,1.7,2.7};
597   for(int i=0;i<6;i++)
598     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected[i],ts[i],1e-12);
599   fotc->decrRef();
600 }
601
602 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::shutdownServer()
603 {
604   _objC->shutdownOrb();
605 }