1 // Copyright (C) 2007-2012 CEA/DEN, EDF R&D
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.
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.
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
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"
41 SALOME_TEST::MEDCouplingMeshFieldFactory_ptr SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_objC;
43 ParaMEDMEM::MEDCouplingUMesh *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_mesh_from_distant=0;
45 int SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argc=0;
47 char **SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argv=0;
49 CORBA::ORB_var SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_orb;
51 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkBaseCorbaFetching()
53 _orb=CORBA::ORB_init(_argc,_argv);
54 std::ifstream ifs(SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFileNameForIOR().c_str());
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));
64 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched1DMesh()
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));
79 _mesh_from_distant->decrRef();
82 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching2D()
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());
92 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched2DMesh()
94 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
95 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
97 _mesh_from_distant->decrRef();
100 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkMultiFetchingToTestMemoryManagement()
102 for(int i=0;i<1000;i++)
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));
111 _mesh_from_distant->decrRef();
115 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3D()
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());
125 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DMesh()
127 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DMesh();
128 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
130 _mesh_from_distant->decrRef();
133 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3DSurf()
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());
143 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DSurfMesh()
145 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
146 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
148 _mesh_from_distant->decrRef();
151 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching0D()
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));
162 _mesh_from_distant->decrRef();
165 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingM1D()
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));
175 _mesh_from_distant->decrRef();
178 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingExtruded()
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));
190 meshFromDistant->decrRef();
193 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCMesh()
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));
202 meshFromDistant->decrRef();
205 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTFetching()
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);
218 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetching()
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));
227 fieldCpp2->decrRef();
230 void *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMTStatic(void *stack)
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);
240 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMT()
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++)
256 fieldPtr->UnRegister();
257 CORBA::release(fieldPtr);
258 CORBA::string_free(ior);
261 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldNode2DNTFetching()
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);
274 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DNTFetching()
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);
287 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfWTFetching()
289 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfWT();
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");
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));
308 fieldCpp->getTime(dt,it);
309 CPPUNIT_ASSERT_EQUAL(1,dt);
310 CPPUNIT_ASSERT_EQUAL(4,it);
315 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfCOTIFetching()
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));
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);
334 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DLTFetching()
336 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DLT();
337 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
338 fieldPtr->UnRegister();
339 CORBA::release(fieldPtr);
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));
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);
360 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPt2DWTFetching()
362 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPt2DWT();
363 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
364 fieldPtr->UnRegister();
365 CORBA::release(fieldPtr);
367 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPt2DWT();
368 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
373 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPtNE2DWTFetching()
375 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPtNE2DWT();
376 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
377 fieldPtr->UnRegister();
378 CORBA::release(fieldPtr);
380 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPtNE2DWT();
381 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
386 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnExtrudedWT()
388 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnExtrudedWT();
389 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
390 fieldPtr->UnRegister();
391 CORBA::release(fieldPtr);
393 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnExtrudedWT();
394 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
399 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnCMeshWT()
401 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnCMeshWT();
402 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
403 fieldPtr->UnRegister();
404 CORBA::release(fieldPtr);
406 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnCMeshWT();
407 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
412 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateCellOn2D()
414 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateCellOn2D();
415 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
416 fieldPtr->UnRegister();
417 CORBA::release(fieldPtr);
419 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateCellOn2D();
420 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
425 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateNodeOn2D()
427 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateNodeOn2D();
428 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
429 fieldPtr->UnRegister();
430 CORBA::release(fieldPtr);
432 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateNodeOn2D();
433 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
438 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussPtOn2D()
440 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussPtOn2D();
441 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
442 fieldPtr->UnRegister();
443 CORBA::release(fieldPtr);
445 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussPtOn2D();
446 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
451 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussNEOn2D()
453 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussNEOn2D();
454 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
455 fieldPtr->UnRegister();
456 CORBA::release(fieldPtr);
458 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussNEOn2D();
459 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
464 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields1()
466 SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_ptr fieldPtr=_objC->getMultiFields1();
467 ParaMEDMEM::MEDCouplingMultiFields *fieldCpp=ParaMEDMEM::MEDCouplingMultiFieldsClient::New(fieldPtr);
468 fieldPtr->UnRegister();
469 CORBA::release(fieldPtr);
471 ParaMEDMEM::MEDCouplingMultiFields *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields1();
472 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
477 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble1()
479 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble1();
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");
492 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
493 fieldPtr->UnRegister();
494 CORBA::release(fieldPtr);
496 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble1();
497 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
502 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble2()
504 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble2();
505 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
506 fieldPtr->UnRegister();
507 CORBA::release(fieldPtr);
509 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble2();
510 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
515 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble3()
517 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble3();
518 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
519 fieldPtr->UnRegister();
520 CORBA::release(fieldPtr);
522 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble3();
523 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
528 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt1()
530 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt1();
531 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
532 fieldPtr->UnRegister();
533 CORBA::release(fieldPtr);
535 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt1();
536 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
541 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt2()
543 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt2();
544 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
545 fieldPtr->UnRegister();
546 CORBA::release(fieldPtr);
548 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt2();
549 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
554 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt3()
556 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt3();
557 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
558 fieldPtr->UnRegister();
559 CORBA::release(fieldPtr);
561 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt3();
562 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
567 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCoords1()
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();
576 CPPUNIT_ASSERT(meshRef->getCoords()->isEqual(*cooCpp,1e-12));
578 cooPtr->UnRegister();
579 CORBA::release(cooPtr);
584 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields2()
586 SALOME_MED::MEDCouplingFieldOverTimeCorbaInterface_ptr fotPtr=_objC->getMultiFields2();
587 ParaMEDMEM::MEDCouplingFieldOverTimeClient *fotc=ParaMEDMEM::MEDCouplingFieldOverTimeClient::New(fotPtr);
588 fotPtr->UnRegister();
589 CORBA::release(fotPtr);
591 ParaMEDMEM::MEDCouplingFieldOverTime *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields2();
592 CPPUNIT_ASSERT(fotc->isEqual(refField,1.e-12,1.e-15));
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};
598 CPPUNIT_ASSERT_DOUBLES_EQUAL(expected[i],ts[i],1e-12);
602 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::shutdownServer()
604 _objC->shutdownOrb();