1 // Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #include "MEDMEMTest.hxx"
23 #include <cppunit/TestAssert.h>
25 #include <MEDMEM_Field.hxx>
26 #include <MEDMEM_MedFieldDriver21.hxx>
27 #include "MEDMEM_MedMeshDriver.hxx"
29 // use this define to enable lines, execution of which leads to Segmentation Fault
30 //#define ENABLE_FAULTS
32 // use this define to enable CPPUNIT asserts and fails, showing bugs
33 //#define ENABLE_FORCED_FAILURES
36 * Check methods (17), defined in MEDMEM_MedFieldDriver21.hxx:
37 * template <class T> class MED_FIELD_DRIVER21 : public virtual MED_FIELD_DRIVER<T> {
38 * (+) MED_FIELD_DRIVER21();
39 * (+) template <class INTERLACING_TAG> MED_FIELD_DRIVER21(const string & fileName,
40 * FIELD<T, INTERLACING_TAG> * ptrField, MED_EN::med_mode_acces accessMode);
41 * (+) MED_FIELD_DRIVER21(const MED_FIELD_DRIVER21 & fieldDriver);
42 * (+) virtual ~MED_FIELD_DRIVER21();
43 * (+) void open() throw (MEDEXCEPTION);
46 * template <class T> class MED_FIELD_RDONLY_DRIVER21 : public virtual MED_FIELD_DRIVER21<T>,
47 * public virtual IMED_FIELD_RDONLY_DRIVER<T> {
48 * (+) MED_FIELD_RDONLY_DRIVER21();
49 * (+) template <class INTERLACING_TAG> MED_FIELD_RDONLY_DRIVER21
50 * (const string & fileName, FIELD<T, INTERLACING_TAG> * ptrField);
51 * (+) MED_FIELD_RDONLY_DRIVER21(const MED_FIELD_RDONLY_DRIVER21 & fieldDriver);
52 * (+) virtual ~MED_FIELD_RDONLY_DRIVER21();
53 * (+) void write(void) const throw (MEDEXCEPTION);
54 * (+) void read (void) throw (MEDEXCEPTION);
56 * template <class T> class MED_FIELD_WRONLY_DRIVER21 : public virtual MED_FIELD_DRIVER21<T>,
57 * public virtual IMED_FIELD_WRONLY_DRIVER<T> {
58 * (+) MED_FIELD_WRONLY_DRIVER21();
59 * (+) template <class INTERLACING_TAG> MED_FIELD_WRONLY_DRIVER21
60 * (const string & fileName, FIELD<T, INTERLACING_TAG> * ptrField);
61 * (+) MED_FIELD_WRONLY_DRIVER21(const MED_FIELD_WRONLY_DRIVER21 & fieldDriver);
62 * (+) virtual ~MED_FIELD_WRONLY_DRIVER21();
63 * (+) void write(void) const throw (MEDEXCEPTION);
64 * (+) void read (void) throw (MEDEXCEPTION);
66 * template <class T> class MED_FIELD_RDWR_DRIVER21 : public MED_FIELD_RDONLY_DRIVER21<T>,
67 * public MED_FIELD_WRONLY_DRIVER21<T>, public IMED_FIELD_RDWR_DRIVER<T> {
68 * (+) MED_FIELD_RDWR_DRIVER21();
69 * (+) template <class INTERLACING_TAG> MED_FIELD_RDWR_DRIVER21
70 * (const string & fileName, FIELD<T, INTERLACING_TAG> * ptrField);
71 * (+) MED_FIELD_RDWR_DRIVER21(const MED_FIELD_RDWR_DRIVER21 & fieldDriver);
72 * (+) ~MED_FIELD_RDWR_DRIVER21();
73 * (+) void write(void) const throw (MEDEXCEPTION);
74 * (+) void read (void) throw (MEDEXCEPTION);
77 void MEDMEMTest::testMedFieldDriver21()
79 FIELD<int> *aField = new FIELD<int> ();
80 FIELD<int> *aField_1 = new FIELD<int> ();
81 FIELD<double> *aField_2 = new FIELD<double> ();
82 string data_dir = getenv("MED_ROOT_DIR");
83 string tmp_dir = getenv("TMP") ? getenv("TMP") : "/tmp";
86 string filename_rd = data_dir + "/share/salome/resources/med/pointe.med";
87 string filenameWithOutFileds = data_dir + "/share/salome/resources/med/Mistrat.med";
88 string fileldnotexist = "anyfield";
89 string fieldname = "fieldnodeint";
90 string fieldname_cpy = fieldname + "_cpy";
91 string fileNotExist_rd = "notExist.med";
92 string emptyfilename = "";
94 string filename_wr = tmp_dir + "/myWrField_pointe21.med";
95 string cp_file_wr = "cp " + filename_rd + " " + filename_wr;
96 string fileNotExist_wr = "/path_not_exist/file_not_exist.med";
97 string emptyfile_wr = tmp_dir + "/myWrField_pointe_empty21.med";
98 string other_file = data_dir + "/share/salome/resources/med/fra.med";
99 string other_file_wr = tmp_dir + "/myWRfrab.med";
100 string cp_other_file = "cp " + other_file + " " + other_file_wr;
102 string filename_rdwr = tmp_dir + "/myRdWrField_pointe21.med";
103 string cp_file_rdwr = "cp " + filename_rd + " " + filename_rdwr;
104 string emptyfile_rdwr = tmp_dir + "/myRdWrField_pointe_empty21.med";
105 string fieldnameDouble = "fieldcelldoublescalar";
106 string fieldnameDouble_cpy = fieldnameDouble + "_cpy";
108 // To remove tmp files from disk
109 MEDMEMTest_TmpFilesRemover aRemover;
110 aRemover.Register(filename_wr);
111 aRemover.Register(emptyfile_wr);
112 aRemover.Register(other_file_wr);
113 aRemover.Register(filename_rdwr);
114 aRemover.Register(emptyfile_rdwr);
116 //--------------------------Test READ ONLY part------------------------------//
118 /////////////////////////////////////
119 // TEST1: Open not existing file //
120 /////////////////////////////////////
122 //Creation Invalid Read Only MedFieldDriver21 (file not exist)
123 MED_FIELD_RDONLY_DRIVER21<int> *aInvalidMedRdFieldDriver21_1 =
124 new MED_FIELD_RDONLY_DRIVER21<int>(fileNotExist_rd, aField);
125 //Trying open not existing file
126 CPPUNIT_ASSERT_THROW(aInvalidMedRdFieldDriver21_1->open(), MEDEXCEPTION);
128 //////////////////////////////////////////////
129 // TEST2: Open file with empty file name ///
130 //////////////////////////////////////////////
132 //Creation Invalid Read Only MedFieldDriver21 (empty file name)
133 MED_FIELD_RDONLY_DRIVER21<int> *aInvalidMedRdFieldDriver21_2 =
134 new MED_FIELD_RDONLY_DRIVER21<int>(emptyfilename, aField);
135 //Trying file with empty name
136 CPPUNIT_ASSERT_THROW(aInvalidMedRdFieldDriver21_2->open(), MEDEXCEPTION);
138 /////////////////////////////////////////////////////
139 // TEST3: Reading field from file without fields //
140 /////////////////////////////////////////////////////
141 MED_FIELD_RDONLY_DRIVER21<int> *aInvalidMedRdFieldDriver21_3 =
142 new MED_FIELD_RDONLY_DRIVER21<int>(filenameWithOutFileds, aField);
143 aInvalidMedRdFieldDriver21_3->open();
144 aInvalidMedRdFieldDriver21_3->setFieldName(fieldname);
145 //Trying read field from file
146 CPPUNIT_ASSERT_THROW(aInvalidMedRdFieldDriver21_3->read(), MEDEXCEPTION);
147 aInvalidMedRdFieldDriver21_3->close();
149 ////////////////////////
150 // TEST4: Main test //
151 ////////////////////////
152 //Creation correct Read Only MedFieldDriver21
153 MED_FIELD_RDONLY_DRIVER21<int> *aMedRdFieldDriver21 =
154 new MED_FIELD_RDONLY_DRIVER21<int>(filename_rd, aField);
157 CPPUNIT_ASSERT(aMedRdFieldDriver21);
159 //Trying read field before open file
160 CPPUNIT_ASSERT_THROW(aMedRdFieldDriver21->read(),MEDEXCEPTION);
165 aMedRdFieldDriver21->open();
167 catch(MEDEXCEPTION &e)
169 CPPUNIT_FAIL(e.what());
173 CPPUNIT_FAIL("Unknown exception");
176 //#ifdef ENABLE_FORCED_FAILURES
177 //Trying open file secondary.
178 //CPPUNIT_ASSERT_THROW(aMedRdFieldDriver21->open(), MEDEXCEPTION);
179 // CPPUNIT_ASSERT_NO_THROW(aMedRdFieldDriver21->open());
180 // (BUG) No exception in this case
183 //Trying read field form file if it name is empty
184 CPPUNIT_ASSERT_THROW(aMedRdFieldDriver21->read(), MEDEXCEPTION);
185 //CPPUNIT_ASSERT_NO_THROW(aMedRdFieldDriver21->read(), MEDEXCEPTION);
187 //Test setFieldName() and getFieldName()
190 aMedRdFieldDriver21->setFieldName(fileldnotexist);
192 catch(MEDEXCEPTION &e)
194 CPPUNIT_FAIL(e.what());
198 CPPUNIT_FAIL("Unknown exception");
200 CPPUNIT_ASSERT_EQUAL(fileldnotexist, aMedRdFieldDriver21->getFieldName());
202 //Trying read not existing field from file
203 CPPUNIT_ASSERT_THROW(aMedRdFieldDriver21->read(), MEDEXCEPTION);
206 aMedRdFieldDriver21->setFieldName(fieldname);
209 aMedRdFieldDriver21->read();
211 catch(MEDEXCEPTION &e)
213 CPPUNIT_FAIL(e.what());
217 CPPUNIT_FAIL("Unknown exception");
220 //Test write() method for READ ONLY driver
221 CPPUNIT_ASSERT_THROW(aMedRdFieldDriver21->write(), MEDEXCEPTION);
223 //Test close() method
226 aMedRdFieldDriver21->close();
228 catch(MEDEXCEPTION &e)
230 CPPUNIT_FAIL(e.what());
234 CPPUNIT_FAIL("Unknown exception");
237 //Default constructor
238 MED_FIELD_RDONLY_DRIVER21<int> aMedRdFieldDriver21Cpy_1;
240 //Test (void operator =) defined in GENDRIVER class in MEDMEM_GenDriver.hxx
241 aMedRdFieldDriver21Cpy_1 = *aMedRdFieldDriver21;
243 //Test (bool operator ==) defined GENDRIVER class in MEDMEM_GenDriver.hxx
244 CPPUNIT_ASSERT(aMedRdFieldDriver21Cpy_1 == *aMedRdFieldDriver21);
246 //Test copy constructor
247 MED_FIELD_RDONLY_DRIVER21<int> aMedRdFieldDriver21Cpy_2 (*aMedRdFieldDriver21);
248 CPPUNIT_ASSERT_EQUAL(aMedRdFieldDriver21Cpy_2, *aMedRdFieldDriver21);
250 //Test (friend ostream & operator <<) defined GENDRIVER class in MEDMEM_GenDriver.hxx
251 ostringstream rostr1, rostr2;
252 rostr1<<aMedRdFieldDriver21Cpy_1;
253 rostr2<<aMedRdFieldDriver21Cpy_2;
254 CPPUNIT_ASSERT(rostr1.str() != "");
255 CPPUNIT_ASSERT(rostr1.str() == rostr2.str());
258 //--------------------------Test WRITE ONLY part------------------------------//
261 //system(cp_other_file.c_str());
262 system(cp_file_wr.c_str());
264 /////////////////////////////////////
265 // TEST1: Open not existing file //
266 /////////////////////////////////////
268 //Creation Invalid Write Only MedFieldDriver21 (file not exist)
269 MED_FIELD_WRONLY_DRIVER21<int> *aInvalidMedWrFieldDriver21_1 =
270 new MED_FIELD_WRONLY_DRIVER21<int>(fileNotExist_wr, aField_1);
271 //Trying open not existing file
272 CPPUNIT_ASSERT_THROW(aInvalidMedWrFieldDriver21_1->open(), MEDEXCEPTION);
274 /////////////////////////////////////////////
275 // TEST2: Open file with empty file name //
276 /////////////////////////////////////////////
277 //Creation Invalid Write Only MedFieldDriver21 (empty file name)
278 MED_FIELD_WRONLY_DRIVER21<int> *aInvalidMedWrFieldDriver21_2 =
279 new MED_FIELD_WRONLY_DRIVER21<int>(emptyfilename, aField_1);
280 //Trying open not existing file and file with empty name
281 CPPUNIT_ASSERT_THROW(aInvalidMedWrFieldDriver21_2->open(), MEDEXCEPTION);
283 ///////////////////////////////////////////////////////
284 // TEST3: Writing field in empty file without mesh // -- no problem
285 ///////////////////////////////////////////////////////
286 //Creation Write Only MedFieldDriver21
287 MED_FIELD_WRONLY_DRIVER21<int> *aInvalidMedWrFieldDriver21_3 =
288 new MED_FIELD_WRONLY_DRIVER21<int>(emptyfile_wr, aField);
290 aInvalidMedWrFieldDriver21_3->open();
291 //#ifdef ENABLE_FAULTS
292 CPPUNIT_ASSERT_NO_THROW(aInvalidMedWrFieldDriver21_3->write());
293 //=>Segmentation fault in this case
296 //////////////////////////////////////////////
297 // TEST4: Writing field in the other file //
298 //////////////////////////////////////////////
300 //Creation Write Only MedFieldDriver21
301 MED_FIELD_WRONLY_DRIVER21<int> *aInvalidMedWrFieldDriver21_4 =
302 new MED_FIELD_WRONLY_DRIVER21<int>(other_file_wr, aField);
303 aInvalidMedWrFieldDriver21_4->open();
304 //#ifdef ENABLE_FAULTS
305 CPPUNIT_ASSERT_NO_THROW(aInvalidMedWrFieldDriver21_4->write());
306 aInvalidMedWrFieldDriver21_4->close();
307 //=>Segmentation fault in this case
310 ////////////////////////
311 // TEST5: Main test //
312 ////////////////////////
314 //Creation correct Write Only MedFieldDriver21
315 MED_FIELD_WRONLY_DRIVER21<int> *aMedWrFieldDriver21 =
316 new MED_FIELD_WRONLY_DRIVER21<int>(filename_wr, aField);
319 CPPUNIT_ASSERT(aMedWrFieldDriver21);
321 //Trying write field before open file
322 //#ifdef ENABLE_FORCED_FAILURES
323 CPPUNIT_ASSERT_THROW(aMedWrFieldDriver21->write(),MEDEXCEPTION);
324 //CPPUNIT_ASSERT_NO_THROW(aMedWrFieldDriver21->write());
325 // (BUG) No exception in this case
331 aMedWrFieldDriver21->open();
333 catch(MEDEXCEPTION &e)
335 CPPUNIT_FAIL(e.what());
339 CPPUNIT_FAIL("Unknown exception");
342 //#ifdef ENABLE_FORCED_FAILURES
343 //Trying open file secondary.
344 //CPPUNIT_ASSERT_THROW(aMedWrFieldDriver21->open(), MEDEXCEPTION);
345 CPPUNIT_ASSERT_NO_THROW(aMedWrFieldDriver21->open());
346 // (BUG) No exception in this case
349 //Test setFieldName() and getFieldName
350 aField->setName(fieldname_cpy);
353 aMedWrFieldDriver21->setFieldName(fieldname_cpy);
355 catch(MEDEXCEPTION &e)
357 CPPUNIT_FAIL(e.what());
361 CPPUNIT_FAIL("Unknown exception");
363 CPPUNIT_ASSERT_EQUAL(fieldname_cpy, aMedWrFieldDriver21->getFieldName());
365 // there must be exception as mesh is not yet read
366 // !!!!!!! mesh is not needed for writing !!!!!!!
367 //CPPUNIT_ASSERT_THROW(aMedWrFieldDriver21->write(),MEDEXCEPTION);
370 aMedWrFieldDriver21->write();
372 MESH* aMesh = new MESH();
373 aMesh->setName("maa1");
374 MED_MESH_RDONLY_DRIVER aMeshDriver (filename_rd, aMesh);
375 aMeshDriver.setMeshName("maa1");
379 SUPPORT* sup = new SUPPORT(aMesh);
380 aField->setSupport(sup);
382 catch(MEDEXCEPTION &e) {
383 CPPUNIT_FAIL(e.what());
386 CPPUNIT_FAIL("Unknown exception");
389 //MESH* mesh(MED_DRIVER,);
390 //aMedWrFieldDriver21->getSupport()->setMesh(mesh);//read(),MEDEXCEPTION);
392 //#ifdef ENABLE_FAULTS
393 //Test write() method
396 aMedWrFieldDriver21->write();
398 catch(MEDEXCEPTION &e)
400 CPPUNIT_FAIL(e.what());
404 CPPUNIT_FAIL("Unknown exception");
406 //=>Segmentation fault in this case
409 //Test read() method for Write only part
410 CPPUNIT_ASSERT_THROW(aMedWrFieldDriver21->read(),MEDEXCEPTION);
412 //Test close() method
415 aMedWrFieldDriver21->close();
417 catch(MEDEXCEPTION &e)
419 CPPUNIT_FAIL(e.what());
423 CPPUNIT_FAIL("Unknown exception");
426 //Default constructor
427 MED_FIELD_WRONLY_DRIVER21<int> aMedWrFieldDriver21Cpy_1;
429 //Test (void operator =) defined in GENDRIVER class
430 aMedWrFieldDriver21Cpy_1 = *aMedWrFieldDriver21;
432 //Test (bool operator ==) defined in GENDRIVER class
433 CPPUNIT_ASSERT(aMedWrFieldDriver21Cpy_1.GENDRIVER::operator==(*aMedWrFieldDriver21));
435 //Test copy constructor
436 MED_FIELD_WRONLY_DRIVER21<int> aMedWrFieldDriver21Cpy_2 (*aMedWrFieldDriver21);
437 CPPUNIT_ASSERT_EQUAL(aMedWrFieldDriver21Cpy_2, *aMedWrFieldDriver21);
439 //Test (friend ostream & operator <<) defined GENDRIVER class in MEDMEM_GenDriver.hxx
440 ostringstream wostr1, wostr2;
441 wostr1 << aMedWrFieldDriver21Cpy_1;
442 wostr2 << aMedWrFieldDriver21Cpy_2;
443 CPPUNIT_ASSERT(wostr1.str() != "");
444 CPPUNIT_ASSERT(wostr1.str() == wostr2.str());
447 //--------------------------Test READ/WRITE part------------------------------//
450 system(cp_file_rdwr.c_str());
451 /////////////////////////////////////
452 // TEST1: Open not existing file //
453 /////////////////////////////////////
455 //Creation Invalid Read/Write MedFieldDriver21 (file not exist)
456 MED_FIELD_RDWR_DRIVER21<int> *aInvalidMedRdWrFieldDriver21_1 =
457 new MED_FIELD_RDWR_DRIVER21<int>(fileNotExist_wr, aField_1);
458 //Trying open not existing file
459 CPPUNIT_ASSERT_THROW(aInvalidMedRdWrFieldDriver21_1->open(), MEDEXCEPTION);
461 /////////////////////////////////////////////
462 // TEST2: Open file with empty file name //
463 /////////////////////////////////////////////
464 //Creation Invalid Read/Write MedFieldDriver21 (empty file name)
465 MED_FIELD_RDWR_DRIVER21<int> *aInvalidMedRdWrFieldDriver21_2 =
466 new MED_FIELD_RDWR_DRIVER21<int>(emptyfilename, aField_1);
467 //Trying open not existing file and file with empty name
468 CPPUNIT_ASSERT_THROW(aInvalidMedRdWrFieldDriver21_2->open(), MEDEXCEPTION);
470 /////////////////////////////////////////////////////
471 // TEST3: Reading field from file without fields //
472 /////////////////////////////////////////////////////
473 MED_FIELD_RDWR_DRIVER21<int> *aInvalidMedRdWrFieldDriver21_3 =
474 new MED_FIELD_RDWR_DRIVER21<int>(filenameWithOutFileds, aField_1);
475 aInvalidMedRdWrFieldDriver21_3->open();
476 aInvalidMedRdWrFieldDriver21_3->setFieldName(fieldname);
477 //Trying read field from file
478 CPPUNIT_ASSERT_THROW(aInvalidMedRdWrFieldDriver21_3->read(), MEDEXCEPTION);
479 aInvalidMedRdWrFieldDriver21_3->close();
481 ///////////////////////////////////////////////////////
482 // TEST4: Writing field in empty file without mesh //
483 ///////////////////////////////////////////////////////
484 //Creation Invalid Read/Write MedFieldDriver21
485 MED_FIELD_RDWR_DRIVER21<int> *aInvalidMedRdWrFieldDriver21_4 =
486 new MED_FIELD_RDWR_DRIVER21<int>(emptyfile_rdwr, aField);
488 aInvalidMedRdWrFieldDriver21_4->open();
489 //#ifdef ENABLE_FAULTS
490 // CPPUNIT_ASSERT_THROW(aInvalidMedRdWrFieldDriver21_4->write(), MEDEXCEPTION);
491 //=>Segmentation fault in this case
494 //VB : I don't quite understand the test, because, if the
495 //file is already open, it is the open method that should fail.
496 // as it is of little importance for the whole test base,
497 //I remove it altogether
499 // //////////////////////////////////////////////
500 // // TEST6: Writing field in the other file //
501 // //////////////////////////////////////////////
502 // //Creation Invalid Read/Write MedFieldDriver21
503 // MED_FIELD_RDWR_DRIVER21<int> *aInvalidMedRdWrFieldDriver21_5 =
504 // new MED_FIELD_RDWR_DRIVER21<int>(other_file_wr, aField);
505 // aInvalidMedRdWrFieldDriver21_5->open();
506 // //#ifdef ENABLE_FAULTS
507 // CPPUNIT_ASSERT_THROW(aInvalidMedRdWrFieldDriver21_5->write(), MEDEXCEPTION);
508 // //=>Segmentation fault in this case
511 ////////////////////////
512 // TEST7: Main test //
513 ////////////////////////
515 //Creation correct Read/Write MedFieldDriver21
516 MED_FIELD_RDWR_DRIVER21<double> *aMedRdWrFieldDriver21 =
517 new MED_FIELD_RDWR_DRIVER21<double>(filename_rdwr, aField_2);
520 CPPUNIT_ASSERT(aMedRdWrFieldDriver21);
522 //Trying read/write field before open file
523 CPPUNIT_ASSERT_THROW(aMedRdWrFieldDriver21->read(),MEDEXCEPTION);
524 //#ifdef ENABLE_FORCED_FAILURES
525 CPPUNIT_ASSERT_THROW(aMedRdWrFieldDriver21->write(),MEDEXCEPTION);
526 //(BUG) No exception in this case
532 aMedRdWrFieldDriver21->open();
534 catch(MEDEXCEPTION &e)
536 CPPUNIT_FAIL(e.what());
540 CPPUNIT_FAIL("Unknown exception");
543 //#ifdef ENABLE_FORCED_FAILURES
544 //Trying open file secondary.
545 // CPPUNIT_ASSERT_THROW(aMedRdWrFieldDriver21->open(), MEDEXCEPTION);
546 // (BUG) No exception in this case
549 //Trying read field from file if field name is empty
550 CPPUNIT_ASSERT_THROW(aMedRdFieldDriver21->read(), MEDEXCEPTION);
552 //Test setFieldName() and getFieldName
555 aMedRdWrFieldDriver21->setFieldName(fileldnotexist);
557 catch(MEDEXCEPTION &e)
559 CPPUNIT_FAIL(e.what());
563 CPPUNIT_FAIL("Unknown exception");
565 CPPUNIT_ASSERT_EQUAL(fileldnotexist, aMedRdWrFieldDriver21->getFieldName());
567 //Trying read not existing field from file
568 // CPPUNIT_ASSERT_THROW(aMedRdWrFieldDriver21->read(), MEDEXCEPTION);
572 aMedRdWrFieldDriver21->setFieldName(fieldnameDouble);
573 aMedRdWrFieldDriver21->open();
576 aMedRdWrFieldDriver21->read();
578 catch(MEDEXCEPTION &e)
580 CPPUNIT_FAIL(e.what());
584 CPPUNIT_FAIL("Unknown exception");
587 //Trying write field in the file with empty name
588 aField_2->setName(emptyfilename);
589 aMedRdWrFieldDriver21->setFieldName(emptyfilename);
590 CPPUNIT_ASSERT_THROW(aMedRdWrFieldDriver21->write(), MEDEXCEPTION);
592 //Test write() method
593 aField_2->setName(fieldnameDouble_cpy);
594 aMedRdWrFieldDriver21->setFieldName(fieldnameDouble_cpy);
595 //#ifdef ENABLE_FAULTS
598 aMedRdWrFieldDriver21->write();
600 catch(MEDEXCEPTION &e)
602 CPPUNIT_FAIL(e.what());
606 CPPUNIT_FAIL("Unknown exception");
608 //=>Segmentation fault in this case
611 //Test close() method
614 aMedRdWrFieldDriver21->close();
616 catch(MEDEXCEPTION &e)
618 CPPUNIT_FAIL(e.what());
622 CPPUNIT_FAIL("Unknown exception");
625 //Default constructor
626 MED_FIELD_RDWR_DRIVER21<double> aMedRdWrFieldDriver21Cpy_1;
628 //Test (void operator =) defined in GENDRIVER class
629 aMedRdWrFieldDriver21Cpy_1 = *aMedRdWrFieldDriver21;
631 //Test (bool operator ==) defined in GENDRIVER class
632 CPPUNIT_ASSERT(aMedRdWrFieldDriver21Cpy_1.GENDRIVER::operator==(*aMedRdWrFieldDriver21));
634 //Test copy constructor
635 MED_FIELD_RDWR_DRIVER21<double> aMedRdWrFieldDriver21Cpy_2 (*aMedRdWrFieldDriver21);
636 CPPUNIT_ASSERT_EQUAL(aMedRdWrFieldDriver21Cpy_2, *aMedRdWrFieldDriver21);
638 //Test (friend ostream & operator <<) defined GENDRIVER class in MEDMEM_GenDriver.hxx
639 ostringstream rwostr1, rwostr2;
640 rwostr1 << aMedRdWrFieldDriver21Cpy_1;
641 rwostr2 << aMedRdWrFieldDriver21Cpy_2;
642 CPPUNIT_ASSERT(rwostr1.str() != "");
643 CPPUNIT_ASSERT(rwostr1.str() == rwostr2.str());
650 delete aInvalidMedRdFieldDriver21_1;
651 delete aInvalidMedRdFieldDriver21_2;
652 delete aInvalidMedRdFieldDriver21_3;
653 delete aMedRdFieldDriver21;
655 delete aInvalidMedWrFieldDriver21_1;
656 delete aInvalidMedWrFieldDriver21_2;
657 delete aInvalidMedWrFieldDriver21_3;
658 delete aInvalidMedWrFieldDriver21_4;
659 delete aMedWrFieldDriver21;
661 delete aInvalidMedRdWrFieldDriver21_1;
662 delete aInvalidMedRdWrFieldDriver21_2;
663 delete aInvalidMedRdWrFieldDriver21_3;
664 delete aInvalidMedRdWrFieldDriver21_4;
665 // delete aInvalidMedRdWrFieldDriver21_5;
666 delete aMedRdWrFieldDriver21;