X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling_Swig%2FMEDCouplingPickleTest.py;h=e5f6bb732227071af260d0bf08a921b354555900;hb=5875934d995681f049d6c21880eb74fa3359305c;hp=677b11082a1c5e1ecef1dce6df7a1453393b747b;hpb=8e5053c4181a60f206e65e736fbfd8bbca2c0d88;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling_Swig/MEDCouplingPickleTest.py b/src/MEDCoupling_Swig/MEDCouplingPickleTest.py index 677b11082..e5f6bb732 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-2019 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 @@ -18,7 +18,12 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from MEDCoupling import * + +import sys +if sys.platform == "win32": + from MEDCouplingCompat import * +else: + from medcoupling import * from MEDCouplingDataForTest import MEDCouplingDataForTest if MEDCouplingHasNumPyBindings(): @@ -28,7 +33,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 +46,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 +62,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.""" @@ -71,21 +81,21 @@ 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 @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() m.setName("mesh") m.getCoords().setInfoOnComponents(["aa","bbb","ddddd"]) - m.checkCoherency() + m.checkConsistencyLight() # a0,a1,a2=m.getTinySerializationInformation() b0,b1=m.serialize() @@ -103,13 +113,13 @@ 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 - + @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy") def test6(self): """ Test of a MEDCoupling1SGTUMesh pickeling.""" @@ -117,11 +127,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,14 +140,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 +158,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 +175,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 +184,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,12 +203,16 @@ 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)) + ### + 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,19 +247,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 +274,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,28 +284,102 @@ 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)) + ### + 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(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