X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling_Swig%2FMEDCouplingPickleTest.py;h=8407b5ef7ff348b39967854b15f04737ff966dca;hb=662a2a2393a25baef77e42f74204b11b70a9646c;hp=4b954c468b64f978574aac277c3f97a70da853ae;hpb=3b1d77efdd048ef4aad858e96138bf79318119df;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling_Swig/MEDCouplingPickleTest.py b/src/MEDCoupling_Swig/MEDCouplingPickleTest.py index 4b954c468..8407b5ef7 100644 --- a/src/MEDCoupling_Swig/MEDCouplingPickleTest.py +++ b/src/MEDCoupling_Swig/MEDCouplingPickleTest.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2015 CEA/DEN, EDF R&D +# Copyright (C) 2007-2023 CEA, EDF # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -18,7 +18,9 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from MEDCoupling import * + +import sys +from medcoupling import * from MEDCouplingDataForTest import MEDCouplingDataForTest if MEDCouplingHasNumPyBindings(): @@ -28,7 +30,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 +43,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,17 +59,17 @@ 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 - + @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") def test3(self): """ Test of a MEDCouplingUMesh pickeling.""" @@ -72,14 +79,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,12 +111,12 @@ 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 - + @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") def test6(self): """ Test of a MEDCoupling1SGTUMesh pickeling.""" @@ -117,11 +124,11 @@ 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 - + @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") def test7(self): """ Test of a MEDCoupling1DGTUMesh pickeling.""" @@ -130,8 +137,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 +157,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 +172,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 +182,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,10 +202,14 @@ 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)) + ### + ft=MEDCouplingFieldTemplate(f) + ft2=pickle.loads(pickle.dumps(ft,pickle.HIGHEST_PROTOCOL)) + self.assertTrue(ft2.isEqual(ft,1e-16)) pass @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") @@ -233,7 +244,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(); @@ -271,27 +282,101 @@ class MEDCouplingPickleTest(unittest.TestCase): tmpIds=f.getCellIdsHavingGaussLocalization(0); self.assertEqual(ids2,list(tmpIds.getValues())); self.assertRaises(InterpKernelException,f.checkConsistencyLight);#<- it's always not ok because undelying array not with the good size. - array2=f.getArray().substr(0,10); + array2=f.getArray().subArray(0,10); 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)) + ### + ft=MEDCouplingFieldTemplate(f) + ft2=pickle.loads(pickle.dumps(ft,pickle.HIGHEST_PROTOCOL)) + self.assertTrue(ft2.isEqual(ft,1e-16)) pass def test13(self): 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(DataArrayInt32.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