X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling_Swig%2FMEDCouplingPickleTest.py;h=a73bb88ab849937a8a93935dff8caec0f0241e73;hb=a019ec6e72f540d3378f3e869c2b19bf4886459c;hp=89a2f60c7a8edfa4af1c7886e2370cb21b2cb540;hpb=5da72d398d0eb1820c3ce6dd90b8579b6b14edf5;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling_Swig/MEDCouplingPickleTest.py b/src/MEDCoupling_Swig/MEDCouplingPickleTest.py index 89a2f60c7..a73bb88ab 100644 --- a/src/MEDCoupling_Swig/MEDCouplingPickleTest.py +++ b/src/MEDCoupling_Swig/MEDCouplingPickleTest.py @@ -28,7 +28,12 @@ if MEDCouplingHasNumPyBindings(): from platform import architecture from sys import getrefcount -import os,gc,weakref,cPickle,unittest +import os, gc, weakref, unittest +import sys +if sys.version_info.major < 3: + import cPickle as pickle +else: + import pickle class MEDCouplingPickleTest(unittest.TestCase): @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") @@ -36,14 +41,14 @@ class MEDCouplingPickleTest(unittest.TestCase): """ Test of a simple DataArrayDouble.""" x=DataArrayDouble(10,1) ; x.iota() ; x.rearrange(2) ; x.setInfoOnComponents(["aa","bbb"]) x.setName("toto") - pickled=cPickle.dumps(x,cPickle.HIGHEST_PROTOCOL) - xx=cPickle.loads(pickled) + pickled=pickle.dumps(x,pickle.HIGHEST_PROTOCOL) + xx=pickle.loads(pickled) self.assertTrue(xx.isEqual(x,1e-16)) # Bigger to check that the behavior is OK for large strings. x=DataArrayDouble(1200) ; x.iota() ; x.setInfoOnComponents(["aa"]) x.setName("titi") - pickled=cPickle.dumps(x,cPickle.HIGHEST_PROTOCOL) - xx=cPickle.loads(pickled) + pickled=pickle.dumps(x,pickle.HIGHEST_PROTOCOL) + xx=pickle.loads(pickled) self.assertTrue(xx.isEqual(x,1e-16)) pass @@ -52,14 +57,14 @@ class MEDCouplingPickleTest(unittest.TestCase): """ Test of a simple DataArrayInt.""" x=DataArrayInt(10) ; x.iota() ; x.rearrange(2) ; x.setInfoOnComponents(["aa","bbb"]) x.setName("toto") - pickled=cPickle.dumps(x,cPickle.HIGHEST_PROTOCOL) - xx=cPickle.loads(pickled) + pickled=pickle.dumps(x,pickle.HIGHEST_PROTOCOL) + xx=pickle.loads(pickled) self.assertTrue(xx.isEqual(x)) # Bigger to check that the behavior is OK for large strings. x=DataArrayInt(1200) ; x.iota() ; x.setInfoOnComponents(["aa"]) x.setName("titi") - pickled=cPickle.dumps(x,cPickle.HIGHEST_PROTOCOL) - xx=cPickle.loads(pickled) + pickled=pickle.dumps(x,pickle.HIGHEST_PROTOCOL) + xx=pickle.loads(pickled) self.assertTrue(xx.isEqual(x)) pass @@ -72,14 +77,14 @@ class MEDCouplingPickleTest(unittest.TestCase): m.setName("mesh") m.getCoords().setInfoOnComponents(["aa","bbb","ddddd"]) m.checkConsistencyLight() - st=cPickle.dumps(m,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + st=pickle.dumps(m,pickle.HIGHEST_PROTOCOL) + m2=pickle.loads(st) self.assertTrue(m2.isEqual(m,1e-16)) pass @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") def test4(self): - """ Idem test3 except that here serialization/deserialization is done explicitely.""" + """ Idem test3 except that here serialization/deserialization is done explicitly.""" arr=DataArrayDouble(10) ; arr.iota() m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr) m=m.buildUnstructured() @@ -104,8 +109,8 @@ class MEDCouplingPickleTest(unittest.TestCase): m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) m.setName("mesh") m.checkConsistencyLight() - st=cPickle.dumps(m,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + st=pickle.dumps(m,pickle.HIGHEST_PROTOCOL) + m2=pickle.loads(st) self.assertTrue(m2.isEqual(m,1e-16)) self.assertTrue(m2.getCoordsAt(0).isEqual(arrX,1e-16)) pass @@ -117,8 +122,8 @@ class MEDCouplingPickleTest(unittest.TestCase): m=MEDCouplingCMesh() ; m.setCoords(arr,arr) m=m.build1SGTUnstructured() self.assertTrue(isinstance(m,MEDCoupling1SGTUMesh)) - st=cPickle.dumps(m,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + st=pickle.dumps(m,pickle.HIGHEST_PROTOCOL) + m2=pickle.loads(st) self.assertTrue(m2.isEqual(m,1e-16)) pass @@ -130,8 +135,8 @@ class MEDCouplingPickleTest(unittest.TestCase): m=m.buildUnstructured() ; m.convertAllToPoly() m=MEDCoupling1DGTUMesh(m) self.assertTrue(isinstance(m,MEDCoupling1DGTUMesh)) - st=cPickle.dumps(m,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + st=pickle.dumps(m,pickle.HIGHEST_PROTOCOL) + m2=pickle.loads(st) self.assertTrue(m2.isEqual(m,1e-16)) pass @@ -150,8 +155,8 @@ class MEDCouplingPickleTest(unittest.TestCase): mesh2D.setCoords(mesh3D.getCoords()) mesh=MEDCouplingMappedExtrudedMesh(mesh3D,mesh2D,0) ; del mesh3D,mesh2D self.assertTrue(isinstance(mesh,MEDCouplingMappedExtrudedMesh)) - st=cPickle.dumps(mesh,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + st=pickle.dumps(mesh,pickle.HIGHEST_PROTOCOL) + m2=pickle.loads(st) self.assertTrue(m2.isEqual(mesh,1e-16)) pass @@ -165,8 +170,8 @@ class MEDCouplingPickleTest(unittest.TestCase): # mesh=MEDCouplingCurveLinearMesh() ; mesh.setCoords(m.getCoords()) ; del m mesh.setNodeGridStructure([10,5]) - st=cPickle.dumps(mesh,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + st=pickle.dumps(mesh,pickle.HIGHEST_PROTOCOL) + m2=pickle.loads(st) self.assertTrue(m2.isEqual(mesh,1e-16)) pass @@ -175,8 +180,8 @@ class MEDCouplingPickleTest(unittest.TestCase): """ Test of a MEDCouplingIMesh pickeling.""" m=MEDCouplingIMesh("mesh",3,DataArrayInt([3,1,4]),DataArrayDouble([1.5,2.5,3.5]),DataArrayDouble((0.5,1.,0.25))) ; m.setAxisUnit("km") m.checkConsistencyLight() - st=cPickle.dumps(m,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + st=pickle.dumps(m,pickle.HIGHEST_PROTOCOL) + m2=pickle.loads(st) self.assertTrue(m2.isEqual(m,1e-16)) self.assertEqual(m2.getName(),m.getName()) pass @@ -195,8 +200,8 @@ class MEDCouplingPickleTest(unittest.TestCase): f.getArray().setInfoOnComponents(["u1","vv2"]) f.checkConsistencyLight(); # - st=cPickle.dumps(f,cPickle.HIGHEST_PROTOCOL) - f2=cPickle.loads(st) + st=pickle.dumps(f,pickle.HIGHEST_PROTOCOL) + f2=pickle.loads(st) self.assertTrue(f2.isEqual(f,1e-16,1e-16)) self.assertTrue(f2.getMesh().isEqual(f.getMesh(),1e-16)) pass @@ -233,7 +238,7 @@ class MEDCouplingPickleTest(unittest.TestCase): self.assertEqual(2,f.getNbOfGaussLocalization()); array=DataArrayDouble.New(); ptr=18*2*[None] - for i in xrange(18*2): + for i in range(18 * 2): ptr[i]=float(i+1) array.setValues(ptr,18,2); ptr=array.getPointer(); @@ -275,8 +280,8 @@ class MEDCouplingPickleTest(unittest.TestCase): f.setArray(array2); f.checkConsistencyLight(); #### - st=cPickle.dumps(f,cPickle.HIGHEST_PROTOCOL) - f2=cPickle.loads(st) + st=pickle.dumps(f,pickle.HIGHEST_PROTOCOL) + f2=pickle.loads(st) self.assertTrue(f2.isEqual(f,1e-16,1e-16)) self.assertTrue(f2.getMesh().isEqual(f.getMesh(),1e-16)) pass @@ -285,13 +290,83 @@ class MEDCouplingPickleTest(unittest.TestCase): eStr="This is an exception." e=InterpKernelException(eStr) self.assertEqual(e.what(),eStr) - st=cPickle.dumps(e,cPickle.HIGHEST_PROTOCOL) - e2=cPickle.loads(st) + st=pickle.dumps(e,pickle.HIGHEST_PROTOCOL) + e2=pickle.loads(st) self.assertTrue(e is not e2) self.assertTrue(isinstance(e2,InterpKernelException)) self.assertEqual(e2.what(),eStr) pass + @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") + def test14(self): + """Pickelization of DataArrayBytes""" + x=DataArrayByte(256,1) + for i in range(256): + x[i]=-128+i + pass + x.rearrange(2) ; x.setInfoOnComponents(["aa","bbb"]) + x.setName("toto") + st=pickle.dumps(x,pickle.HIGHEST_PROTOCOL) + x2=pickle.loads(st) + self.assertTrue(x2.isEqual(x)) + pass + + @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") + def test15(self): + """Pickelization of DataArrayFloat""" + x=DataArrayFloat(256) ; x.iota() + x.rearrange(2) ; x.setInfoOnComponents(["aa","bbb"]) + x.setName("toto") + st = pickle.dumps(x, pickle.HIGHEST_PROTOCOL) + x2 = pickle.loads(st) + self.assertTrue(x2.isEqual(x,1e-7)) + pass + + @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") + def test16(self): + """ Test of MEDCouplingFieldInt lying on MEDCouplingCMesh pickeling. """ + arrX=DataArrayDouble(10) ; arrX.iota() ; arrX.setInfoOnComponents(["aa"]) + arrY=DataArrayDouble(5) ; arrY.iota() ; arrY.setInfoOnComponents(["bbb"]) + m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) + f=m.getMeasureField(True) + f=f.convertToIntField() + self.assertTrue(isinstance(f,MEDCouplingFieldInt)) + f.setName("aname") + a=f.getArray() + b=a[:] ; b.iota(7000) + f.setArray(DataArrayInt.Meld(a,b)) + f.getArray().setInfoOnComponents(["u1","vv2"]) + f.checkConsistencyLight(); + # + st = pickle.dumps(f, pickle.HIGHEST_PROTOCOL) + f2 = pickle.loads(st) + self.assertTrue(f2.isEqual(f,1e-16,0)) + self.assertTrue(f2.getMesh().isEqual(f.getMesh(),1e-16)) + pass + + @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") + def test17(self): + """ Test of MEDCouplingFieldInt lying on MEDCouplingCMesh pickeling. """ + arrX=DataArrayDouble(10) ; arrX.iota() ; arrX.setInfoOnComponents(["aa"]) + arrY=DataArrayDouble(5) ; arrY.iota() ; arrY.setInfoOnComponents(["bbb"]) + m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) + f2=m.getMeasureField(True) + f=MEDCouplingFieldFloat(ON_CELLS) + f.setMesh(m) ; f.setArray(f2.getArray().convertToFloatArr()) + self.assertTrue(isinstance(f,MEDCouplingFieldFloat)) + f.setName("aname") + a=f.getArray() + b=a[:] ; b.iota(7000.) + f.setArray(DataArrayFloat.Meld(a,b)) + f.getArray().setInfoOnComponents(["u1","vv2"]) + f.checkConsistencyLight(); + # + st = pickle.dumps(f, pickle.HIGHEST_PROTOCOL) + f2 = pickle.loads(st) + self.assertTrue(f2.isEqual(f,1e-16,0)) + self.assertTrue(f2.getMesh().isEqual(f.getMesh(),1e-16)) + pass + def setUp(self): pass pass