Salome HOME
Merge branch 'V7_7_BR'
[tools/medcoupling.git] / src / MEDLoader / Swig / MEDLoaderTest3.py
index 004c88a5a1c1a900df69aa3658a52db240980854..ce9e0e076d575eea8713ddafb5b52451c582336a 100644 (file)
@@ -4346,9 +4346,10 @@ class MEDLoaderTest(unittest.TestCase):
         m3D.setName(meshName)
         m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkCoherency2()
         m1D=m2D.computeSkin() ; m1D.setName(meshName)
+        m0D=MEDCouplingUMesh.Build0DMeshFromCoords(m3D.getCoords()) ; m0D.setName(meshName) ; m0D=m0D[[2,4,10]]
         #
         mm=MEDFileUMesh()
-        mm[0]=m3D ; mm[-1]=m2D ; mm[-2]=m1D
+        mm[0]=m3D ; mm[-1]=m2D ; mm[-2]=m1D ; mm[-3]=m0D
         grpEdge0=DataArrayInt([1,2,3,5]) ; grpEdge0.setName("East")
         grpEdge1=DataArrayInt([0,1]) ; grpEdge1.setName("Corner1")
         grpFaceSouth=DataArrayInt([0,1,8,9,10]) ; grpFaceSouth.setName("SouthFace")
@@ -4595,6 +4596,63 @@ class MEDLoaderTest(unittest.TestCase):
         #
         pass
 
+    def testUnivStatus1(self):
+        """ Non regression test to check the effectiveness of univ write status."""
+        fname="Pyfile95.med"
+        arr=DataArrayDouble(10) ; arr.iota()
+        m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m.setName("mesh")
+        mm=MEDFileCMesh() ; mm.setMesh(m)
+        mm.setUnivNameWrStatus(False) # test is here
+        mm.write(fname,2)
+        mm=MEDFileCMesh(fname)
+        self.assertEqual(mm.getUnivName(),"")
+        mm.setUnivNameWrStatus(True)
+        mm.write(fname,2)
+        mm=MEDFileCMesh(fname)
+        self.assertTrue(mm.getUnivName()!="")
+        pass
+
+    def testEmptyMesh(self):
+      """ MEDLoader should be able to consistently write and read an empty mesh (coords array
+      with 0 tuples """
+      fname = "Pyfile96.med" 
+      m = MEDCouplingUMesh('toto', 2)
+      m.setCoords(DataArrayDouble([], 0, 2))
+      m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
+      mfu = MEDFileUMesh()
+      mfu.setMeshAtLevel(0, m)
+      mfu.write(fname, 2)
+      mfu2 = MEDFileUMesh(fname)
+      self.assertEqual('toto', mfu2.getName())
+      lvl = mfu2.getNonEmptyLevels()
+      self.assertEqual((), lvl)
+
+    @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
+    def testMEDFileUMeshPickeling2(self):
+      """ Check that pickalization can be performed on a unpickalized instance. Non regression test."""
+      name="Mesh_1"
+      grpName1="HAUT"
+      grpName2="BASE"
+      hauteur=1.
+      nbOfNodesPerAxis=3
+      arr=DataArrayDouble(nbOfNodesPerAxis) ; arr.iota() ; arr/=(nbOfNodesPerAxis-1) ; arr*=hauteur
+      m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr) ; m=m.buildUnstructured() ; m.setName(name)
+      mesh=MEDFileUMesh() ; mesh[0]=m
+      m1=m.computeSkin() ; mesh[-1]=m1
+      #
+      bary1=m1.getBarycenterAndOwner()[:,2]
+      grp1=bary1.getIdsInRange(hauteur-1e-12,hauteur+1e-12) ; grp1.setName(grpName1)
+      grp2=bary1.getIdsInRange(0.-1e-12,0.+1e-12) ; grp2.setName(grpName2)
+      mesh.setGroupsAtLevel(-1,[grp1,grp2])
+      
+      import cPickle
+      st=cPickle.dumps(mesh,2)
+      mm=cPickle.loads(st)
+      st2=cPickle.dumps(mm,2)
+      mm2=cPickle.loads(st2)
+      self.assertTrue(mesh.isEqual(mm2,1e-12)[0])
+      pass
+
     pass
 
 if __name__ == "__main__":