Exemplo n.º 1
0
 def testChangeGroupName(self):
     """ This test is a non regression test on MEDFileUMesh.changeGroupName thanks to Alliance.
     """
     mfd=MEDLoaderDataForTest.buildAMEDFileDataWithGroupOnOneFamilyForSauv()
     mesh = mfd.getMeshes().getMeshAtPos(0)
     mesh.changeGroupName("grp0_LM1", "xonall1")
     self.assertTrue("xonall1" in mesh.getGroupsNames())
     pass
Exemplo n.º 2
0
 def testChangeGroupName(self):
     """ This test is a non regression test on MEDFileUMesh.changeGroupName thanks to Alliance.
     """
     mfd = MEDLoaderDataForTest.buildAMEDFileDataWithGroupOnOneFamilyForSauv(
     )
     mesh = mfd.getMeshes().getMeshAtPos(0)
     mesh.changeGroupName("grp0_LM1", "xonall1")
     self.assertTrue("xonall1" in mesh.getGroupsNames())
     pass
Exemplo n.º 3
0
    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<number>[0-9]+)NBRE\sOBJETS\sNOMMES\s+(?P<nbnamed>[0-9]+)NBRE\sOBJETS\s+(?P<nbobjects>[0-9]+)')
        # String pattern for a sub mesh header (cell type, number of components and three numbers)
        pattern_header=re.compile(r'\s+(?P<type>[0-9]+)\s+(?P<nbsubs>[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
    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<number>[0-9]+)NBRE\sOBJETS\sNOMMES\s+(?P<nbnamed>[0-9]+)NBRE\sOBJETS\s+(?P<nbobjects>[0-9]+)'
        )
        # String pattern for a sub mesh header (cell type, number of components and three numbers)
        pattern_header = re.compile(
            r'\s+(?P<type>[0-9]+)\s+(?P<nbsubs>[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