1 // Copyright (C) 2007-2013 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 "MEDCouplingCurveLinearMesh.hxx"
30 #include "MEDCouplingCurveLinearMeshClient.hxx"
31 #include "MEDCouplingFieldDouble.hxx"
32 #include "MEDCouplingFieldDoubleClient.hxx"
33 #include "MEDCouplingFieldTemplate.hxx"
34 #include "MEDCouplingFieldTemplateClient.hxx"
35 #include "MEDCouplingMultiFields.hxx"
36 #include "MEDCouplingMultiFieldsClient.hxx"
37 #include "MEDCouplingFieldOverTime.hxx"
38 #include "MEDCouplingFieldOverTimeClient.hxx"
39 #include "DataArrayDoubleClient.hxx"
40 #include "DataArrayIntClient.hxx"
44 SALOME_TEST::MEDCouplingMeshFieldFactory_ptr SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_objC;
46 ParaMEDMEM::MEDCouplingUMesh *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_mesh_from_distant=0;
48 int SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argc=0;
50 char **SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_argv=0;
52 CORBA::ORB_var SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::_orb;
54 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkBaseCorbaFetching()
56 _orb=CORBA::ORB_init(_argc,_argv);
57 std::ifstream ifs(SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFileNameForIOR().c_str());
60 CORBA::Object_var obj=_orb->string_to_object(ior.c_str());
61 _objC=SALOME_TEST::MEDCouplingMeshFieldFactory::_narrow(obj);
62 CPPUNIT_ASSERT(!CORBA::is_nil(_objC));
67 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched1DMesh()
69 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get1DMesh();
70 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
71 char *meshName=meshPtr->getName();
72 std::string meshNameCpp(meshName);
73 CPPUNIT_ASSERT(meshNameCpp=="1DMeshForCorba");
74 CORBA::string_free(meshName);
75 meshPtr->UnRegister();
76 CORBA::release(meshPtr);
77 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
78 CPPUNIT_ASSERT_EQUAL(1,_mesh_from_distant->getMeshDimension());
79 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build1DMesh();
80 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
82 _mesh_from_distant->decrRef();
85 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching2D()
87 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get2DMesh();
88 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
89 meshPtr->UnRegister();
90 CORBA::release(meshPtr);
91 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getSpaceDimension());
92 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getMeshDimension());
95 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched2DMesh()
97 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
98 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
100 _mesh_from_distant->decrRef();
103 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkMultiFetchingToTestMemoryManagement()
105 for(int i=0;i<1000;i++)
107 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get2DMesh();
108 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
109 meshPtr->UnRegister();
110 CORBA::release(meshPtr);
111 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build2DMesh();
112 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
114 _mesh_from_distant->decrRef();
118 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3D()
120 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DMesh();
121 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
122 meshPtr->UnRegister();
123 CORBA::release(meshPtr);
124 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
125 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getMeshDimension());
128 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DMesh()
130 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DMesh();
131 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
133 _mesh_from_distant->decrRef();
136 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching3DSurf()
138 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DSurfMesh();
139 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
140 meshPtr->UnRegister();
141 CORBA::release(meshPtr);
142 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
143 CPPUNIT_ASSERT_EQUAL(2,_mesh_from_distant->getMeshDimension());
146 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkContentOfFetched3DSurfMesh()
148 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
149 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
151 _mesh_from_distant->decrRef();
154 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetching0D()
156 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get0DMesh();
157 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
158 meshPtr->UnRegister();
159 CORBA::release(meshPtr);
160 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build0DMesh();
161 CPPUNIT_ASSERT_EQUAL(3,_mesh_from_distant->getSpaceDimension());
162 CPPUNIT_ASSERT_EQUAL(0,_mesh_from_distant->getMeshDimension());
163 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
165 _mesh_from_distant->decrRef();
168 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingM1D()
170 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->getM1DMesh();
171 _mesh_from_distant=ParaMEDMEM::MEDCouplingUMeshClient::New(meshPtr);
172 meshPtr->UnRegister();
173 CORBA::release(meshPtr);
174 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildM1DMesh();
175 CPPUNIT_ASSERT_EQUAL(-1,_mesh_from_distant->getMeshDimension());
176 CPPUNIT_ASSERT(_mesh_from_distant->isEqual(meshRef,1e-12));
178 _mesh_from_distant->decrRef();
181 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingExtruded()
183 SALOME_MED::MEDCouplingExtrudedMeshCorbaInterface_ptr meshPtr=_objC->getExtrudedMesh();
184 ParaMEDMEM::MEDCouplingExtrudedMesh *meshFromDistant=ParaMEDMEM::MEDCouplingExtrudedMeshClient::New(meshPtr);
185 meshPtr->UnRegister();
186 CORBA::release(meshPtr);
187 ParaMEDMEM::MEDCouplingUMesh *meshRef2;
188 ParaMEDMEM::MEDCouplingExtrudedMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildExtrudedMesh(meshRef2);
189 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
190 CPPUNIT_ASSERT(meshFromDistant->getMesh2D()->isEqual(meshRef2,1e-12));
193 meshFromDistant->decrRef();
196 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCMesh()
198 SALOME_MED::MEDCouplingCMeshCorbaInterface_ptr meshPtr=_objC->getCMesh();
199 ParaMEDMEM::MEDCouplingCMesh *meshFromDistant=ParaMEDMEM::MEDCouplingCMeshClient::New(meshPtr);
200 meshPtr->UnRegister();
201 CORBA::release(meshPtr);
202 ParaMEDMEM::MEDCouplingCMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildCMesh();
203 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
205 meshFromDistant->decrRef();
208 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCurveLinearMesh()
210 SALOME_MED::MEDCouplingCurveLinearMeshCorbaInterface_ptr meshPtr=_objC->getCLMesh();
211 ParaMEDMEM::MEDCouplingCurveLinearMesh *meshFromDistant=ParaMEDMEM::MEDCouplingCurveLinearMeshClient::New(meshPtr);
212 meshPtr->UnRegister();
213 CORBA::release(meshPtr);
214 ParaMEDMEM::MEDCouplingCurveLinearMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildCLMesh();
215 CPPUNIT_ASSERT(meshFromDistant->isEqual(meshRef,1e-12));
217 meshFromDistant->decrRef();
220 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTFetching()
222 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
223 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
224 fieldPtr->UnRegister();
225 CORBA::release(fieldPtr);
226 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn2DNT();
227 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
228 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
233 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetching()
235 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
236 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
237 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp2=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
238 fieldPtr->UnRegister();
239 CORBA::release(fieldPtr);
240 CPPUNIT_ASSERT(fieldCpp->isEqual(fieldCpp2,1.e-12,1.e-15));
242 fieldCpp2->decrRef();
245 void *SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMTStatic(void *stack)
247 char *stackS=(char *)stack;
248 CORBA::Object_var obj=_orb->string_to_object(stackS);
249 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=SALOME_MED::MEDCouplingFieldDoubleCorbaInterface::_narrow(obj);
250 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
251 CORBA::release(fieldPtr);
255 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DNTMultiFetchingMT()
257 const int nbOfThreads=8;
258 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DNT();
259 //doing nbOfThreads-1 Register.
260 char *ior=_orb->object_to_string(fieldPtr);
261 pthread_t threads[nbOfThreads];
262 ParaMEDMEM::MEDCouplingFieldDouble *rets[nbOfThreads];
263 for(int i=0;i<nbOfThreads;i++)
264 pthread_create(&threads[i],0,checkCorbaField2DNTMultiFetchingMTStatic,ior);
265 for(int i=0;i<nbOfThreads;i++)
266 pthread_join(threads[i],(void **)&rets[i]);
267 for(int i=0;i<nbOfThreads-1;i++)
268 CPPUNIT_ASSERT(rets[i]->isEqual(rets[i+1],1.e-12,1.e-15));
269 for(int i=0;i<nbOfThreads;i++)
271 fieldPtr->UnRegister();
272 CORBA::release(fieldPtr);
273 CORBA::string_free(ior);
276 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldNode2DNTFetching()
278 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldNodeScalarOn2DNT();
279 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
280 fieldPtr->UnRegister();
281 CORBA::release(fieldPtr);
282 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldNodeScalarOn2DNT();
283 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
284 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
289 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DNTFetching()
291 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DNT();
292 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
293 fieldPtr->UnRegister();
294 CORBA::release(fieldPtr);
295 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DNT();
296 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
297 CPPUNIT_ASSERT_THROW(fieldCpp->setTime(1.23,4,5),INTERP_KERNEL::Exception);
302 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfWTFetching()
304 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfWT();
306 char *fieldName=fieldPtr->getName();
307 std::string fieldNameCpp(fieldName);
308 CPPUNIT_ASSERT(fieldNameCpp=="toto25");
309 CORBA::string_free(fieldName);
310 SALOME_TYPES::ListOfString *comps=fieldPtr->getInfoOnComponents();
311 CPPUNIT_ASSERT_EQUAL(3,(int)comps->length());
312 CPPUNIT_ASSERT(std::string((*comps)[0])=="aaa");
313 CPPUNIT_ASSERT(std::string((*comps)[1])=="bbbb");
314 CPPUNIT_ASSERT(std::string((*comps)[2])=="ccccc");
317 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
318 fieldPtr->UnRegister();
319 CORBA::release(fieldPtr);
320 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DSurfWT();
321 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
323 fieldCpp->getTime(dt,it);
324 CPPUNIT_ASSERT_EQUAL(1,dt);
325 CPPUNIT_ASSERT_EQUAL(4,it);
330 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField3DSurfCOTIFetching()
332 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn3DSurfCOTI();
333 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
334 fieldPtr->UnRegister();
335 CORBA::release(fieldPtr);
336 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn3DSurfCOTI();
337 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
339 fieldCpp->getStartTime(dt,it);
340 CPPUNIT_ASSERT_EQUAL(1,dt);
341 CPPUNIT_ASSERT_EQUAL(4,it);
342 fieldCpp->getEndTime(dt,it);
343 CPPUNIT_ASSERT_EQUAL(2,dt);
344 CPPUNIT_ASSERT_EQUAL(8,it);
349 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaField2DLTFetching()
351 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldScalarOn2DLT();
352 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
353 fieldPtr->UnRegister();
354 CORBA::release(fieldPtr);
356 const double pos[2]={0.3,-0.2};
357 fieldCpp->getValueOn(pos,10.,res);
358 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.4,res[0],1e-12);
359 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.04,res[1],1e-12);
360 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.004,res[2],1e-12);
361 CPPUNIT_ASSERT_DOUBLES_EQUAL(25.0004,res[3],1e-12);
362 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldScalarOn2DLT();
363 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
365 CPPUNIT_ASSERT_DOUBLES_EQUAL(6.7,fieldCpp->getStartTime(dt,it),1e-14);
366 CPPUNIT_ASSERT_EQUAL(25,dt);
367 CPPUNIT_ASSERT_EQUAL(26,it);
368 CPPUNIT_ASSERT_DOUBLES_EQUAL(17.2,fieldCpp->getEndTime(dt,it),1e-14);
369 CPPUNIT_ASSERT_EQUAL(125,dt);
370 CPPUNIT_ASSERT_EQUAL(126,it);
375 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPt2DWTFetching()
377 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPt2DWT();
378 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
379 fieldPtr->UnRegister();
380 CORBA::release(fieldPtr);
382 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPt2DWT();
383 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
388 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldGaussPtNE2DWTFetching()
390 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldGaussPtNE2DWT();
391 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
392 fieldPtr->UnRegister();
393 CORBA::release(fieldPtr);
395 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldGaussPtNE2DWT();
396 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
401 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnExtrudedWT()
403 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnExtrudedWT();
404 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
405 fieldPtr->UnRegister();
406 CORBA::release(fieldPtr);
408 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnExtrudedWT();
409 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
414 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldVectorOnCMeshWT()
416 SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_ptr fieldPtr=_objC->getFieldVectorOnCMeshWT();
417 ParaMEDMEM::MEDCouplingFieldDouble *fieldCpp=ParaMEDMEM::MEDCouplingFieldDoubleClient::New(fieldPtr);
418 fieldPtr->UnRegister();
419 CORBA::release(fieldPtr);
421 ParaMEDMEM::MEDCouplingFieldDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldVectorOnCMeshWT();
422 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
427 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateCellOn2D()
429 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateCellOn2D();
430 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
431 fieldPtr->UnRegister();
432 CORBA::release(fieldPtr);
434 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateCellOn2D();
435 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
440 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateNodeOn2D()
442 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateNodeOn2D();
443 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
444 fieldPtr->UnRegister();
445 CORBA::release(fieldPtr);
447 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateNodeOn2D();
448 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
453 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussPtOn2D()
455 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussPtOn2D();
456 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
457 fieldPtr->UnRegister();
458 CORBA::release(fieldPtr);
460 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussPtOn2D();
461 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
466 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFieldTemplateGaussNEOn2D()
468 SALOME_MED::MEDCouplingFieldTemplateCorbaInterface_ptr fieldPtr=_objC->getFieldTemplateGaussNEOn2D();
469 ParaMEDMEM::MEDCouplingFieldTemplate *fieldCpp=ParaMEDMEM::MEDCouplingFieldTemplateClient::New(fieldPtr);
470 fieldPtr->UnRegister();
471 CORBA::release(fieldPtr);
473 ParaMEDMEM::MEDCouplingFieldTemplate *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildFieldTemplateGaussNEOn2D();
474 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
479 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields1()
481 SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_ptr fieldPtr=_objC->getMultiFields1();
482 ParaMEDMEM::MEDCouplingMultiFields *fieldCpp=ParaMEDMEM::MEDCouplingMultiFieldsClient::New(fieldPtr);
483 fieldPtr->UnRegister();
484 CORBA::release(fieldPtr);
486 ParaMEDMEM::MEDCouplingMultiFields *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields1();
487 CPPUNIT_ASSERT(fieldCpp->isEqual(refField,1.e-12,1.e-15));
492 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble1()
494 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble1();
496 char *fieldName=fieldPtr->getName();
497 std::string fieldNameCpp(fieldName);
498 CPPUNIT_ASSERT(fieldNameCpp=="toto");
499 CORBA::string_free(fieldName);
500 SALOME_TYPES::ListOfString *comps=fieldPtr->getInfoOnComponents();
501 CPPUNIT_ASSERT_EQUAL(3,(int)comps->length());
502 CPPUNIT_ASSERT(std::string((*comps)[0])=="sss");
503 CPPUNIT_ASSERT(std::string((*comps)[1])=="ppp");
504 CPPUNIT_ASSERT(std::string((*comps)[2])=="ttt");
507 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
508 fieldPtr->UnRegister();
509 CORBA::release(fieldPtr);
511 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble1();
512 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
517 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble2()
519 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble2();
520 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
521 fieldPtr->UnRegister();
522 CORBA::release(fieldPtr);
524 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble2();
525 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
530 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayDouble3()
532 SALOME_MED::DataArrayDoubleCorbaInterface_ptr fieldPtr=_objC->getArrayDouble3();
533 ParaMEDMEM::DataArrayDouble *fieldCpp=ParaMEDMEM::DataArrayDoubleClient::New(fieldPtr);
534 fieldPtr->UnRegister();
535 CORBA::release(fieldPtr);
537 ParaMEDMEM::DataArrayDouble *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayDouble3();
538 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField,1.e-12));
543 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt1()
545 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt1();
546 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
547 fieldPtr->UnRegister();
548 CORBA::release(fieldPtr);
550 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt1();
551 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
556 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt2()
558 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt2();
559 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
560 fieldPtr->UnRegister();
561 CORBA::release(fieldPtr);
563 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt2();
564 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
569 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaArrayInt3()
571 SALOME_MED::DataArrayIntCorbaInterface_ptr fieldPtr=_objC->getArrayInt3();
572 ParaMEDMEM::DataArrayInt *fieldCpp=ParaMEDMEM::DataArrayIntClient::New(fieldPtr);
573 fieldPtr->UnRegister();
574 CORBA::release(fieldPtr);
576 ParaMEDMEM::DataArrayInt *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildArrayInt3();
577 CPPUNIT_ASSERT(fieldCpp->isEqual(*refField));
582 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaFetchingCoords1()
584 SALOME_MED::MEDCouplingUMeshCorbaInterface_ptr meshPtr=_objC->get3DSurfMesh();
585 SALOME_MED::DataArrayDoubleCorbaInterface_ptr cooPtr=meshPtr->getCoords();
586 meshPtr->UnRegister();
587 CORBA::release(meshPtr);
588 ParaMEDMEM::DataArrayDouble *cooCpp=ParaMEDMEM::DataArrayDoubleClient::New(cooPtr);
589 ParaMEDMEM::MEDCouplingUMesh *meshRef=SALOME_TEST::MEDCouplingCorbaServBasicsTest::build3DSurfMesh();
591 CPPUNIT_ASSERT(meshRef->getCoords()->isEqual(*cooCpp,1e-12));
593 cooPtr->UnRegister();
594 CORBA::release(cooPtr);
599 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::checkCorbaMultiFields2()
601 SALOME_MED::MEDCouplingFieldOverTimeCorbaInterface_ptr fotPtr=_objC->getMultiFields2();
602 ParaMEDMEM::MEDCouplingFieldOverTimeClient *fotc=ParaMEDMEM::MEDCouplingFieldOverTimeClient::New(fotPtr);
603 fotPtr->UnRegister();
604 CORBA::release(fotPtr);
606 ParaMEDMEM::MEDCouplingFieldOverTime *refField=SALOME_TEST::MEDCouplingCorbaServBasicsTest::buildMultiFields2();
607 CPPUNIT_ASSERT(fotc->isEqual(refField,1.e-12,1.e-15));
609 std::vector<double> ts=fotc->getTimeSteps();
610 CPPUNIT_ASSERT_EQUAL(6,(int)ts.size());
611 const double expected[6]={0.2,0.7,1.2,1.35,1.7,2.7};
613 CPPUNIT_ASSERT_DOUBLES_EQUAL(expected[i],ts[i],1e-12);
617 void SALOME_TEST::MEDCouplingCorbaServBasicsTestClt::shutdownServer()
619 _objC->shutdownOrb();