1 // Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
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 "MEDMEMTest.hxx"
21 #include <cppunit/TestAssert.h>
23 #include "MEDMEM_Exception.hxx"
24 #include "MEDMEM_Group.hxx"
25 #include "MEDMEM_IndexCheckingPolicy.hxx"
26 #include "MEDMEM_MedFieldDriver.hxx"
27 #include "MEDMEM_Mesh.hxx"
28 #include "MEDMEM_Meshing.hxx"
29 #include "MEDMEM_STRING.hxx"
30 #include "MEDMEM_Remapper.hxx"
42 // ============================================================================
44 * Set up the environment
46 // ============================================================================
47 void MEDMEMTest::setUp()
51 // ============================================================================
55 // ============================================================================
56 void MEDMEMTest::tearDown()
61 // #1: MEDMEM_Array.hxx \
62 // #2: MEDMEM_ArrayConvert.hxx } MEDMEMTest_Array.cxx
63 // #3: MEDMEM_ArrayInterface.hxx (-) /
64 // #4: MEDMEM_AsciiFieldDriver.hxx } MEDMEMTest_AsciiFieldDriver.cxx
65 // #5: MEDMEM_CellModel.hxx } MEDMEMTest.cxx (-)
66 // #7: MEDMEM_Connectivity.hxx } MEDMEMTest_Connectivity.cxx
67 // #8: MEDMEM_Coordinate.hxx } MEDMEMTest_Coordinate.cxx
68 // #9: MEDMEM_DriverFactory.hxx } MEDMEMTest_DriverFactory.cxx
69 // #10: MEDMEM_DriversDef.hxx } MEDMEMTest.cxx (-)
70 // #11: MEDMEM_DriverTools.hxx } MEDMEMTest.cxx (-)
71 // #12: MEDMEM_Exception.hxx } MEDMEMTest_Exception.cxx
72 // #13: MEDMEM_Family.hxx } MEDMEMTest.cxx
73 // #14: MEDMEM_Field.hxx \
74 // #15: MEDMEM_FieldConvert.hxx / MEDMEMTest_Field.cxx
75 // #16: MEDMEM_FieldForward.hxx } no methods to test
76 // #17: MEDMEM_Formulae.hxx } MEDMEMTest_Formulae.cxx
77 // #18: MEDMEM_GaussLocalization.hxx } MEDMEMTest_GaussLocalization.cxx
78 // #19: MEDMEM_GenDriver.hxx } abstract class; implemented methods are tested during its successors testing
79 // #20: MEDMEM_GibiMeshDriver.hxx } MEDMEMTest_GibiMeshDriver.cxx
80 // #21: MEDMEM_Grid.cxx } MEDMEMTest_Grid.cxx
81 // #22: MEDMEM_Group.cxx } MEDMEMTest_Group.cxx
82 // #23: MEDMEM_IndexCheckingPolicy.cxx } MEDMEMTest.cxx
83 // #24: MEDMEM_Init.cxx } MEDMEMTest.cxx
84 // #25: MEDMEM_InterlacingPolicy.hxx } MEDMEMTest.cxx (-)
85 // #26: MEDMEM_InterlacingTraits.hxx } MEDMEMTest.cxx (-)
86 // #28: MEDMEM_MedFieldDriver.hxx } MEDMEMTest_MedFieldDriver.cxx
87 // #34: MEDMEM_MEDMEMchampLire.hxx } MEDMEMTest.cxx (-)
88 // #35: MEDMEM_MEDMEMgaussEcr.hxx } MEDMEMTest.cxx (-)
89 // #36: MEDMEM_MEDMEMprofilEcr.hxx } MEDMEMTest.cxx (-)
90 // #37: MEDMEM_MedMeshDriver.hxx } MEDMEMTest_MedMeshDriver.cxx
91 // #40: MEDMEM_MedVersion.hxx } MEDMEMTest_MedVersion.cxx
92 // #41: MEDMEM_Mesh.hxx \
93 // #42: MEDMEM_Meshing.hxx / MEDMEMTest_MeshAndMeshing.cxx
94 // #43: MEDMEM_ModulusArray.hxx } MEDMEMTest_ModulusArray.cxx
95 // #44: MEDMEM_nArray.hxx } MEDMEMTest_nArray.cxx
96 // #45: MEDMEM_PointerOf.hxx } MEDMEMTest_PointerOf.cxx
97 // #47: MEDMEM_PorflowMeshDriver.hxx } MEDMEMTest_PorflowMeshDriver.cxx
98 // #48: MEDMEM_RCBase.hxx } MEDMEMTest.cxx (-)
99 // #49: MEDMEM_SetInterlacingType.hxx } MEDMEMTest.cxx (-)
100 // #50: MEDMEM_SkyLineArray.hxx } MEDMEMTest_SkyLineArray.cxx
101 // #51: MEDMEM_STRING.hxx } MEDMEMTest.cxx
102 // #52: MEDMEM_Support.hxx } MEDMEMTest_Support.cxx
103 // #53: MEDMEM_Tags.hxx } MEDMEMTest.cxx (-)
104 // #54: MEDMEM_TopLevel.hxx } MEDMEMTest_TopLevel.cxx
105 // #55: MEDMEM_TypeMeshDriver.hxx } MEDMEMTest.cxx
106 // #56: MEDMEM_Unit.hxx } MEDMEMTest_Unit.cxx
107 // #57: MEDMEM_VtkFieldDriver.hxx } MEDMEMTest_VtkFieldDriver.cxx
108 // #58: MEDMEM_VtkMedDriver.hxx } MEDMEMTest_VtkMedDriver.cxx
109 // #59: MEDMEM_VtkMeshDriver.hxx } MEDMEMTest_VtkMeshDriver.cxx
110 // #60: MEDMEM_medimport_src.hxx } MEDMEMTest.cxx (-)
114 * Check methods (4), defined in MEDMEM_IndexCheckingPolicy.hxx:
115 * class IndexCheckPolicy {
116 * (+) void checkMoreThanZero(const std::string & classname, int index) const;
117 * (+) void checkLessOrEqualThan(const std::string & classname, int max, int index) const;
118 * (+) void checkInInclusiveRange(const std::string & classname, int min, int max, int index) const;
119 * (+) void checkEquality(const std::string & classname, int a, int b) const;
121 * class NoIndexCheckPolicy {
122 * (+) void checkMoreThanZero(const string &classname, int index) const;
123 * (+) void checkLessOrEqualThan(const std::string & classname, int max, int index) const;
124 * (+) void checkInInclusiveRange(const std::string & classname, int min, int max, int index) const;
125 * (+) void checkEquality(const std::string & classname, int a, int b) const;
128 void MEDMEMTest::testIndexCheckingPolicy()
130 MEDMEM::IndexCheckPolicy do_check;
131 MEDMEM::NoIndexCheckPolicy no_check;
136 string aClassName ("MEDMEMTest::testIndexCheckingPolicy");
138 // IndexCheckPolicy: throw, if index does not satisfy criteria
139 CPPUNIT_ASSERT_THROW(do_check.checkMoreThanZero(aClassName, -1), MEDMEM::MEDEXCEPTION);
140 CPPUNIT_ASSERT_THROW(do_check.checkLessOrEqualThan(aClassName, max, 13), MEDMEM::MEDEXCEPTION);
141 CPPUNIT_ASSERT_THROW(do_check.checkInInclusiveRange(aClassName, min, max, 1), MEDMEM::MEDEXCEPTION);
142 // checkEquality() check that values are not equal
143 CPPUNIT_ASSERT_THROW(do_check.checkEquality(aClassName, 21, 21), MEDMEM::MEDEXCEPTION);
145 // NoIndexCheckPolicy: do not throw, if index does not satisfy criteria
146 CPPUNIT_ASSERT_NO_THROW(no_check.checkMoreThanZero(aClassName, -1));
147 CPPUNIT_ASSERT_NO_THROW(no_check.checkLessOrEqualThan(aClassName, max, 13));
148 CPPUNIT_ASSERT_NO_THROW(no_check.checkInInclusiveRange(aClassName, min, max, 1));
149 CPPUNIT_ASSERT_NO_THROW(no_check.checkEquality(aClassName, 21, 21));
151 // IndexCheckPolicy: do not throw, if index satisfy criteria
152 CPPUNIT_ASSERT_NO_THROW(do_check.checkMoreThanZero(aClassName, 5));
153 CPPUNIT_ASSERT_NO_THROW(do_check.checkLessOrEqualThan(aClassName, max, 7));
154 CPPUNIT_ASSERT_NO_THROW(do_check.checkInInclusiveRange(aClassName, min, max, 6));
155 CPPUNIT_ASSERT_NO_THROW(do_check.checkEquality(aClassName, 21, 28));
157 // NoIndexCheckPolicy: do not throw, if index satisfy criteria
158 CPPUNIT_ASSERT_NO_THROW(no_check.checkMoreThanZero(aClassName, 5));
159 CPPUNIT_ASSERT_NO_THROW(no_check.checkLessOrEqualThan(aClassName, max, 7));
160 CPPUNIT_ASSERT_NO_THROW(no_check.checkInInclusiveRange(aClassName, min, max, 6));
161 CPPUNIT_ASSERT_NO_THROW(no_check.checkEquality(aClassName, 21, 28));
165 * Check initialization, done in MEDMEM_Init.cxx:
166 * (-) MEDMEM::INIT init;
168 void MEDMEMTest::testInit()
170 // We cannot check here effect of initialization, done in MEDMEM_Init.cxx,
171 // because environment variable, set there, is visible only in libmedmem.la
172 // and its child processes (if any).
174 // Check effect of MEDMEM_Init.cxx
175 //char* traceKind = getenv("SALOME_trace");
176 //CPPUNIT_ASSERT(traceKind);
180 * Check methods (not in spec), defined in MEDMEM_InterlacingPolicy.hxx:
182 //void MEDMEMTest::testInterlacingPolicy()
184 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
188 * Check methods (not in spec), defined in MEDMEM_InterlacingTraits.hxx:
190 //void MEDMEMTest::testInterlacingTraits()
192 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
196 * Check methods (not in spec), defined in MEDMEM_MedFieldDriver.hxx:
198 //void MEDMEMTest::testMedFieldDriver()
200 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
204 * Check methods (not in spec), defined in MEDMEM_MEDMEMchampLire.hxx:
206 //void MEDMEMTest::testMEDMEMchampLire()
208 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
212 * Check methods (not in spec), defined in MEDMEM_MEDMEMgaussEcr.hxx:
214 //void MEDMEMTest::testMEDMEMgaussEcr()
216 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
220 * Check methods (not in spec), defined in MEDMEM_MEDMEMprofilEcr.hxx:
222 //void MEDMEMTest::testMEDMEMprofilEcr()
224 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
228 * Check methods (not in spec), defined in MEDMEM_MedMeshDriver.hxx:
230 //void MEDMEMTest::testMedMeshDriver()
232 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
236 * Check methods (not in spec), defined in MEDMEM_RCBase.hxx:
238 * (reference counter presently disconnected in C++) virtual void addReference() const = 0;
239 * (reference counter presently disconnected in C++) virtual void removeReference() const = 0;
242 //void MEDMEMTest::testRCBase()
244 // // nothing to test
248 * Check methods (not in spec), defined in MEDMEM_SetInterlacingType.hxx:
250 //void MEDMEMTest::testSetInterlacingType()
252 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
256 * Check methods (2), defined in MEDMEM_STRING.hxx:
257 * class STRING : public string {
260 * (+) operator const char * () const
261 * (+) template <class T> STRING(const T &valeur)
262 * (+) template <class T> STRING & operator<<(const T &valeur)
265 void MEDMEMTest::testSTRING()
269 MEDMEM::STRING medstr;
270 CPPUNIT_ASSERT(strcmp(medstr.c_str(), "") == 0);
272 // template <class T> STRING & operator<<(const T &valeur) with T == char*
273 //medstr << <char*>"filling 1";
274 medstr << "filling " << 1 << " !!!";
275 CPPUNIT_ASSERT(strcmp(medstr.c_str(), "filling 1 !!!") == 0);
277 // operator const char * ()
278 CPPUNIT_ASSERT(strcmp((const char *)medstr, "filling 1 !!!") == 0);
279 CPPUNIT_ASSERT(strcmp( medstr, "filling 1 !!!") == 0);
282 MEDMEM::MESH * aMesh1 = MEDMEMTest_createTestMesh();
287 // template <class T> STRING & operator<<(const T &valeur) with T == MEDMEM::MESH
288 MEDMEM::STRING medstr;
289 //medstr << <char*>"filling 1";
291 CPPUNIT_ASSERT(strcmp(medstr, ostr.str().c_str()) == 0);
295 // Constructor STRING(const T &valeur) with T == char*
296 //MEDMEM::STRING medstr<char*>("filling 2");
297 MEDMEM::STRING medstr ("filling 2");
298 CPPUNIT_ASSERT(strcmp(medstr.c_str(), "filling 2") == 0);
299 CPPUNIT_ASSERT(strcmp(medstr, "filling 2") == 0);
303 // Constructor STRING(const T &valeur) with T == MEDMEM::MESH
304 MEDMEM::STRING medstr (*aMesh1);
305 CPPUNIT_ASSERT(strcmp(medstr, ostr.str().c_str()) == 0);
308 aMesh1->removeReference();
312 * Check methods (not in spec), defined in MEDMEM_Tags.hxx:
314 //void MEDMEMTest::testTags()
316 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
320 * Check methods (15), defined in MEDMEM_TypeMeshDriver.hxx:
321 * class TYPE_MESH_DRIVER : public GENDRIVER {
322 * (-) TYPE_MESH_DRIVER();
323 * (-) TYPE_MESH_DRIVER(const string & fileName, MESH * ptrMesh, med_mode_acces accessMode);
324 * (-) TYPE_MESH_DRIVER(const TYPE_MESH_DRIVER & driver);
325 * (-) virtual ~TYPE_MESH_DRIVER();
326 * (-) void open() throw (MEDEXCEPTION);
327 * (-) void close() throw (MEDEXCEPTION);
328 * (-) virtual void write(void) const = 0;
329 * (-) virtual void read (void) = 0;
330 * (-) void setMeshName(const string & meshName);
331 * (-) string getMeshName() const;
333 * class TYPE_MESH_RDONLY_DRIVER : public virtual TYPE_MESH_DRIVER {
334 * (-) TYPE_MESH_RDONLY_DRIVER();
335 * (-) TYPE_MESH_RDONLY_DRIVER(const string & fileName, MESH * ptrMesh);
336 * (-) TYPE_MESH_RDONLY_DRIVER(const TYPE_MESH_RDONLY_DRIVER & driver);
337 * (-) virtual ~TYPE_MESH_RDONLY_DRIVER();
338 * (-) void write(void) const throw (MEDEXCEPTION);
339 * (-) void read (void) throw (MEDEXCEPTION);
341 * class TYPE_MESH_WRONLY_DRIVER : public virtual TYPE_MESH_DRIVER {
342 * (-) TYPE_MESH_WRONLY_DRIVER();
343 * (-) TYPE_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh);
344 * (-) TYPE_MESH_WRONLY_DRIVER(const TYPE_MESH_WRONLY_DRIVER & driver);
345 * (-) virtual ~TYPE_MESH_WRONLY_DRIVER();
346 * (-) void write(void) const throw (MEDEXCEPTION);
347 * (-) void read (void) throw (MEDEXCEPTION);
349 * class TYPE_MESH_RDWR_DRIVER : public TYPE_MESH_RDONLY_DRIVER, public TYPE_MESH_WRONLY_DRIVER {
350 * (-) TYPE_MESH_RDWR_DRIVER();
351 * (-) TYPE_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh);
352 * (-) TYPE_MESH_RDWR_DRIVER(const TYPE_MESH_RDWR_DRIVER & driver);
353 * (-) ~TYPE_MESH_RDWR_DRIVER();
354 * (-) void write(void) const throw (MEDEXCEPTION);
355 * (-) void read (void) throw (MEDEXCEPTION);
358 void MEDMEMTest::testTypeMeshDriver()
360 CPPUNIT_FAIL("TYPE_MESH_DRIVER: not implemented");
364 * Check methods (not in spec), defined in MEDMEM_medimport_src.hxx:
366 //void MEDMEMTest::testmedimport_src()
368 // CPPUNIT_FAIL("Case Not Implemented (not in spec)");
374 //////////////////////////////////////
375 // HELP METHODS, used in many tests //
376 //////////////////////////////////////
379 * Create a mesh with certain filling
383 * n16,n12,n8.---------.n7,n11,n15
386 * n5.----|----.----|----.n3
389 * n17,n13,n9.---------.n10,n14,n18
422 * n5.----.----.----.----.n3 (2,0,1)
423 * (-2,0,1) /n2 (0,0,1)
431 MEDMEM::MESH * MEDMEMTest_createTestMesh ()
434 int SpaceDimension = 3;
437 int NumberOfNodes = 19;
439 string Names[3] = { "X","Y","Z" };
440 string Units[3] = { "cm","cm","cm" };
442 double Coordinates[57] = {
447 -2.0, 0.0, 1.0, // n5
448 0.0, -2.0, 1.0, // n6
450 -1.0, 1.0, 2.0, // n8
451 -1.0, -1.0, 2.0, // n9
452 1.0, -1.0, 2.0, // n10
453 1.0, 1.0, 3.0, // n11
454 -1.0, 1.0, 3.0, // n12
455 -1.0, -1.0, 3.0, // n13
456 1.0, -1.0, 3.0, // n14
457 1.0, 1.0, 4.0, // n15
458 -1.0, 1.0, 4.0, // n16
459 -1.0, -1.0, 4.0, // n17
460 1.0, -1.0, 4.0, // n18
464 // cells connectivities
465 const int NumberOfCellTypes = 3;
466 MED_EN::medGeometryElement CellTypes[NumberOfCellTypes] =
467 {MED_EN::MED_TETRA4, MED_EN::MED_PYRA5, MED_EN::MED_HEXA8};
468 const int NumberOfCells[NumberOfCellTypes] = {12, 2, 2};
470 int ConnectivityTetra[12 * 4] = {
485 int ConnectivityPyra[2 * 5] = {
490 int ConnectivityHexa[2 * 8] = {
491 11,12,13,14,7,8,9,10,
492 15,16,17,18,11,12,13,14
495 // faces connectivities
496 const int NumberOfFaceTypes = 2;
497 MED_EN::medGeometryElement FaceTypes[NumberOfFaceTypes] = {MED_EN::MED_TRIA3, MED_EN::MED_QUAD4};
498 const int NumberOfFaces[NumberOfFaceTypes] = {4, 4};
500 int ConnectivityTria[4 * 3] = {
507 int ConnectivityQua[4 * 4] = {
516 MEDMEM::MESHING* myMeshing = new MEDMEM::MESHING;
518 myMeshing->setName("meshing");
520 myMeshing->setCoordinates(SpaceDimension, NumberOfNodes, Coordinates,
521 "CARTESIAN", MED_EN::MED_FULL_INTERLACE);
522 myMeshing->setCoordinatesNames(Names);
523 myMeshing->setCoordinatesUnits(Units);
525 // define connectivities
526 myMeshing->setNumberOfTypes(NumberOfCellTypes, MED_EN::MED_CELL);
527 myMeshing->setTypes(CellTypes, MED_EN::MED_CELL);
528 myMeshing->setNumberOfElements(NumberOfCells, MED_EN::MED_CELL);
530 myMeshing->setConnectivity(MED_EN::MED_CELL, MED_EN::MED_TETRA4, ConnectivityTetra );
531 myMeshing->setConnectivity(MED_EN::MED_CELL, MED_EN::MED_PYRA5 , ConnectivityPyra );
532 myMeshing->setConnectivity(MED_EN::MED_CELL, MED_EN::MED_HEXA8 , ConnectivityHexa );
534 myMeshing->setNumberOfTypes(NumberOfFaceTypes, MED_EN::MED_FACE);
535 myMeshing->setTypes(FaceTypes, MED_EN::MED_FACE);
536 myMeshing->setNumberOfElements(NumberOfFaces, MED_EN::MED_FACE);
538 myMeshing->setConnectivity(MED_EN::MED_FACE, MED_EN::MED_TRIA3,ConnectivityTria);
539 myMeshing->setConnectivity(MED_EN::MED_FACE, MED_EN::MED_QUAD4,ConnectivityQua);
541 // edges connectivities
542 // not yet implemented : if set, results are unpredictable.
546 MEDMEM::GROUP *myGroup=new MEDMEM::GROUP;
547 myGroup->setName("SomeNodes");
548 myGroup->setMesh(myMeshing);
549 myGroup->setEntity(MED_EN::MED_NODE);
550 myGroup->setNumberOfGeometricType(1);
551 MED_EN::medGeometryElement myTypes[1] = {MED_EN::MED_NONE};
552 myGroup->setGeometricType(myTypes);
553 const int myNumberOfElements[1] = {4};
554 myGroup->setNumberOfElements(myNumberOfElements);
555 const int index[1+1] = {1,5};
556 const int value[4] = {1,4,5,7};
557 myGroup->setNumber(index,value);
558 myMeshing->addGroup(*myGroup);
559 myGroup->removeReference();
562 MEDMEM::GROUP *myGroup=new MEDMEM::GROUP;
563 myGroup->setName("OtherNodes");
564 myGroup->setMesh(myMeshing);
565 myGroup->setEntity(MED_EN::MED_NODE);
566 myGroup->setNumberOfGeometricType(1);
567 MED_EN::medGeometryElement myTypes[1] = {MED_EN::MED_NONE};
568 myGroup->setGeometricType(myTypes);
569 const int myNumberOfElements[1] = {3};
570 myGroup->setNumberOfElements(myNumberOfElements);
571 const int index[1+1] = {1,4};
572 const int value[3] = {2,3,6};
573 myGroup->setNumber(index,value);
574 myMeshing->addGroup(*myGroup);
575 myGroup->removeReference();
580 MEDMEM::GROUP *myGroup=new MEDMEM::GROUP;
581 myGroup->setName("SomeCells");
582 myGroup->setMesh(myMeshing);
583 myGroup->setEntity(MED_EN::MED_CELL);
584 myGroup->setNumberOfGeometricType(3);
585 MED_EN::medGeometryElement myTypes[3] = {MED_EN::MED_TETRA4,MED_EN::MED_PYRA5,MED_EN::MED_HEXA8};
586 myGroup->setGeometricType(myTypes);
587 const int myNumberOfElements[3] = {4,1,2};
588 myGroup->setNumberOfElements(myNumberOfElements);
589 const int index[3+1] = {1,5,6,8};
590 const int value[4+1+2] = {2,7,8,12, 13, 15,16};
591 myGroup->setNumber(index,value);
592 myMeshing->addGroup(*myGroup);
593 myGroup->removeReference();
596 MEDMEM::GROUP *myGroup=new MEDMEM::GROUP;
597 myGroup->setName("OtherCells");
598 myGroup->setMesh(myMeshing);
599 myGroup->setEntity(MED_EN::MED_CELL);
600 myGroup->setNumberOfGeometricType(2);
601 MED_EN::medGeometryElement myTypes[] = {MED_EN::MED_TETRA4,MED_EN::MED_PYRA5};
602 myGroup->setGeometricType(myTypes);
603 const int myNumberOfElements[] = {4,1};
604 myGroup->setNumberOfElements(myNumberOfElements);
605 const int index[2+1] = {1,5,6};
606 const int value[4+1] = {3,4,5,9, 14};
607 myGroup->setNumber(index,value);
608 myMeshing->addGroup(*myGroup);
609 myGroup->removeReference();
614 MEDMEM::GROUP *myGroup=new MEDMEM::GROUP;
615 myGroup->setName("SomeFaces");
616 myGroup->setMesh(myMeshing);
617 myGroup->setEntity(MED_EN::MED_FACE);
618 myGroup->setNumberOfGeometricType(2);
619 MED_EN::medGeometryElement myTypes[2] = {MED_EN::MED_TRIA3,MED_EN::MED_QUAD4};
620 myGroup->setGeometricType(myTypes);
621 const int myNumberOfElements[2] = {2,3};
622 myGroup->setNumberOfElements(myNumberOfElements);
623 const int index[2+1] = {1,3,6};
624 const int value[2+3] = {2,4, 5,6,8};
625 myGroup->setNumber(index,value);
626 myMeshing->addGroup(*myGroup);
627 myGroup->removeReference();
630 MEDMEM::GROUP *myGroup=new MEDMEM::GROUP;
631 myGroup->setName("OtherFaces");
632 myGroup->setMesh(myMeshing);
633 myGroup->setEntity(MED_EN::MED_FACE);
634 myGroup->setNumberOfGeometricType(1);
635 MED_EN::medGeometryElement myTypes[1] = {MED_EN::MED_TRIA3};
636 myGroup->setGeometricType(myTypes);
637 const int myNumberOfElements[1] = {2};
638 myGroup->setNumberOfElements(myNumberOfElements);
639 const int index[1+1] = {1,3};
640 const int value[2] = {1,3};
641 myGroup->setNumber(index,value);
642 myMeshing->addGroup(*myGroup);
643 myGroup->removeReference();
650 * Tool to remove temporary files.
651 * Allows automatique removal of temporary files in case of test failure.
653 MEDMEMTest_TmpFilesRemover::~MEDMEMTest_TmpFilesRemover()
655 set<string>::iterator it = myTmpFiles.begin();
656 for (; it != myTmpFiles.end(); it++) {
658 //if (GetFileAttributes((*it).data()) & FILE_ATTRIBUTE_NORMAL)
659 if (GetFileAttributes((*it).data()) != INVALID_FILE_ATTRIBUTES)
661 if (access((*it).data(), F_OK) == 0)
663 remove((*it).data());
666 //cout << "~MEDMEMTest_TmpFilesRemover()" << endl;
669 bool MEDMEMTest_TmpFilesRemover::Register(const string theTmpFile)
671 return (myTmpFiles.insert(theTmpFile)).second;