1 // Copyright (C) 2007-2014 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, or (at your option) any later version.
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 "MEDCoupling1GTUMesh.hxx"
26 #include "MEDCoupling1SGTUMeshClient.hxx"
27 #include "MEDCoupling1DGTUMeshClient.hxx"
28 #include "MEDCouplingExtrudedMesh.hxx"
29 #include "MEDCouplingExtrudedMeshClient.hxx"
30 #include "MEDCouplingCMesh.hxx"
31 #include "MEDCouplingCMeshClient.hxx"
32 #include "MEDCouplingCurveLinearMesh.hxx"
33 #include "MEDCouplingCurveLinearMeshClient.hxx"
34 #include "MEDCouplingFieldDouble.hxx"
35 #include "MEDCouplingFieldDoubleClient.hxx"
36 #include "MEDCouplingFieldTemplate.hxx"
37 #include "MEDCouplingFieldTemplateClient.hxx"
38 #include "MEDCouplingMultiFields.hxx"
39 #include "MEDCouplingMultiFieldsClient.hxx"
40 #include "MEDCouplingFieldOverTime.hxx"
41 #include "MEDCouplingFieldOverTimeClient.hxx"
42 #include "DataArrayDoubleClient.hxx"
43 #include "DataArrayIntClient.hxx"
47 SALOME_TEST::MEDCouplingMeshFieldFactory_ptr SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_objC;
49 ParaMEDMEM::MEDCouplingUMesh *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_mesh_from_distant=0;
51 int SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argc=0;
53 char **SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argv=0;
55 CORBA::ORB_var SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_orb;
57 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkBaseCorbaFetching()
59 _orb=CORBA::ORB_init(_argc,_argv);
60 std::ifstream ifs(SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFileNameForIOR().c_str());
63 CORBA::Object_var obj=_orb->string_to_object(ior.c_str());
64 _objC=SALOME_TEST::MEDCouplingMeshFieldFactory::_narrow(obj);
65 CPPUNIT_ASSERT(!CORBA::is_nil(_objC));
70 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched1DMesh()
72 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get1DMesh();
73 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
74 char *meshName=meshPtr->getName();
75 std::string meshNameCpp(meshName);
76 CPPUNIT_ASSERT(meshNameCpp=="1DMeshForCorba");
77 CORBA::string_free(meshName);
78 meshPtr->UnRegister();
79 CORBA::release(meshPtr);
80 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
81 CPPUNIT_ASSERT_EQUAL(1,_mesh_from_distant->getMeshDimension());
82 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build1DMesh();
83 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
85 _mesh_from_distant->decrRef();
88 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching2D()
90 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get2DMesh();
91 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
92 meshPtr->UnRegister();
93 CORBA::release(meshPtr);
94 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getSpaceDimension());
95 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getMeshDimension());
98 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched2DMesh()
100 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
101 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
103 _mesh_from_distant->decrRef();
106 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkMultiFetchingToTestMemoryManagement()
108 for(int i=0;i<1000;i++)
110 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get2DMesh();
111 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
112 meshPtr->UnRegister();
113 CORBA::release(meshPtr);
114 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
115 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
117 _mesh_from_distant->decrRef();
121 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3D()
123 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DMesh();
124 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
125 meshPtr->UnRegister();
126 CORBA::release(meshPtr);
127 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
128 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getMeshDimension());
131 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DMesh()
133 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DMesh();
134 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
136 _mesh_from_distant->decrRef();
139 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3DSurf()
141 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DSurfMesh();
142 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
143 meshPtr->UnRegister();
144 CORBA::release(meshPtr);
145 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
146 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getMeshDimension());
149 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DSurfMesh()
151 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
152 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
154 _mesh_from_distant->decrRef();
157 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching0D()
159 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get0DMesh();
160 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
161 meshPtr->UnRegister();
162 CORBA::release(meshPtr);
163 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build0DMesh();
164 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
165 CPPUNIT_ASSERT_EQUAL(0,_mesh_from_distant->getMeshDimension());
166 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
168 _mesh_from_distant->decrRef();
171 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingM1D()
173 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->getM1DMesh();
174 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
175 meshPtr->UnRegister();
176 CORBA::release(meshPtr);
177 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildM1DMesh();
178 CPPUNIT_ASSERT_EQUAL(-1,_mesh_from_distant->getMeshDimension());
179 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
181 _mesh_from_distant->decrRef();
184 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingExtruded()
186 SALOME_MED::MEDCouplingExtrudedMeshCorbaInterface_ptr meshPtr=_objC->getExtrudedMesh();
187 ParaMEDMEM::MEDCouplingExtrudedMesh *meshFromDistant=ParaMEDMEM::MEDCouplingExtrudedMeshClient::New(meshPtr);
188 meshPtr->UnRegister();
189 CORBA::release(meshPtr);
190 ParaMEDMEM::MEDCouplingUMesh *meshRef2;
191 ParaMEDMEM::MEDCouplingExtrudedMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildExtrudedMesh(meshRef2);
192 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
193 CPPUNIT_ASSERT(meshFromDistant->getMesh2D()->isEqual(meshRef2,1e-12));
196 meshFromDistant->decrRef();
199 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCMesh()
201 SALOME_MED::MEDCouplingCMeshCorbaInterface_ptr meshPtr=_objC->getCMesh();
202 ParaMEDMEM::MEDCouplingCMesh *meshFromDistant=ParaMEDMEM::MEDCouplingCMeshClient::New(meshPtr);
203 meshPtr->UnRegister();
204 CORBA::release(meshPtr);
205 ParaMEDMEM::MEDCouplingCMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildCMesh();
206 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
208 meshFromDistant->decrRef();
211 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCurveLinearMesh()
213 SALOME_MED::MEDCouplingCurveLinearMeshCorbaInterface_ptr meshPtr=_objC->getCLMesh();
214 ParaMEDMEM::MEDCouplingCurveLinearMesh *meshFromDistant=ParaMEDMEM::MEDCouplingCurveLinearMeshClient::New(meshPtr);
215 meshPtr->UnRegister();
216 CORBA::release(meshPtr);
217 ParaMEDMEM::MEDCouplingCurveLinearMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildCLMesh();
218 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
220 meshFromDistant->decrRef();
223 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching1SGTUMesh()
225 SALOME_MED::MEDCoupling1SGTUMeshCorbaInterface_ptr meshPtr=_objC->get1SGTUMesh();
226 ParaMEDMEM::MEDCoupling1SGTUMesh *meshFromDistant=ParaMEDMEM::MEDCoupling1SGTUMeshClient::New(meshPtr);
227 meshPtr->UnRegister();
228 CORBA::release(meshPtr);
229 ParaMEDMEM::MEDCoupling1SGTUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build1SGTUMesh();
230 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
232 meshFromDistant->decrRef();
235 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching1DGTUMesh()
237 SALOME_MED::MEDCoupling1DGTUMeshCorbaInterface_ptr meshPtr=_objC->get1DGTUMesh();
238 ParaMEDMEM::MEDCoupling1DGTUMesh *meshFromDistant=ParaMEDMEM::MEDCoupling1DGTUMeshClient::New(meshPtr);
239 meshPtr->UnRegister();
240 CORBA::release(meshPtr);
241 ParaMEDMEM::MEDCoupling1DGTUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build1DGTUMesh();
242 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
244 meshFromDistant->decrRef();
247 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTFetching()
249 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
250 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
251 fieldPtr->UnRegister();
252 CORBA::release(fieldPtr);
253 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn2DNT();
254 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
255 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
260 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetching()
262 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
263 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
264 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp2=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
265 fieldPtr->UnRegister();
266 CORBA::release(fieldPtr);
267 CPPUNIT_ASSERT(fieldCpp->isEqual(fieldCpp2,1.e-12,1.e-15));
269 fieldCpp2->decrRef();
272 void *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMTStatic(void *stack)
274 char *stackS=(char *)stack;
275 CORBA::Object_var obj=_orb->string_to_object(stackS);
276 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=SALOME_MED::MEDCouplingFieldDoubleCorbaInterface::_narrow(obj);
277 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
278 CORBA::release(fieldPtr);
282 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMT()
284 const int nbOfThreads=8;
285 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
286 //doing nbOfThreads-1 Register.
287 char *ior=_orb->object_to_string(fieldPtr);
288 pthread_t threads[nbOfThreads];
289 ParaMEDMEM::MEDCouplingFieldDouble *rets[nbOfThreads];
290 for(int i=0;i<nbOfThreads;i++)
291 pthread_create(&threads[i],0,checkCorbaField2DNTMultiFetchingMTStatic,ior);
292 for(int i=0;i<nbOfThreads;i++)
293 pthread_join(threads[i],(void **)&rets[i]);
294 for(int i=0;i<nbOfThreads-1;i++)
295 CPPUNIT_ASSERT(rets[i]->isEqual(rets[i+1],1.e-12,1.e-15));
296 for(int i=0;i<nbOfThreads;i++)
298 fieldPtr->UnRegister();
299 CORBA::release(fieldPtr);
300 CORBA::string_free(ior);
303 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldNode2DNTFetching()
305 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldNodeScalarOn2DNT();
306 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
307 fieldPtr->UnRegister();
308 CORBA::release(fieldPtr);
309 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldNodeScalarOn2DNT();
310 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
311 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
316 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DNTFetching()
318 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DNT();
319 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
320 fieldPtr->UnRegister();
321 CORBA::release(fieldPtr);
322 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DNT();
323 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
324 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
329 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfWTFetching()
331 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfWT();
333 char *fieldName=fieldPtr->getName();
334 std::string fieldNameCpp(fieldName);
335 CPPUNIT_ASSERT(fieldNameCpp=="toto25");
336 CORBA::string_free(fieldName);
337 SALOME_TYPES::ListOfString *comps=fieldPtr->getInfoOnComponents();
338 CPPUNIT_ASSERT_EQUAL(3,(int)comps->length());
339 CPPUNIT_ASSERT(std::string((*comps)[0])=="aaa");
340 CPPUNIT_ASSERT(std::string((*comps)[1])=="bbbb");
341 CPPUNIT_ASSERT(std::string((*comps)[2])=="ccccc");
344 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
345 fieldPtr->UnRegister();
346 CORBA::release(fieldPtr);
347 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DSurfWT();
348 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
350 fieldCpp->getTime(dt,it);
351 CPPUNIT_ASSERT_EQUAL(1,dt);
352 CPPUNIT_ASSERT_EQUAL(4,it);
357 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfCOTIFetching()
359 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfCOTI();
360 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
361 fieldPtr->UnRegister();
362 CORBA::release(fieldPtr);
363 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DSurfCOTI();
364 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
366 fieldCpp->getStartTime(dt,it);
367 CPPUNIT_ASSERT_EQUAL(1,dt);
368 CPPUNIT_ASSERT_EQUAL(4,it);
369 fieldCpp->getEndTime(dt,it);
370 CPPUNIT_ASSERT_EQUAL(2,dt);
371 CPPUNIT_ASSERT_EQUAL(8,it);
376 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DLTFetching()
378 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DLT();
379 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
380 fieldPtr->UnRegister();
381 CORBA::release(fieldPtr);
383 const double pos[2]={0.3,-0.2};
384 fieldCpp->getValueOn(pos,10.,res);
385 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.4,res[0],1e-12);
386 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.04,res[1],1e-12);
387 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.004,res[2],1e-12);
388 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.0004,res[3],1e-12);
389 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn2DLT();
390 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
392 CPPUNIT_ASSERT_DOUBLES_EQUAL(6.7,fieldCpp->getStartTime(dt,it),1e-14);
393 CPPUNIT_ASSERT_EQUAL(25,dt);
394 CPPUNIT_ASSERT_EQUAL(26,it);
395 CPPUNIT_ASSERT_DOUBLES_EQUAL(17.2,fieldCpp->getEndTime(dt,it),1e-14);
396 CPPUNIT_ASSERT_EQUAL(125,dt);
397 CPPUNIT_ASSERT_EQUAL(126,it);
402 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPt2DWTFetching()
404 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPt2DWT();
405 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
406 fieldPtr->UnRegister();
407 CORBA::release(fieldPtr);
409 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPt2DWT();
410 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
415 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPtNE2DWTFetching()
417 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPtNE2DWT();
418 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
419 fieldPtr->UnRegister();
420 CORBA::release(fieldPtr);
422 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPtNE2DWT();
423 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
428 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnExtrudedWT()
430 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnExtrudedWT();
431 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
432 fieldPtr->UnRegister();
433 CORBA::release(fieldPtr);
435 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnExtrudedWT();
436 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
441 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnCMeshWT()
443 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnCMeshWT();
444 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
445 fieldPtr->UnRegister();
446 CORBA::release(fieldPtr);
448 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnCMeshWT();
449 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
454 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateCellOn2D()
456 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateCellOn2D();
457 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
458 fieldPtr->UnRegister();
459 CORBA::release(fieldPtr);
461 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateCellOn2D();
462 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
467 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateNodeOn2D()
469 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateNodeOn2D();
470 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
471 fieldPtr->UnRegister();
472 CORBA::release(fieldPtr);
474 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateNodeOn2D();
475 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
480 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussPtOn2D()
482 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussPtOn2D();
483 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
484 fieldPtr->UnRegister();
485 CORBA::release(fieldPtr);
487 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussPtOn2D();
488 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
493 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussNEOn2D()
495 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussNEOn2D();
496 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
497 fieldPtr->UnRegister();
498 CORBA::release(fieldPtr);
500 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussNEOn2D();
501 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
506 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields1()
508 SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_ptr fieldPtr=_objC->getMultiFields1();
509 ParaMEDMEM::MEDCouplingMultiFields *fieldCpp=ParaMEDMEM::MEDCouplingMultiFieldsClient::New(fieldPtr);
510 fieldPtr->UnRegister();
511 CORBA::release(fieldPtr);
513 ParaMEDMEM::MEDCouplingMultiFields *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields1();
514 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
519 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble1()
521 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble1();
523 char *fieldName=fieldPtr->getName();
524 std::string fieldNameCpp(fieldName);
525 CPPUNIT_ASSERT(fieldNameCpp=="toto");
526 CORBA::string_free(fieldName);
527 SALOME_TYPES::ListOfString *comps=fieldPtr->getInfoOnComponents();
528 CPPUNIT_ASSERT_EQUAL(3,(int)comps->length());
529 CPPUNIT_ASSERT(std::string((*comps)[0])=="sss");
530 CPPUNIT_ASSERT(std::string((*comps)[1])=="ppp");
531 CPPUNIT_ASSERT(std::string((*comps)[2])=="ttt");
534 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
535 fieldPtr->UnRegister();
536 CORBA::release(fieldPtr);
538 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble1();
539 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
544 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble2()
546 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble2();
547 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
548 fieldPtr->UnRegister();
549 CORBA::release(fieldPtr);
551 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble2();
552 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
557 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble3()
559 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble3();
560 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
561 fieldPtr->UnRegister();
562 CORBA::release(fieldPtr);
564 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble3();
565 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
570 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt1()
572 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt1();
573 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
574 fieldPtr->UnRegister();
575 CORBA::release(fieldPtr);
577 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt1();
578 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
583 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt2()
585 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt2();
586 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
587 fieldPtr->UnRegister();
588 CORBA::release(fieldPtr);
590 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt2();
591 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
596 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt3()
598 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt3();
599 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
600 fieldPtr->UnRegister();
601 CORBA::release(fieldPtr);
603 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt3();
604 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
609 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCoords1()
611 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DSurfMesh();
612 SALOME_MED::DataArrayDoubleCorbaInterface_ptr cooPtr=meshPtr->getCoords();
613 meshPtr->UnRegister();
614 CORBA::release(meshPtr);
615 ParaMEDMEM::DataArrayDouble *cooCpp=ParaMEDMEM::DataArrayDoubleClient::New(cooPtr);
616 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
618 CPPUNIT_ASSERT(meshRef->getCoords()->isEqual(*cooCpp,1e-12));
620 cooPtr->UnRegister();
621 CORBA::release(cooPtr);
626 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields2()
628 SALOME_MED::MEDCouplingFieldOverTimeCorbaInterface_ptr fotPtr=_objC->getMultiFields2();
629 ParaMEDMEM::MEDCouplingFieldOverTimeClient *fotc=ParaMEDMEM::MEDCouplingFieldOverTimeClient::New(fotPtr);
630 fotPtr->UnRegister();
631 CORBA::release(fotPtr);
633 ParaMEDMEM::MEDCouplingFieldOverTime *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields2();
634 CPPUNIT_ASSERT(fotc->isEqual(refField,1.e-12,1.e-15));
636 std::vector<double> ts=fotc->getTimeSteps();
637 CPPUNIT_ASSERT_EQUAL(6,(int)ts.size());
638 const double expected[6]={0.2,0.7,1.2,1.35,1.7,2.7};
640 CPPUNIT_ASSERT_DOUBLES_EQUAL(expected[i],ts[i],1e-12);
644 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::shutdownServer()
646 _objC->shutdownOrb();