X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling_Swig%2FMEDCouplingPickleTest.py;h=d6135c6746fa84b84a0be50c90bfe07abd80ef4d;hb=fc22b4cd63404700f73e09be7507a11b838e55bc;hp=677b11082a1c5e1ecef1dce6df7a1453393b747b;hpb=8e5053c4181a60f206e65e736fbfd8bbca2c0d88;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling_Swig/MEDCouplingPickleTest.py b/src/MEDCoupling_Swig/MEDCouplingPickleTest.py index 677b11082..d6135c674 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-2016 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 @@ -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 @@ -71,9 +76,9 @@ class MEDCouplingPickleTest(unittest.TestCase): m=m.buildUnstructured() m.setName("mesh") m.getCoords().setInfoOnComponents(["aa","bbb","ddddd"]) - m.checkCoherency() - st=cPickle.dumps(m,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + m.checkConsistencyLight() + st=pickle.dumps(m,pickle.HIGHEST_PROTOCOL) + m2=pickle.loads(st) self.assertTrue(m2.isEqual(m,1e-16)) pass @@ -85,7 +90,7 @@ class MEDCouplingPickleTest(unittest.TestCase): m=m.buildUnstructured() m.setName("mesh") m.getCoords().setInfoOnComponents(["aa","bbb","ddddd"]) - m.checkCoherency() + m.checkConsistencyLight() # a0,a1,a2=m.getTinySerializationInformation() b0,b1=m.serialize() @@ -103,9 +108,9 @@ class MEDCouplingPickleTest(unittest.TestCase): # m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) m.setName("mesh") - m.checkCoherency() - st=cPickle.dumps(m,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + m.checkConsistencyLight() + 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,14 +135,14 @@ 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 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") def test8(self): - """ Test of a MEDCouplingExtrudedMesh pickeling.""" + """ Test of a MEDCouplingMappedExtrudedMesh pickeling.""" arrX=DataArrayDouble(10) ; arrX.iota() ; arrX.setInfoOnComponents(["aa"]) arrY=DataArrayDouble(5) ; arrY.iota() ; arrY.setInfoOnComponents(["bbb"]) arrZ=DataArrayDouble(7) ; arrZ.iota() ; arrZ.setInfoOnComponents(["cccc"]) @@ -148,10 +153,10 @@ class MEDCouplingPickleTest(unittest.TestCase): mesh2D=m.buildUnstructured() ; del m # mesh2D.setCoords(mesh3D.getCoords()) - mesh=MEDCouplingExtrudedMesh(mesh3D,mesh2D,0) ; del mesh3D,mesh2D - self.assertTrue(isinstance(mesh,MEDCouplingExtrudedMesh)) - st=cPickle.dumps(mesh,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + mesh=MEDCouplingMappedExtrudedMesh(mesh3D,mesh2D,0) ; del mesh3D,mesh2D + self.assertTrue(isinstance(mesh,MEDCouplingMappedExtrudedMesh)) + 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 @@ -174,9 +179,9 @@ class MEDCouplingPickleTest(unittest.TestCase): def test10(self): """ 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.checkCoherency() - st=cPickle.dumps(m,cPickle.HIGHEST_PROTOCOL) - m2=cPickle.loads(st) + m.checkConsistencyLight() + 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 @@ -193,10 +198,10 @@ class MEDCouplingPickleTest(unittest.TestCase): b=a[:] ; b.iota(7000.) f.setArray(DataArrayDouble.Meld(a,b)) f.getArray().setInfoOnComponents(["u1","vv2"]) - f.checkCoherency(); + 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,19 +238,19 @@ 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(); f.setArray(array); f.setName("MyFirstFieldOnGaussPoint"); - f.checkCoherency(); + f.checkConsistencyLight(); self.assertAlmostEqual(27.,f.getIJK(2,5,0),14); self.assertAlmostEqual(16.,f.getIJK(1,5,1),14); # f.clearGaussLocalizations(); self.assertEqual(0,f.getNbOfGaussLocalization()); - self.assertRaises(InterpKernelException,f.checkCoherency); + self.assertRaises(InterpKernelException,f.checkConsistencyLight); ids1=[0,1,3,4] self.assertRaises(InterpKernelException,f.setGaussLocalizationOnCells,ids1,_refCoo2,_gsCoo1,_wg1); self.assertEqual(0,f.getNbOfGaussLocalization()); @@ -260,7 +265,7 @@ class MEDCouplingPickleTest(unittest.TestCase): self.assertEqual(0,f.getGaussLocalizationIdOfOneCell(0)); self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(1)); self.assertEqual(1,f.getGaussLocalizationIdOfOneCell(2)); - self.assertRaises(InterpKernelException,f.checkCoherency);#<- cell 3 has no localization + self.assertRaises(InterpKernelException,f.checkConsistencyLight);#<- cell 3 has no localization ids4=[3] _gsCoo2=_gsCoo1; _wg2=_wg1; @@ -270,13 +275,13 @@ class MEDCouplingPickleTest(unittest.TestCase): self.assertEqual(3,f.getNbOfGaussLocalization()); tmpIds=f.getCellIdsHavingGaussLocalization(0); self.assertEqual(ids2,list(tmpIds.getValues())); - self.assertRaises(InterpKernelException,f.checkCoherency);#<- it's always not ok because undelying array not with the good size. - array2=f.getArray().substr(0,10); + self.assertRaises(InterpKernelException,f.checkConsistencyLight);#<- it's always not ok because undelying array not with the good size. + array2=f.getArray().subArray(0,10); f.setArray(array2); - f.checkCoherency(); + 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