Salome HOME
Merge branch 'V9_3_BR'
[tools/medcoupling.git] / src / MEDLoader / Test / SauvLoaderTest.cxx
index 3a5b6d1c5846291eea3cdad97bba5794b601b5f3..018317f95961600b34649bafaa7006fb83591de2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -251,11 +251,12 @@ void SauvLoaderTest::testMed2Sauv()
   CPPUNIT_ASSERT( std::find(groups.begin(),groups.end(),"maa1") != groups.end() );
   CPPUNIT_ASSERT_EQUAL(16,m->getSizeAtLevel(0));
   MCAuto<MEDCouplingMesh> um0 = m->getMeshAtLevel(0);
-  CPPUNIT_ASSERT_EQUAL(12, um0->getNumberOfCellsWithType( INTERP_KERNEL::NORM_TETRA4 ));
-  CPPUNIT_ASSERT_EQUAL(2,  um0->getNumberOfCellsWithType( INTERP_KERNEL::NORM_PYRA5 ));
-  CPPUNIT_ASSERT_EQUAL(2,  um0->getNumberOfCellsWithType( INTERP_KERNEL::NORM_HEXA8 ));
+  CPPUNIT_ASSERT_EQUAL(12, (int)um0->getNumberOfCellsWithType( INTERP_KERNEL::NORM_TETRA4 ));
+  CPPUNIT_ASSERT_EQUAL(2,  (int)um0->getNumberOfCellsWithType( INTERP_KERNEL::NORM_PYRA5 ));
+  CPPUNIT_ASSERT_EQUAL(2,  (int)um0->getNumberOfCellsWithType( INTERP_KERNEL::NORM_HEXA8 ));
   MCAuto<MEDCouplingMesh> um1 = m->getMeshAtLevel(-1);
-  CPPUNIT_ASSERT_EQUAL(2, um1->getNumberOfCellsWithType( INTERP_KERNEL::NORM_TRI3 ));
+  CPPUNIT_ASSERT_EQUAL(1, (int)um1->getNumberOfCellsWithType( INTERP_KERNEL::NORM_TRI3 ));
+  //CPPUNIT_ASSERT_EQUAL(2, um1->getNumberOfCellsWithType( INTERP_KERNEL::NORM_TRI3 ));
   MCAuto<MEDCouplingUMesh> pointeUM0 =
     static_cast<MEDCouplingUMesh*>( pointeMedMesh->getMeshAtLevel(0));
   DataArrayDouble *coo = m->getCoords();
@@ -314,17 +315,44 @@ void SauvLoaderTest::testMed2Sauv()
   CPPUNIT_ASSERT( d->isEqual( *fof->getArray(), 1e-12 ));
 }
 
+void SauvLoaderTest::testCellsWithLingNames()
+{
+  // test IMP 3285: [CEA 1778] SauvReader: only keep the meshes named in the table MED_MAIL
+  std::string file = INTERP_TEST::getResourceFile("test_MED_MAIL.sauv", 3);
+  MCAuto<SauvReader> sr=SauvReader::New(file.c_str());
+  MCAuto<MEDFileData> d2=sr->loadInMEDFileDS();
+  // check that the mesh contains
+  // - Nombre de noeuds : 74
+  // - Nombre de mailles de type MED_TRIA3 : 6
+  // - Nombre de mailles de type MED_QUAD4 : 43
+  // - Nombre de mailles de type MED_HEXA8 : 24
+  // - Nombre de mailles de type MED_PENTA6 : 3
+  MEDFileUMesh* m = static_cast<MEDFileUMesh*>( d2->getMeshes()->getMeshAtPos(0));
+  CPPUNIT_ASSERT_EQUAL(6,  m->getNumberOfCellsWithType( INTERP_KERNEL::NORM_TRI3 ));
+  CPPUNIT_ASSERT_EQUAL(43, m->getNumberOfCellsWithType( INTERP_KERNEL::NORM_QUAD4 ));
+  CPPUNIT_ASSERT_EQUAL(24, m->getNumberOfCellsWithType( INTERP_KERNEL::NORM_HEXA8 ));
+  CPPUNIT_ASSERT_EQUAL(3,  m->getNumberOfCellsWithType( INTERP_KERNEL::NORM_PENTA6 ));
+}
+
 void SauvLoaderTest::tearDown()
 {
   const int nbFilesToRemove = 3;
+#if defined(WIN32) && defined(UNICODE)
+  const wchar_t* fileToRemove[nbFilesToRemove] = { L"allPillesTest.med", L"pointe.sauv", L"mesh_with_void_family.sauv" };
+#else
   const char* fileToRemove[nbFilesToRemove] = { "allPillesTest.med", "pointe.sauv", "mesh_with_void_family.sauv" };
+#endif
   for ( int i = 0; i < nbFilesToRemove; ++i )
-    {
+  {
 #ifdef WIN32
-      if (GetFileAttributes(fileToRemove[i]) != INVALID_FILE_ATTRIBUTES)
+    if (GetFileAttributes(fileToRemove[i]) != INVALID_FILE_ATTRIBUTES)
+#else
+      if (access(fileToRemove[i], F_OK) == 0)
+#endif
+#if defined(WIN32) && defined(UNICODE)
+               _wremove(fileToRemove[i]);
 #else
-        if (access(fileToRemove[i], F_OK) == 0)
+        remove(fileToRemove[i]);
 #endif
-      remove(fileToRemove[i]);
   }
 }