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
19 // Author : Anthony Geay (CEA/DEN)
21 #include "MEDCouplingMeshFieldFactoryComponentClt.hxx"
22 #include "MEDCouplingMeshFieldFactoryComponent.hxx"
23 #include "MEDCouplingUMesh.hxx"
24 #include "MEDCouplingUMeshClient.hxx"
25 #include "MEDCouplingExtrudedMesh.hxx"
26 #include "MEDCouplingExtrudedMeshClient.hxx"
27 #include "MEDCouplingCMesh.hxx"
28 #include "MEDCouplingCMeshClient.hxx"
29 #include "MEDCouplingFieldDouble.hxx"
30 #include "MEDCouplingFieldDoubleClient.hxx"
31 #include "MEDCouplingFieldTemplate.hxx"
32 #include "MEDCouplingFieldTemplateClient.hxx"
33 #include "MEDCouplingMultiFields.hxx"
34 #include "MEDCouplingMultiFieldsClient.hxx"
35 #include "MEDCouplingFieldOverTime.hxx"
36 #include "MEDCouplingFieldOverTimeClient.hxx"
37 #include "DataArrayDoubleClient.hxx"
38 #include "DataArrayIntClient.hxx"
42 SALOME_TEST::MEDCouplingMeshFieldFactory_ptr SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_objC;
44 ParaMEDMEM::MEDCouplingUMesh *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_mesh_from_distant=0;
46 int SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argc=0;
48 char **SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argv=0;
50 CORBA::ORB_var SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_orb;
52 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkBaseCorbaFetching()
54 _orb=CORBA::ORB_init(_argc,_argv);
55 std::ifstream ifs(SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFileNameForIOR().c_str());
58 CORBA::Object_var obj=_orb->string_to_object(ior.c_str());
59 _objC=SALOME_TEST::MEDCouplingMeshFieldFactory::_narrow(obj);
60 CPPUNIT_ASSERT(!CORBA::is_nil(_objC));
65 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched1DMesh()
67 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get1DMesh();
68 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
69 char *meshName=meshPtr->getName();
70 std::string meshNameCpp(meshName);
71 CPPUNIT_ASSERT(meshNameCpp=="1DMeshForCorba");
72 CORBA::string_free(meshName);
73 meshPtr->UnRegister();
74 CORBA::release(meshPtr);
75 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
76 CPPUNIT_ASSERT_EQUAL(1,_mesh_from_distant->getMeshDimension());
77 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build1DMesh();
78 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
80 _mesh_from_distant->decrRef();
83 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching2D()
85 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get2DMesh();
86 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
87 meshPtr->UnRegister();
88 CORBA::release(meshPtr);
89 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getSpaceDimension());
90 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getMeshDimension());
93 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched2DMesh()
95 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
96 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
98 _mesh_from_distant->decrRef();
101 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkMultiFetchingToTestMemoryManagement()
103 for(int i=0;i<1000;i++)
105 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get2DMesh();
106 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
107 meshPtr->UnRegister();
108 CORBA::release(meshPtr);
109 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
110 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
112 _mesh_from_distant->decrRef();
116 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3D()
118 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DMesh();
119 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
120 meshPtr->UnRegister();
121 CORBA::release(meshPtr);
122 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
123 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getMeshDimension());
126 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DMesh()
128 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DMesh();
129 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
131 _mesh_from_distant->decrRef();
134 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3DSurf()
136 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DSurfMesh();
137 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
138 meshPtr->UnRegister();
139 CORBA::release(meshPtr);
140 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
141 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getMeshDimension());
144 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DSurfMesh()
146 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
147 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
149 _mesh_from_distant->decrRef();
152 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching0D()
154 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get0DMesh();
155 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
156 meshPtr->UnRegister();
157 CORBA::release(meshPtr);
158 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build0DMesh();
159 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
160 CPPUNIT_ASSERT_EQUAL(0,_mesh_from_distant->getMeshDimension());
161 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
163 _mesh_from_distant->decrRef();
166 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingM1D()
168 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->getM1DMesh();
169 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
170 meshPtr->UnRegister();
171 CORBA::release(meshPtr);
172 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildM1DMesh();
173 CPPUNIT_ASSERT_EQUAL(-1,_mesh_from_distant->getMeshDimension());
174 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
176 _mesh_from_distant->decrRef();
179 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingExtruded()
181 SALOME_MED::MEDCouplingExtrudedMeshCorbaInterface_ptr meshPtr=_objC->getExtrudedMesh();
182 ParaMEDMEM::MEDCouplingExtrudedMesh *meshFromDistant=ParaMEDMEM::MEDCouplingExtrudedMeshClient::New(meshPtr);
183 meshPtr->UnRegister();
184 CORBA::release(meshPtr);
185 ParaMEDMEM::MEDCouplingUMesh *meshRef2;
186 ParaMEDMEM::MEDCouplingExtrudedMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildExtrudedMesh(meshRef2);
187 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
188 CPPUNIT_ASSERT(meshFromDistant->getMesh2D()->isEqual(meshRef2,1e-12));
191 meshFromDistant->decrRef();
194 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCMesh()
196 SALOME_MED::MEDCouplingCMeshCorbaInterface_ptr meshPtr=_objC->getCMesh();
197 ParaMEDMEM::MEDCouplingCMesh *meshFromDistant=ParaMEDMEM::MEDCouplingCMeshClient::New(meshPtr);
198 meshPtr->UnRegister();
199 CORBA::release(meshPtr);
200 ParaMEDMEM::MEDCouplingCMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildCMesh();
201 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
203 meshFromDistant->decrRef();
206 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTFetching()
208 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
209 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
210 fieldPtr->UnRegister();
211 CORBA::release(fieldPtr);
212 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn2DNT();
213 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
214 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
219 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetching()
221 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
222 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
223 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp2=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
224 fieldPtr->UnRegister();
225 CORBA::release(fieldPtr);
226 CPPUNIT_ASSERT(fieldCpp->isEqual(fieldCpp2,1.e-12,1.e-15));
228 fieldCpp2->decrRef();
231 void *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMTStatic(void *stack)
233 char *stackS=(char *)stack;
234 CORBA::Object_var obj=_orb->string_to_object(stackS);
235 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=SALOME_MED::MEDCouplingFieldDoubleCorbaInterface::_narrow(obj);
236 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
237 CORBA::release(fieldPtr);
241 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMT()
243 const int nbOfThreads=8;
244 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
245 //doing nbOfThreads-1 Register.
246 char *ior=_orb->object_to_string(fieldPtr);
247 pthread_t threads[nbOfThreads];
248 ParaMEDMEM::MEDCouplingFieldDouble *rets[nbOfThreads];
249 for(int i=0;i<nbOfThreads;i++)
250 pthread_create(&threads[i],0,checkCorbaField2DNTMultiFetchingMTStatic,ior);
251 for(int i=0;i<nbOfThreads;i++)
252 pthread_join(threads[i],(void **)&rets[i]);
253 for(int i=0;i<nbOfThreads-1;i++)
254 CPPUNIT_ASSERT(rets[i]->isEqual(rets[i+1],1.e-12,1.e-15));
255 for(int i=0;i<nbOfThreads;i++)
257 fieldPtr->UnRegister();
258 CORBA::release(fieldPtr);
259 CORBA::string_free(ior);
262 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldNode2DNTFetching()
264 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldNodeScalarOn2DNT();
265 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
266 fieldPtr->UnRegister();
267 CORBA::release(fieldPtr);
268 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldNodeScalarOn2DNT();
269 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
270 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
275 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DNTFetching()
277 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DNT();
278 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
279 fieldPtr->UnRegister();
280 CORBA::release(fieldPtr);
281 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DNT();
282 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
283 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
288 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfWTFetching()
290 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfWT();
292 char *fieldName=fieldPtr->getName();
293 std::string fieldNameCpp(fieldName);
294 CPPUNIT_ASSERT(fieldNameCpp=="toto25");
295 CORBA::string_free(fieldName);
296 SALOME_TYPES::ListOfString *comps=fieldPtr->getInfoOnComponents();
297 CPPUNIT_ASSERT_EQUAL(3,(int)comps->length());
298 CPPUNIT_ASSERT(std::string((*comps)[0])=="aaa");
299 CPPUNIT_ASSERT(std::string((*comps)[1])=="bbbb");
300 CPPUNIT_ASSERT(std::string((*comps)[2])=="ccccc");
303 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
304 fieldPtr->UnRegister();
305 CORBA::release(fieldPtr);
306 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DSurfWT();
307 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
309 fieldCpp->getTime(dt,it);
310 CPPUNIT_ASSERT_EQUAL(1,dt);
311 CPPUNIT_ASSERT_EQUAL(4,it);
316 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfCOTIFetching()
318 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfCOTI();
319 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
320 fieldPtr->UnRegister();
321 CORBA::release(fieldPtr);
322 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DSurfCOTI();
323 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
325 fieldCpp->getStartTime(dt,it);
326 CPPUNIT_ASSERT_EQUAL(1,dt);
327 CPPUNIT_ASSERT_EQUAL(4,it);
328 fieldCpp->getEndTime(dt,it);
329 CPPUNIT_ASSERT_EQUAL(2,dt);
330 CPPUNIT_ASSERT_EQUAL(8,it);
335 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DLTFetching()
337 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DLT();
338 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
339 fieldPtr->UnRegister();
340 CORBA::release(fieldPtr);
342 const double pos[2]={0.3,-0.2};
343 fieldCpp->getValueOn(pos,10.,res);
344 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.4,res[0],1e-12);
345 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.04,res[1],1e-12);
346 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.004,res[2],1e-12);
347 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.0004,res[3],1e-12);
348 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn2DLT();
349 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
351 CPPUNIT_ASSERT_DOUBLES_EQUAL(6.7,fieldCpp->getStartTime(dt,it),1e-14);
352 CPPUNIT_ASSERT_EQUAL(25,dt);
353 CPPUNIT_ASSERT_EQUAL(26,it);
354 CPPUNIT_ASSERT_DOUBLES_EQUAL(17.2,fieldCpp->getEndTime(dt,it),1e-14);
355 CPPUNIT_ASSERT_EQUAL(125,dt);
356 CPPUNIT_ASSERT_EQUAL(126,it);
361 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPt2DWTFetching()
363 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPt2DWT();
364 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
365 fieldPtr->UnRegister();
366 CORBA::release(fieldPtr);
368 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPt2DWT();
369 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
374 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPtNE2DWTFetching()
376 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPtNE2DWT();
377 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
378 fieldPtr->UnRegister();
379 CORBA::release(fieldPtr);
381 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPtNE2DWT();
382 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
387 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnExtrudedWT()
389 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnExtrudedWT();
390 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
391 fieldPtr->UnRegister();
392 CORBA::release(fieldPtr);
394 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnExtrudedWT();
395 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
400 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnCMeshWT()
402 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnCMeshWT();
403 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
404 fieldPtr->UnRegister();
405 CORBA::release(fieldPtr);
407 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnCMeshWT();
408 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
413 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateCellOn2D()
415 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateCellOn2D();
416 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
417 fieldPtr->UnRegister();
418 CORBA::release(fieldPtr);
420 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateCellOn2D();
421 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
426 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateNodeOn2D()
428 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateNodeOn2D();
429 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
430 fieldPtr->UnRegister();
431 CORBA::release(fieldPtr);
433 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateNodeOn2D();
434 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
439 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussPtOn2D()
441 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussPtOn2D();
442 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
443 fieldPtr->UnRegister();
444 CORBA::release(fieldPtr);
446 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussPtOn2D();
447 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
452 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussNEOn2D()
454 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussNEOn2D();
455 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
456 fieldPtr->UnRegister();
457 CORBA::release(fieldPtr);
459 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussNEOn2D();
460 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
465 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields1()
467 SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_ptr fieldPtr=_objC->getMultiFields1();
468 ParaMEDMEM::MEDCouplingMultiFields *fieldCpp=ParaMEDMEM::MEDCouplingMultiFieldsClient::New(fieldPtr);
469 fieldPtr->UnRegister();
470 CORBA::release(fieldPtr);
472 ParaMEDMEM::MEDCouplingMultiFields *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields1();
473 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
478 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble1()
480 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble1();
482 char *fieldName=fieldPtr->getName();
483 std::string fieldNameCpp(fieldName);
484 CPPUNIT_ASSERT(fieldNameCpp=="toto");
485 CORBA::string_free(fieldName);
486 SALOME_TYPES::ListOfString *comps=fieldPtr->getInfoOnComponents();
487 CPPUNIT_ASSERT_EQUAL(3,(int)comps->length());
488 CPPUNIT_ASSERT(std::string((*comps)[0])=="sss");
489 CPPUNIT_ASSERT(std::string((*comps)[1])=="ppp");
490 CPPUNIT_ASSERT(std::string((*comps)[2])=="ttt");
493 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
494 fieldPtr->UnRegister();
495 CORBA::release(fieldPtr);
497 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble1();
498 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
503 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble2()
505 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble2();
506 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
507 fieldPtr->UnRegister();
508 CORBA::release(fieldPtr);
510 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble2();
511 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
516 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble3()
518 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble3();
519 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
520 fieldPtr->UnRegister();
521 CORBA::release(fieldPtr);
523 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble3();
524 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
529 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt1()
531 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt1();
532 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
533 fieldPtr->UnRegister();
534 CORBA::release(fieldPtr);
536 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt1();
537 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
542 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt2()
544 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt2();
545 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
546 fieldPtr->UnRegister();
547 CORBA::release(fieldPtr);
549 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt2();
550 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
555 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt3()
557 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt3();
558 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
559 fieldPtr->UnRegister();
560 CORBA::release(fieldPtr);
562 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt3();
563 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
568 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCoords1()
570 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DSurfMesh();
571 SALOME_MED::DataArrayDoubleCorbaInterface_ptr cooPtr=meshPtr->getCoords();
572 meshPtr->UnRegister();
573 CORBA::release(meshPtr);
574 ParaMEDMEM::DataArrayDouble *cooCpp=ParaMEDMEM::DataArrayDoubleClient::New(cooPtr);
575 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
577 CPPUNIT_ASSERT(meshRef->getCoords()->isEqual(*cooCpp,1e-12));
579 cooPtr->UnRegister();
580 CORBA::release(cooPtr);
585 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields2()
587 SALOME_MED::MEDCouplingFieldOverTimeCorbaInterface_ptr fotPtr=_objC->getMultiFields2();
588 ParaMEDMEM::MEDCouplingFieldOverTimeClient *fotc=ParaMEDMEM::MEDCouplingFieldOverTimeClient::New(fotPtr);
589 fotPtr->UnRegister();
590 CORBA::release(fotPtr);
592 ParaMEDMEM::MEDCouplingFieldOverTime *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields2();
593 CPPUNIT_ASSERT(fotc->isEqual(refField,1.e-12,1.e-15));
595 std::vector<double> ts=fotc->getTimeSteps();
596 CPPUNIT_ASSERT_EQUAL(6,(int)ts.size());
597 const double expected[6]={0.2,0.7,1.2,1.35,1.7,2.7};
599 CPPUNIT_ASSERT_DOUBLES_EQUAL(expected[i],ts[i],1e-12);
603 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::shutdownServer()
605 _objC->shutdownOrb();