X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FSwig%2FSauvLoaderTest.py;h=502e4e4681f40743965cd47646bc828323f75bd3;hb=281f5b3852ce7e4e71642292f133e0138b27d5e9;hp=fbdc3c1a1dddc328eaf83877af58fe800103079c;hpb=719fc675bcf1570685c12723bf53f2a4250622fe;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/Swig/SauvLoaderTest.py b/src/MEDLoader/Swig/SauvLoaderTest.py index fbdc3c1a1..502e4e468 100644 --- a/src/MEDLoader/Swig/SauvLoaderTest.py +++ b/src/MEDLoader/Swig/SauvLoaderTest.py @@ -1,10 +1,10 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2013 CEA/DEN, EDF R&D +# Copyright (C) 2007-2015 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 # License as published by the Free Software Foundation; either -# version 2.1 of the License. +# version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,7 +34,7 @@ class SauvLoaderTest(unittest.TestCase): # read SAUV and write MED medFile = "SauvLoaderTest.med" - sr=SauvReader.New(sauvFile); + sr=SauvReader(sauvFile); d2=sr.loadInMEDFileDS(); d2.write(medFile,0); @@ -95,7 +95,7 @@ class SauvLoaderTest(unittest.TestCase): # write pointeMed to SAUV sauvFile = "SauvLoaderTest.sauv" - sw=SauvWriter.New(); + sw=SauvWriter(); sw.setMEDFileDS(pointeMed); sw.write(sauvFile); @@ -156,9 +156,9 @@ class SauvLoaderTest(unittest.TestCase): io1 = fieldOnFaces.getIterations() fof = fieldOnFaces.getFieldOnMeshAtLevel(f1.getTypeOfField(),io1[i][0],io1[i][1],um1) self.assertTrue( d.isEqual( fof.getArray(), 1e-12 )) - - os.remove( sauvFile ) pass + del sr + os.remove( sauvFile ) pass def testSauv2MedWONodeFamilyNum(self): @@ -234,9 +234,11 @@ class SauvLoaderTest(unittest.TestCase): mesh = mfMesh.getMeshAtLevel(0) self.assertTrue(mesh.getNodalConnectivity().isEqual(m.getNodalConnectivity())) # + del sr os.remove(sauvFile) pass + @unittest.skipUnless(MEDLoader.HasXDR(),"requires XDR") def testMissingGroups(self): """test for issue 0021749: [CEA 601] Some missing groups in mesh after reading a SAUV file with SauvReader.""" self.assertTrue( os.getenv("MED_ROOT_DIR") ) @@ -298,7 +300,7 @@ class SauvLoaderTest(unittest.TestCase): mfd.setMeshes( mfm ) # convert the MED file to a SAUV file - sauvFile = "SauvLoaderTest::testGaussPt.sauv" + sauvFile = "SauvLoaderTest_testGaussPt.sauv" sw=SauvWriter.New(); sw.setMEDFileDS(mfd); sw.write(sauvFile); @@ -317,11 +319,73 @@ class SauvLoaderTest(unittest.TestCase): #f2.setOrder( f.getTime()[2] ) # not stored in SAUV self.assertTrue( m2.isEqual( m, 1e-12 )) self.assertTrue( f2.isEqual( f, 1e-12, 1e-12 )) - + del sr os.remove( sauvFile ) + pass + def testSauvWriterGroupWithOneFamily(self): + """ + This test checks an option for sauv writing. It is requested here to copy a group from a family if a group is lying on a single family. + """ + import re + mfd=MEDLoaderDataForTest.buildAMEDFileDataWithGroupOnOneFamilyForSauv() + sauvFile = "mesh.sauv" + sw=SauvWriter.New() + sw.setMEDFileDS(mfd) + self.assertTrue(not sw.getCpyGrpIfOnASingleFamilyStatus()) + sw.setCpyGrpIfOnASingleFamilyStatus(True) + self.assertTrue(sw.getCpyGrpIfOnASingleFamilyStatus()) + sw.write(sauvFile) + + f = open(sauvFile) + # String pattern for the header of the sub meshes record ("PILE" number, number of named objects, number of objects) + pattern_pile= re.compile(r'\sPILE\sNUMERO\s+(?P[0-9]+)NBRE\sOBJETS\sNOMMES\s+(?P[0-9]+)NBRE\sOBJETS\s+(?P[0-9]+)') + # String pattern for a sub mesh header (cell type, number of components and three numbers) + pattern_header=re.compile(r'\s+(?P[0-9]+)\s+(?P[0-9]+)\s+[0-9]+\s+[0-9]+\s+[0-9]+') + + nbobjects=0 + line = f.readline() + while(line): + match_pile = pattern_pile.match(line) + if match_pile: + number=int(match_pile.group("number")) + if number == 1: + nbnamed=int(match_pile.group("nbnamed")) + nbobjects=int(match_pile.group("nbobjects")) + break + pass + line=f.readline() + pass + + # Skipping the objects names + f.readline() + # Skipping the objects ids + f.readline() + # Looking for each sub-mesh header + line = f.readline() + cur_object=0 + while(line and cur_object < nbobjects): + match_header=pattern_header.match(line) + if match_header: + cell_type=int(match_header.group("type")) + nb_subs=int(match_header.group("nbsubs")) + # Looking for a compound object + if cell_type == 0: + # Testing if there is only one component + self.assertTrue(nb_subs > 1) + else: + f.readline() + f.readline() + cur_object = cur_object + 1 + pass + pass + line=f.readline() + pass + f.close() + os.remove(sauvFile) pass + pass unittest.main()