Salome HOME
961a85717a7afd5450cf52988640f4f76ac0f8e9
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingBasicsTest7.py
1 #  -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2020  CEA/DEN,EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License,or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not,write to the Free Software
16 # Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21
22 import sys
23 if sys.platform == "win32":
24     from MEDCouplingCompat import *
25 else:
26     from medcoupling import *
27 import unittest
28 from math import pi,e,sqrt,cos,sin
29 from datetime import datetime
30 from MEDCouplingDataForTest import MEDCouplingDataForTest
31 import rlcompleter,readline # this line has to be here,to ensure a usability of MEDCoupling/MEDLoader. B4 removing it please notify to anthony.geay@cea.fr
32
33 class MEDCouplingBasicsTest7(unittest.TestCase):
34
35     def testDAIGetIdsEqual1(self):
36         tab1=[5,-2,-4,-2,3,2,-2];
37         da=DataArrayInt64.New();
38         da.setValues(tab1,7,1);
39         da2=da.findIdsEqual(-2);
40         self.assertEqual(3,da2.getNumberOfTuples());
41         self.assertEqual(1,da2.getNumberOfComponents());
42         expected1=[1,3,6];
43         self.assertEqual(expected1,da2.getValues());
44         pass
45
46     def testDAIGetIdsEqualList1(self):
47         tab1=[5,-2,-4,-2,3,2,-2];
48         da=DataArrayInt64.New();
49         da.setValues(tab1,7,1);
50         da2=da.findIdsEqualList([3,-2,0]);
51         self.assertEqual(4,da2.getNumberOfTuples());
52         self.assertEqual(1,da2.getNumberOfComponents());
53         expected1=[1,3,4,6];
54         self.assertEqual(expected1,da2.getValues());
55         pass
56
57     def testDAIsUniform1(self):
58         tab1=[1,1,1,1,1]
59         da=DataArrayInt64.New();
60         da.setValues(tab1,5,1);
61         self.assertTrue(da.isUniform(1));
62         da.setIJ(2,0,2);
63         self.assertTrue(not da.isUniform(1));
64         da.setIJ(2,0,1);
65         self.assertTrue(da.isUniform(1));
66         da2=da.convertToDblArr();
67         self.assertTrue(da2.isUniform(1.,1.e-12));
68         da2.setIJ(1,0,1.+1.e-13);
69         self.assertTrue(da2.isUniform(1.,1.e-12));
70         da2.setIJ(1,0,1.+1.e-11);
71         self.assertTrue(not da2.isUniform(1.,1.e-12));
72         pass
73
74     def testDAIBuildComplement1(self):
75         a=DataArrayInt64.New();
76         tab=[3,1,7,8]
77         a.setValues(tab,4,1);
78         b=a.buildComplement(12);
79         self.assertEqual(8,b.getNumberOfTuples());
80         self.assertEqual(1,b.getNumberOfComponents());
81         expected1=[0,2,4,5,6,9,10,11]
82         for i in range(8):
83             self.assertEqual(expected1[i],b.getIJ(0,i));
84             pass
85         pass
86
87     def testDAIBuildUnion1(self):
88         a=DataArrayInt64.New();
89         tab1=[3,1,7,8]
90         a.setValues(tab1,4,1);
91         c=DataArrayInt64.New();
92         tab2=[5,3,0,18,8]
93         c.setValues(tab2,5,1);
94         b=a.buildUnion(c);
95         self.assertEqual(7,b.getNumberOfTuples());
96         self.assertEqual(1,b.getNumberOfComponents());
97         expected1=[0,1,3,5,7,8,18]
98         for i in range(7):
99             self.assertEqual(expected1[i],b.getIJ(0,i));
100             pass
101         b=DataArrayInt64.BuildUnion([a,c]);
102         self.assertEqual(7,b.getNumberOfTuples());
103         self.assertEqual(1,b.getNumberOfComponents());
104         expected1=[0,1,3,5,7,8,18]
105         for i in range(7):
106             self.assertEqual(expected1[i],b.getIJ(0,i));
107             pass
108         pass
109
110     def testDAIBuildIntersection1(self):
111         a=DataArrayInt64.New();
112         tab1=[3,1,7,8]
113         a.setValues(tab1,4,1);
114         c=DataArrayInt64.New();
115         tab2=[5,3,0,18,8]
116         c.setValues(tab2,5,1);
117         b=a.buildIntersection(c);
118         self.assertEqual(2,b.getNumberOfTuples());
119         self.assertEqual(1,b.getNumberOfComponents());
120         expected1=[3,8]
121         for i in range(2):
122             self.assertEqual(expected1[i],b.getIJ(0,i));
123             pass
124         b=DataArrayInt64.BuildIntersection([a,c]);
125         self.assertEqual(2,b.getNumberOfTuples());
126         self.assertEqual(1,b.getNumberOfComponents());
127         expected1=[3,8]
128         for i in range(2):
129             self.assertEqual(expected1[i],b.getIJ(0,i));
130             pass
131         pass
132
133     def testDAIDeltaShiftIndex1(self):
134         a=DataArrayInt64.New();
135         tab=[1,3,6,7,7,9,15]
136         a.setValues(tab,7,1);
137         b=a.deltaShiftIndex();
138         self.assertEqual(6,b.getNumberOfTuples());
139         self.assertEqual(1,b.getNumberOfComponents());
140         expected1=[2,3,1,0,2,6]
141         for i in range(6):
142             self.assertEqual(expected1[i],b.getIJ(0,i));
143             pass
144         pass
145
146     def testDAIBuildSubstraction1(self):
147         a=DataArrayInt64.New()
148         aa=[2,3,6,8,9]
149         a.setValues(aa,5,1)
150         b=DataArrayInt64.New()
151         bb=[1,3,5,9,11]
152         b.setValues(bb,5,1)
153         self.assertEqual([2,6,8],a.buildSubstraction(b).getValues())
154         pass
155
156     def testDAIBuildPermutationArr1(self):
157         a=DataArrayInt64.New()
158         a.setValues([4,5,6,7,8],5,1)
159         b=DataArrayInt64.New()
160         b.setValues([5,4,8,6,7],5,1)
161         c=a.buildPermutationArr(b)
162         self.assertEqual([1,0,4,2,3],c.getValues())
163         self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
164         b.setIJ(0,0,9)
165         self.assertTrue(not a.isEqualWithoutConsideringStrAndOrder(b))
166         self.assertRaises(InterpKernelException,a.buildPermutationArr,b)
167         a.setIJ(3,0,4)
168         b.setIJ(0,0,5)
169         b.setIJ(4,0,4)#a==[4,5,6,4,8] and b==[5,4,8,6,4]
170         self.assertTrue(a.isEqualWithoutConsideringStrAndOrder(b))
171         c=a.buildPermutationArr(b)
172         self.assertEqual([1,3,4,2,3],c.getValues())
173         d=b.convertToDblArr()
174         expect3=[4,4,5,6,8]
175         b.sort()
176         self.assertEqual(expect3,b.getValues())
177         d.sort()
178         self.assertEqual(5,d.getNumberOfTuples());
179         self.assertEqual(1,d.getNumberOfComponents());
180         for i in range(5):
181             self.assertAlmostEqual(float(expect3[i]),d.getIJ(i,0),14);
182             pass
183         pass
184
185     def testDAIAggregateMulti1(self):
186         a=DataArrayInt64.New()
187         a.setValues(list(range(4)),2, 2)
188         a.setName("aa")
189         b=DataArrayInt64.New()
190         b.setValues(list(range(6)), 3, 2)
191         c=DataArrayInt64.Aggregate([a,b])
192         self.assertEqual(list(range(4)) + list(range(6)), c.getValues())
193         self.assertEqual("aa",c.getName())
194         self.assertEqual(5,c.getNumberOfTuples())
195         self.assertEqual(2,c.getNumberOfComponents())
196         pass
197
198     def testDAICheckAndPreparePermutation1(self):
199         vals1=[9,10,0,6,4,11,3,7];
200         expect1=[5,6,0,3,2,7,1,4];
201         vals2=[9,10,0,6,10,11,3,7];
202         da=DataArrayInt64.New();
203         da.setValues(vals1,8,1);
204         da2=da.checkAndPreparePermutation();
205         self.assertEqual(8,da2.getNumberOfTuples());
206         self.assertEqual(1,da2.getNumberOfComponents());
207         for i in range(8):
208             self.assertEqual(expect1[i],da2.getIJ(i,0));
209             pass
210         #
211         da=DataArrayInt64.New();
212         da.alloc(8,1);
213         da.iota(0);
214         da2=da.checkAndPreparePermutation();
215         self.assertEqual(1,da2.getNumberOfComponents());
216         self.assertTrue(da2.isIota(8));
217         #
218         da=DataArrayInt64.New();
219         da.alloc(8,1);
220         da.setValues(vals2,8,1);
221         self.assertRaises(InterpKernelException,da.checkAndPreparePermutation);
222         pass
223
224     def testDAIChangeSurjectiveFormat1(self):
225         vals1=[0,3,2,3,2,2,1,2]
226         expected1=[0,1,2,6,8]
227         expected2=[0,  6,  2,4,5,7,  1,3]
228         da=DataArrayInt64.New();
229         da.setValues(vals1,8,1);
230         #
231         da2,da2I=da.changeSurjectiveFormat(4);
232         self.assertEqual(5,da2I.getNumberOfTuples());
233         self.assertEqual(8,da2.getNumberOfTuples());
234         self.assertEqual(expected1,da2I.getValues());
235         self.assertEqual(expected2,da2.getValues());
236         #
237         self.assertRaises(InterpKernelException,da.changeSurjectiveFormat,3);
238         #
239         pass
240
241     def testDAIGetIdsNotEqual1(self):
242         d=DataArrayInt64.New();
243         vals1=[2,3,5,6,8,5,5,6,1,-5]
244         d.setValues(vals1,10,1);
245         d2=d.findIdsNotEqual(5);
246         self.assertEqual(7,d2.getNumberOfTuples());
247         self.assertEqual(1,d2.getNumberOfComponents());
248         expected1=[0,1,3,4,7,8,9]
249         for i in range(7):
250             self.assertEqual(expected1[i],d2.getIJ(0,i));
251             pass
252         d.rearrange(2);
253         self.assertRaises(InterpKernelException,d.findIdsNotEqual,5);
254         vals2=[-4,5,6]
255         vals3=vals2;
256         d.rearrange(1);
257         d3=d.findIdsNotEqualList(vals3);
258         self.assertEqual(5,d3.getNumberOfTuples());
259         self.assertEqual(1,d3.getNumberOfComponents());
260         expected2=[0,1,4,8,9]
261         for i in range(5):
262             self.assertEqual(expected2[i],d3.getIJ(0,i));
263             pass
264         pass
265
266     def testDAIComputeOffsets1(self):
267         d=DataArrayInt64.New();
268         vals1=[3,5,1,2,0,8]
269         expected1=[0,3,8,9,11,11]
270         d.setValues(vals1,6,1);
271         d.computeOffsets();
272         self.assertEqual(6,d.getNumberOfTuples());
273         self.assertEqual(1,d.getNumberOfComponents());
274         for i in range(6):
275             self.assertEqual(expected1[i],d.getIJ(0,i));
276             pass
277         pass
278
279     def testDAITransformWithIndArr1(self):
280         if not MEDCouplingUse64BitIDs():
281             return
282         tab1=[17,18,22,19]
283         tab2=[0,1,1,3,3,0,1,3,2,2,3,0]
284         expected=[17,18,18,19,19,17,18,19,22,22,19,17]
285         d=DataArrayInt64.New();
286         d.setValues(tab1,4,1);
287         d1=DataArrayInt64.New();
288         d1.setValues(tab2,12,1);
289         d2=d1[:]
290         #
291         d1.transformWithIndArr(d);
292         self.assertEqual(12,d1.getNumberOfTuples());
293         self.assertEqual(1,d1.getNumberOfComponents());
294         for i in range(12):
295             self.assertEqual(expected[i],d1.getIJ(i,0));
296             pass
297         #
298         d1=d2
299         d1.transformWithIndArr(tab1)
300         self.assertEqual(12,d1.getNumberOfTuples());
301         self.assertEqual(1,d1.getNumberOfComponents());
302         for i in range(12):
303             self.assertEqual(expected[i],d1.getIJ(i,0));
304             pass
305         pass
306
307     def testDAIBuildPermArrPerLevel1(self):
308         arr=[2,0,1,1,0,1,2,0,1,1,0,0]
309         expected1=[10,0,5,6,1,7,11,2,8,9,3,4]
310         da=DataArrayInt64.New();
311         da.setValues(arr,12,1);
312         da2=da.buildPermArrPerLevel();
313         self.assertEqual(12,da2.getNumberOfTuples());
314         self.assertEqual(1,da2.getNumberOfComponents());
315         for i in range(12):
316             self.assertEqual(expected1[i],da2.getIJ(i,0));
317             pass
318         pass
319
320     def testDAIOperations1(self):
321         arr1=[-1,-2,4,7,3,2,6,6,4,3,0,1]
322         da=DataArrayInt64.New();
323         da.setValues(arr1,4,3);
324         da1=DataArrayInt64.New();
325         da1.alloc(12,1);
326         da1.iota(2);
327         self.assertRaises(InterpKernelException,DataArrayInt64.Add,da,da1);#not same number of tuples/Components
328         da1.rearrange(3);
329         da2=DataArrayInt64.Add(da,da1);
330         self.assertEqual(4,da2.getNumberOfTuples());
331         self.assertEqual(3,da2.getNumberOfComponents());
332         expected1=[1,1,8,12,9,9,14,15,14,14,12,14]
333         for i in range(12):
334             self.assertEqual(expected1[i],da2.getIJ(0,i));
335             pass
336         da1.substractEqual(da);
337         expected2=[3,5,0,-2,3,5,2,3,6,8,12,12]
338         for i in range(12):
339             self.assertEqual(expected2[i],da1.getIJ(0,i));
340             pass
341         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
342         da1.addEqual(da);
343         for i in range(12):
344             self.assertEqual(expected1[i],da1.getIJ(0,i));
345             pass
346         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
347         da2=DataArrayInt64.Multiply(da,da1);
348         self.assertEqual(4,da2.getNumberOfTuples());
349         self.assertEqual(3,da2.getNumberOfComponents());
350         expected3=[-2,-6,16,35,18,14,48,54,40,33,0,13]
351         for i in range(12):
352             self.assertEqual(expected3[i],da2.getIJ(0,i));
353             pass
354         da.divideEqual(da1);
355         self.assertEqual(4,da.getNumberOfTuples());
356         self.assertEqual(3,da.getNumberOfComponents());
357         expected4=[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
358         for i in range(12):
359             self.assertEqual(expected4[i],da.getIJ(0,i));
360             pass
361         da.setValues(arr1,4,3);
362         da1.multiplyEqual(da);
363         self.assertEqual(4,da1.getNumberOfTuples());
364         self.assertEqual(3,da1.getNumberOfComponents());
365         for i in range(12):
366             self.assertEqual(expected3[i],da1.getIJ(0,i));
367             pass
368         da1.rearrange(1); da1.iota(2); da1.rearrange(3);
369         da2=DataArrayInt64.Divide(da,da1);
370         self.assertEqual(4,da2.getNumberOfTuples());
371         self.assertEqual(3,da2.getNumberOfComponents());
372         for i in range(12):
373             self.assertEqual(expected4[i],da2.getIJ(0,i));
374             pass
375         da1.applyInv(321);
376         self.assertEqual(4,da1.getNumberOfTuples());
377         self.assertEqual(3,da1.getNumberOfComponents());
378         expected5=[160,107,80,64,53,45,40,35,32,29,26,24]
379         for i in range(12):
380             self.assertEqual(expected5[i],da1.getIJ(0,i));
381             pass
382         da1.applyDivideBy(2);
383         self.assertEqual(4,da1.getNumberOfTuples());
384         self.assertEqual(3,da1.getNumberOfComponents());
385         expected6=[80,53,40,32,26,22,20,17,16,14,13,12]
386         for i in range(12):
387             self.assertEqual(expected6[i],da1.getIJ(0,i));
388             pass
389         expected7=[3,4,5,4,5,1,6,3,2,0,6,5]
390         da1.applyModulus(7);
391         for i in range(12):
392             self.assertEqual(expected7[i],da1.getIJ(0,i));
393             pass
394         da1.applyLin(1,1);
395         expected8=[3,3,3,3,3,1,3,3,0,0,3,3]
396         da1.applyRModulus(3);
397         for i in range(12):
398             self.assertEqual(expected8[i],da1.getIJ(0,i));
399             pass
400         pass
401
402     def testDAITransformWithIndArrR1(self):
403         tab1=[2,4,5,3,6,7]
404         tab2=[-1,-1,0,1,2,3,4,5,-1,-1,-1,-1]
405         expected=[0,3,1,2,4,5]
406         d=DataArrayInt64.New();
407         d.setValues(tab1,6,1);
408         d1=DataArrayInt64.New();
409         d1.setValues(tab2,12,1);
410         d2=d1[:]
411         #
412         d3=d.transformWithIndArrR(d1);
413         self.assertEqual(6,d3.getNumberOfTuples());
414         self.assertEqual(1,d3.getNumberOfComponents());
415         for i in range(6):
416             self.assertEqual(expected[i],d3.getIJ(i,0));
417             pass
418         #
419         d1=d2
420         d3=d.transformWithIndArrR(tab2)
421         self.assertEqual(6,d3.getNumberOfTuples());
422         self.assertEqual(1,d3.getNumberOfComponents());
423         for i in range(6):
424             self.assertEqual(expected[i],d3.getIJ(i,0));
425             pass
426         pass
427
428     def testDAISplitByValueRange1(self):
429         val1=[6,5,0,3,2,7,8,1,4]
430         val2=[0,4,9]
431         d=DataArrayInt64.New();
432         d.setValues(val1,9,1);
433         e,f,g=d.splitByValueRange(val2);
434         self.assertEqual(9,e.getNumberOfTuples());
435         self.assertEqual(1,e.getNumberOfComponents());
436         self.assertEqual(9,f.getNumberOfTuples());
437         self.assertEqual(1,f.getNumberOfComponents());
438         self.assertEqual(2,g.getNumberOfTuples());
439         self.assertEqual(1,g.getNumberOfComponents());
440         #
441         expected1=[1,1,0,0,0,1,1,0,1]
442         expected2=[2,1,0,3,2,3,4,1,0]
443         for i in range(9):
444             self.assertEqual(expected1[i],e.getIJ(i,0));
445             self.assertEqual(expected2[i],f.getIJ(i,0));
446             pass
447         self.assertEqual(0,g.getIJ(0,0));
448         self.assertEqual(1,g.getIJ(1,0));
449         #
450         d.setIJ(6,0,9);
451         self.assertRaises(InterpKernelException,d.splitByValueRange,val2);
452         # non regression test in python wrapping
453         rg=DataArrayInt64([0,10,29,56,75,102,121,148,167,194,213,240,259,286,305,332,351,378,397,424,443,470,489,516])
454         a,b,c=DataArrayInt64([75]).splitByValueRange(rg)
455         assert(a.isEqual(DataArrayInt64([4])))
456         assert(b.isEqual(DataArrayInt64([0])))
457         assert(c.isEqual(DataArrayInt64([4])))
458         pass
459
460     def testDAIBuildExplicitArrByRanges1(self):
461         d=DataArrayInt64.New();
462         vals1=[0,2,3]
463         d.setValues(vals1,3,1);
464         e=DataArrayInt64.New();
465         vals2=[0,3,6,10,14,20]
466         e.setValues(vals2,6,1);
467         #
468         f=d.buildExplicitArrByRanges(e);
469         self.assertEqual(11,f.getNumberOfTuples());
470         self.assertEqual(1,f.getNumberOfComponents());
471         expected1=[0,1,2,6,7,8,9,10,11,12,13]
472         for i in range(11):
473             self.assertEqual(expected1[i],f.getIJ(i,0));
474             pass
475         pass
476
477     def testDAIComputeOffsets2(self):
478         d=DataArrayInt64.New();
479         vals1=[3,5,1,2,0,8]
480         expected1=[0,3,8,9,11,11,19]
481         d.setValues(vals1,6,1);
482         d.computeOffsetsFull();
483         self.assertEqual(7,d.getNumberOfTuples());
484         self.assertEqual(1,d.getNumberOfComponents());
485         for i in range(7):
486             self.assertEqual(expected1[i],d.getIJ(0,i));
487             pass
488         pass
489
490     def testDAIBuildOld2NewArrayFromSurjectiveFormat2(self):
491         arr=[0,3, 5,7,9]
492         arrI=[0,2,5]
493         a=DataArrayInt.New();
494         a.setValues(arr,5,1);
495         b=DataArrayInt.New();
496         b.setValues(arrI,3,1);
497         ret,newNbTuple=DataArrayInt64.ConvertIndexArrayToO2N(10,a,b);
498         expected=[0,1,2,0,3,4,5,4,6,4]
499         self.assertEqual(10,ret.getNbOfElems());
500         self.assertEqual(7,newNbTuple);
501         self.assertEqual(1,ret.getNumberOfComponents());
502         self.assertEqual(expected,ret.getValues());
503         self.assertRaises(InterpKernelException,DataArrayInt64.ConvertIndexArrayToO2N,9,a,b);
504         pass
505
506     def testDAIBuildUnique1(self):
507         d=DataArrayInt64([1,2,2,3,3,3,3,4,5,5,7,7,7,19])
508         e=d.buildUnique()
509         self.assertTrue(e.isEqual(DataArrayInt64([1,2,3,4,5,7,19])))
510         pass
511
512     def testDAIPartitionByDifferentValues1(self):
513         d=DataArrayInt64([1,0,1,2,0,2,2,-3,2])
514         expected=[[-3,[7]],[0,[1,4]],[1,[0,2]],[2,[3,5,6,8]]]
515         for i,elt in enumerate(zip(*d.partitionByDifferentValues())):
516             self.assertEqual(expected[i][0],elt[1])
517             self.assertEqual(expected[i][1],elt[0].getValues())
518             pass
519         pass
520
521     def testDAICheckMonotonic1(self):
522         data1=[-1,0,2,2,4,5]
523         data2=[6,2,0,-8,-9,-56]
524         data3=[-1,0,3,2,4,6]
525         data4=[7,5,2,3,0,-6]
526         d=DataArrayInt64.New(data1);
527         self.assertTrue(d.isMonotonic(True));
528         self.assertTrue(not d.isMonotonic(False));
529         d.checkMonotonic(True);
530         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
531         d=DataArrayInt64.New(data2);
532         self.assertTrue(d.isMonotonic(False));
533         self.assertTrue(not d.isMonotonic(True));
534         d.checkMonotonic(False);
535         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
536         d=DataArrayInt64.New(data3);
537         self.assertTrue(not d.isMonotonic(False));
538         self.assertTrue(not d.isMonotonic(True));
539         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
540         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
541         d=DataArrayInt64.New(data4);
542         self.assertTrue(not d.isMonotonic(False));
543         self.assertTrue(not d.isMonotonic(True));
544         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
545         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
546         d=DataArrayInt64.New(0,1)
547         self.assertTrue(d.isMonotonic(True));
548         self.assertTrue(d.isMonotonic(False));
549         d.checkMonotonic(True);
550         d.checkMonotonic(False);
551         d=DataArrayInt64.New(data4,3,2);#throw because nbComp!=1
552         self.assertRaises(InterpKernelException,d.isMonotonic,True)
553         self.assertRaises(InterpKernelException,d.isMonotonic,False)
554         self.assertRaises(InterpKernelException,d.checkMonotonic,True)
555         self.assertRaises(InterpKernelException,d.checkMonotonic,False)
556         pass
557
558     def testDAIBuildSubstractionOptimized1(self):
559         da1=DataArrayInt64.New([1,3,5,6,7,9,13])
560         da2=DataArrayInt64.New([3,5,9])
561         da3=DataArrayInt64.New([1,3,5])
562         da4=DataArrayInt64.New([1,3,5,6,7,9,13])
563         #
564         a=da1.buildSubstractionOptimized(da2);
565         self.assertTrue(a.isEqual(DataArrayInt64([1,6,7,13])));
566         #
567         a=da1.buildSubstractionOptimized(da3);
568         self.assertTrue(a.isEqual(DataArrayInt64([6,7,9,13])));
569         #
570         a=da1.buildSubstractionOptimized(da4);
571         self.assertTrue(a.isEqual(DataArrayInt64([])));
572         pass
573
574     def testDAIIsStrictlyMonotonic1(self):
575         da1=DataArrayInt64.New([1,3,5,6,7,9,13])
576         self.assertTrue(da1.isStrictlyMonotonic(True));
577         da1.checkStrictlyMonotonic(True);
578         self.assertTrue(da1.isMonotonic(True));
579         da1.checkMonotonic(True);
580         self.assertTrue(not da1.isStrictlyMonotonic(False));
581         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
582         self.assertTrue(not da1.isMonotonic(False));
583         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
584         #
585         da1=DataArrayInt64.New([1,3,5,6,6,9,13])
586         self.assertTrue(not da1.isStrictlyMonotonic(True));
587         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
588         self.assertTrue(da1.isMonotonic(True));
589         da1.checkMonotonic(True);
590         self.assertTrue(not da1.isStrictlyMonotonic(False));
591         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
592         self.assertTrue(not da1.isMonotonic(False));
593         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
594         #
595         da1=DataArrayInt64.New([1,3,5,6,5,9,13])
596         self.assertTrue(not da1.isStrictlyMonotonic(True));
597         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
598         self.assertTrue(not da1.isMonotonic(True));
599         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
600         self.assertTrue(not da1.isStrictlyMonotonic(False));
601         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
602         self.assertTrue(not da1.isMonotonic(False));
603         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
604         #
605         da1=DataArrayInt64.New([13,9,7,6,5,3,1])
606         self.assertTrue(not da1.isStrictlyMonotonic(True));
607         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
608         self.assertTrue(not da1.isMonotonic(True));
609         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
610         self.assertTrue(da1.isStrictlyMonotonic(False));
611         da1.checkStrictlyMonotonic(False);
612         self.assertTrue(da1.isMonotonic(False));
613         da1.checkMonotonic(False);
614         #
615         da1=DataArrayInt64.New([13,9,6,6,5,3,1])
616         self.assertTrue(not da1.isStrictlyMonotonic(True));
617         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
618         self.assertTrue(not da1.isMonotonic(True));
619         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
620         self.assertTrue(not da1.isStrictlyMonotonic(False));
621         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
622         self.assertTrue(da1.isMonotonic(False));
623         da1.checkMonotonic(False);
624         #
625         da1=DataArrayInt64.New([13,9,5,6,5,3,1])
626         self.assertTrue(not da1.isStrictlyMonotonic(True));
627         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,True)
628         self.assertTrue(not da1.isMonotonic(True));
629         self.assertRaises(InterpKernelException,da1.checkMonotonic,True)
630         self.assertTrue(not da1.isStrictlyMonotonic(False));
631         self.assertRaises(InterpKernelException,da1.checkStrictlyMonotonic,False)
632         self.assertTrue(not da1.isMonotonic(False));
633         self.assertRaises(InterpKernelException,da1.checkMonotonic,False)
634         #
635         da1=DataArrayInt64.New([])
636         self.assertTrue(da1.isStrictlyMonotonic(True));
637         da1.checkStrictlyMonotonic(True);
638         self.assertTrue(da1.isMonotonic(True));
639         da1.checkMonotonic(True);
640         self.assertTrue(da1.isStrictlyMonotonic(False));
641         da1.checkStrictlyMonotonic(False);
642         self.assertTrue(da1.isMonotonic(False));
643         da1.checkMonotonic(False);
644         #
645         da1=DataArrayInt64.New([13])
646         self.assertTrue(da1.isStrictlyMonotonic(True));
647         da1.checkStrictlyMonotonic(True);
648         self.assertTrue(da1.isMonotonic(True));
649         da1.checkMonotonic(True);
650         self.assertTrue(da1.isStrictlyMonotonic(False));
651         da1.checkStrictlyMonotonic(False);
652         self.assertTrue(da1.isMonotonic(False));
653         da1.checkMonotonic(False);
654         pass
655
656     def testDAIIndicesOfSubPart(self):
657         a=DataArrayInt64([9,10,0,6,4,11,3,8])
658         b=DataArrayInt64([6,0,11,8])
659         c=a.indicesOfSubPart(b)
660         self.assertTrue(c.isEqual(DataArrayInt([3,2,5,7])))
661         #
662         d=DataArrayInt64([9,10,0,6,4,11,0,8])
663         self.assertRaises(InterpKernelException,d.indicesOfSubPart,b) # 0 appears twice in the d array
664         f=DataArrayInt64([6,0,11,8,12])
665         self.assertRaises(InterpKernelException,a.indicesOfSubPart,f) # 12 in f does not exist in a
666         pass
667
668     def testDAIFromLinkedListOfPairToList1(self):
669         d=DataArrayInt64([(5,7),(7,3),(3,12),(12,17)])
670         zeRes=DataArrayInt64([5,7,3,12,17])
671         self.assertTrue(d.fromLinkedListOfPairToList().isEqual(zeRes))
672         d.rearrange(1)
673         self.assertRaises(InterpKernelException,d.fromLinkedListOfPairToList)
674         d.rearrange(2)
675         self.assertTrue(d.fromLinkedListOfPairToList().isEqual(zeRes))
676         d2=DataArrayInt64([(5,7)])
677         self.assertTrue(d2.fromLinkedListOfPairToList().isEqual(DataArrayInt64([5,7])))
678         d3=DataArrayInt64([(5,7),(7,3),(4,12),(12,17)])
679         self.assertRaises(InterpKernelException,d3.fromLinkedListOfPairToList) # not a linked list of pair
680         d4=DataArrayInt64([(5,7),(7,3),(12,3),(12,17)])
681         self.assertRaises(InterpKernelException,d4.fromLinkedListOfPairToList) # not a linked list of pair, but can be repaired !
682         d4.sortEachPairToMakeALinkedList()
683         self.assertTrue(d4.fromLinkedListOfPairToList().isEqual(zeRes))
684         pass
685
686     def testDAIfindIdsExt1(self):
687         d=DataArrayInt64([4,6,-2,3,7,0,10])
688         self.assertTrue(d.findIdsGreaterOrEqualTo(3).isEqual(DataArrayInt([0,1,3,4,6])))
689         self.assertTrue(d.findIdsGreaterThan(3).isEqual(DataArrayInt([0,1,4,6])))
690         self.assertTrue(d.findIdsLowerThan(3).isEqual(DataArrayInt([2,5])))
691         self.assertTrue(d.findIdsLowerOrEqualTo(3).isEqual(DataArrayInt([2,3,5])))
692         pass
693
694     def testDAICheckUniformAndGuess1(self):
695         d=DataArrayInt64([3,3],1,2)
696         self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non single compo
697         d=DataArrayInt64([])
698         self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# empty
699         d=DataArrayInt64()
700         self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non allocated
701         d=DataArrayInt64([3,3,3])
702         self.assertEqual(3,d.checkUniformAndGuess())
703         d=DataArrayInt64([7])
704         self.assertEqual(7,d.checkUniformAndGuess())
705         d=DataArrayInt64([3,4,3])
706         self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non uniform
707         pass
708
709     def testDAIFindIdForEach1(self):
710         a1=DataArrayInt64([17,27,2,10,-4,3,12,27,16])
711         b1=DataArrayInt64([3,16,-4,27,17])
712         ret=a1.findIdForEach(b1)
713         self.assertTrue(ret.isEqual(DataArrayInt([5,8,4,7,0])))
714         self.assertTrue(a1[ret].isEqual(b1))
715         b2=DataArrayInt64([3,16,22,27,17])
716         self.assertRaises(InterpKernelException,a1.findIdForEach,b2) # 22 not in a1 !
717         a1.rearrange(3)
718         self.assertRaises(InterpKernelException,a1.findIdForEach,b1) # a1 is not single component
719         pass
720
721     def testGlobalHelpers(self):
722         arr0 = vtk2med_cell_types()
723         self.assertEqual(len(arr0),43)
724         arr1 = med2vtk_cell_types()
725         self.assertEqual(len(arr1),34)
726         arr2 = AllGeometricTypes()
727         self.assertEqual(len(arr2),25)
728         for elt in arr2:
729             MEDCouplingUMesh.GetReprOfGeometricType(elt)
730             self.assertNotEqual(MEDCouplingUMesh.GetDimensionOfGeometricType(elt),-1)
731         pass
732
733     def testVoronoi2D_3(self):
734         """
735         Non regression test for EDF20418 : After 8.5.0 MEDCouplingUMesh.Interset2DMeshes method (called by voronoize) is sensible to cell orientation of 2 input meshes. This test check correct behavior in
736         case of non standard orientation input cell.
737         """
738         coo = DataArrayDouble([0.018036113896685007,0.030867224641316506,0.019000000000000003,0.030833333333333407,0.018518056948342503,0.030850278987324904,0.018773068345659904,0.031180320157635305,0.018546136691319805,0.031527306981937307,0.018291125294002404,0.031197265811626906],6,2)
739         m = MEDCouplingUMesh("mesh",2)
740         m.setCoords(coo)
741         m.allocateCells()
742         m.insertNextCell(NORM_TRI3,[0,1,4])
743         f=MEDCouplingFieldDouble(ON_GAUSS_PT)
744         f.setMesh(m)
745         f.setArray(DataArrayDouble([12613576.708019681, 18945164.734307285, 22385248.637775388, 17074219.938821714, 19361929.467164982, 19258841.562907547]))
746         f.setGaussLocalizationOnType(NORM_TRI3,[0, 0, 1, 0, 0, 1],[0.0915762, 0.0915762, 0.816848, 0.0915762, 0.0915762, 0.816848, 0.445948, 0.108103, 0.445948, 0.445948, 0.108103, 0.445948],[0.0549759, 0.0549759, 0.0549759, 0.111691, 0.111691, 0.111691])
747         f.setName("field")
748         f_voro = f.voronoize(1e-13)
749         ref_area = DataArrayDouble([4.6679303278867127, 4.2514546761810138, 4.2514546761809337, 6.6206415950989804, 6.2643538685231039, 6.6206415950989884])
750         area = f_voro.buildMeasureField(True).getArray()*1e8
751         self.assertTrue(ref_area.isEqual(area,1e-6))
752         ref_bary = DataArrayDouble([(0.018231625096313969, 0.030950287685553721), (0.018826045778781105, 0.030916927013719033), (0.018533397739746087, 0.031364396601025746), (0.018541498169815956, 0.030944333493252929), (0.018660195622447071, 0.031132366117047686), (0.018400646702087166, 0.031159700554391174)])
753         bary = f_voro.getMesh().computeCellCenterOfMass()
754         self.assertTrue(ref_bary.isEqual(bary,1e-8))
755         self.assertTrue(f_voro.getArray().isEqual(f.getArray(),1e-8))
756         pass
757
758     def testDAIOccurenceRankInThis(self):
759         arr=DataArrayInt([5,3,2,1,4,5,2,1,0,11,5,4])
760         self.assertTrue(arr.occurenceRankInThis().isEqual(DataArrayInt([0,0,0,0,0,1,1,1,0,0,2,1])))
761
762     def testDAIFindPermutationFromFirstToSecondDuplicate(self):
763         arr0 = DataArrayInt([5,3,2,1,4,5,2,1,0,11,5,4])
764         arr1 = DataArrayInt([0,1,1,2,2,3,4,4,5,5,5,11])
765         self.assertTrue(DataArrayInt.FindPermutationFromFirstToSecondDuplicate(arr0,arr1).isEqual(DataArrayInt([8,5,3,1,6,9,4,2,0,11,10,7])))
766         self.assertTrue(DataArrayInt.FindPermutationFromFirstToSecondDuplicate(arr1,arr0).isEqual(DataArrayInt([8,3,7,2,6,1,4,11,0,5,10,9])))
767         
768     def testDAIIndexOfSameConsecutiveValueGroups(self):
769         arr = DataArrayInt([0,1,1,2,2,3,4,4,5,5,5,11])
770         self.assertTrue(arr.indexOfSameConsecutiveValueGroups().isEqual(DataArrayInt([0,1,3,5,6,8,11,12])))
771
772     def testSkyLineGroupPacks(self):
773         arr = DataArrayInt([1,4,5,0,2,4,5,6,1,3,5,6,7,2,6,7,0,1,5,8,9,0,1,2,4,6,8,9,10,1,2,3,5,7,9,10,11,2,3,6,10,11,4,5,9,12,13,4,5,6,8,10,12,13,14,5,6,7,9,11,13,14,15,6,7,10,14,15,8,9,13,8,9,10,12,14,9,10,11,13,15,10,11,14])
774         arrI = DataArrayInt([0,3,8,13,16,21,29,37,42,47,55,63,68,71,76,81,84])
775         sk = MEDCouplingSkyLineArray(arrI,arr)
776         part = DataArrayInt([0,3,4,7,16])
777         sk2 = sk.groupPacks(part)
778         self.assertTrue(sk2.getValuesArray().isEqual(arr))
779         self.assertTrue(sk2.getIndexArray().isEqual(DataArrayInt([0,13,16,37,84])))
780
781     def testSkyLineUniqueNotSortedByPack(self):    
782         arrI = DataArrayInt([0,3,9,15,18,24,36,48,54])
783         arr = DataArrayInt([1,4,5,0,4,5,2,5,6,3,6,7,1,5,6,2,6,7,0,1,5,5,8,9,0,1,4,6,9,10,1,2,4,6,8,9,2,3,5,7,9,10,1,2,5,7,10,11,2,3,6,6,10,11])
784         sk = MEDCouplingSkyLineArray(arrI,arr)
785         sk2 = sk.uniqueNotSortedByPack()
786         self.assertTrue(sk2.getIndexArray().isEqual(DataArrayInt([0,3,8,13,16,21,29,37,42])))
787         self.assertTrue(sk2.getValuesArray().isEqual(DataArrayInt([1,4,5,0,2,4,5,6,1,3,5,6,7,2,6,7,0,1,5,8,9,0,1,2,4,6,8,9,10,1,2,3,5,7,9,10,11,2,3,6,10,11])))
788     
789     def testSkyLineAggregatePacks1(self):
790         arr = DataArrayDouble(3) ; arr.iota()
791         m = MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m = m.buildUnstructured()
792         a,b = m.computeEnlargedNeighborsOfNodes()
793         sk = MEDCouplingSkyLineArray(b,a)
794         sk1 = sk.deepCopy()
795         sk1.getValuesArray()[:] *= 2
796         sk2 = sk.deepCopy()
797         sk2.getValuesArray()[:] *= 3
798         skOut = MEDCouplingSkyLineArray.AggregatePacks([sk,sk1,sk2])
799         self.assertTrue(skOut.getIndexArray().isEqual(DataArrayInt([0,9,24,33,48,72,87,96,111,120])))
800         self.assertTrue(skOut.getValuesArray().isEqual(DataArrayInt([1,3,4,2,6,8,3,9,12,0,2,3,4,5,0,4,6,8,10,0,6,9,12,15,1,4,5,2,8,10,3,12,15,0,1,4,6,7,0,2,8,12,14,0,3,12,18,21,0,1,2,3,5,6,7,8,0,2,4,6,10,12,14,16,0,3,6,9,15,18,21,24,1,2,4,7,8,2,4,8,14,16,3,6,12,21,24,3,4,7,6,8,14,9,12,21,3,4,5,6,8,6,8,10,12,16,9,12,15,18,24,4,5,7,8,10,14,12,15,21])))
801
802     def testDACopySorted1(self):
803         d = DataArrayInt32([5,1,100,20])
804         self.assertTrue(d.copySorted().isEqual(DataArrayInt32([1,5,20,100])))
805         d = DataArrayInt64([5,1,100,20])
806         self.assertTrue(d.copySorted().isEqual(DataArrayInt64([1,5,20,100])))
807         d = DataArrayInt([5,1,100,20])
808         self.assertTrue(d.copySorted().isEqual(DataArrayInt([1,5,20,100])))
809         d = DataArrayDouble([5,1,100,20])
810         self.assertTrue(d.copySorted().isEqual(DataArrayDouble([1,5,20,100]),1e-10))
811
812     def testFieldAreStrictlyCompatible(self):
813         arr=DataArrayDouble(10) ; arr.iota()
814         m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
815         f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m)
816         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(m)
817         self.assertTrue(f.areStrictlyCompatible(f2))
818         self.assertTrue(f.areStrictlyCompatibleForMulDiv(f2))
819         f2.setMesh(f2.getMesh().deepCopy())
820         self.assertTrue(not f.areStrictlyCompatible(f2))
821         self.assertTrue(not f.areStrictlyCompatibleForMulDiv(f2))
822         f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setMesh(m)
823         self.assertTrue(not f.areStrictlyCompatible(f3))
824         self.assertTrue(not f.areStrictlyCompatibleForMulDiv(f3))
825
826     def testBugZipConnectivityTraducer(self):
827         """
828         Non regression test : here cell #1 and cell #2 are nearly the same but not the same. zipConnectivityTraducer called by areCellsIncludedIn
829         failed to capture that.
830         """
831         coo = DataArrayDouble([0,1,2,3],4,1)
832         m = MEDCouplingUMesh("",1)
833         m.setCoords(coo)
834         m.allocateCells()
835         m.insertNextCell(NORM_SEG2,[0,1])
836         m.insertNextCell(NORM_SEG2,[1,2])
837         m.insertNextCell(NORM_SEG2,[2,1])
838         #
839         a,b = m.areCellsIncludedIn(m,0)
840         self.assertTrue(a)
841         self.assertTrue(b.isIota(3))
842         #
843         self.assertTrue(m.deepCopy().zipConnectivityTraducer(0).isIota(3))
844         self.assertTrue(m.deepCopy().zipConnectivityTraducer(1).isIota(3))
845         self.assertTrue(m.deepCopy().zipConnectivityTraducer(2).isEqual(DataArrayInt([0,1,1])))
846
847     def testBugAreCellsIncludedIn1(self):
848         """
849         Non regression test: a.areCellsIncludedIn(b) was buggy when some cells in b were duplicated into a following specified policy.
850         """
851         coo = DataArrayDouble([0,1,2,3,4],5,1)
852         m = MEDCouplingUMesh("",1)
853         m.setCoords(coo)
854         m.allocateCells()
855         # m contains several duplicated cells - some of those duplicated cells will be in m1
856         for i in range(3):
857             m.insertNextCell(NORM_SEG2,[0,1])
858         for i in range(4):
859             m.insertNextCell(NORM_SEG2,[1,2])
860         for i in range(2):
861             m.insertNextCell(NORM_SEG2,[2,3])
862         for i in range(2):
863             m.insertNextCell(NORM_SEG2,[3,4])
864         #
865         bexp = DataArrayInt([0,1,2, 3,4,5,6, 9,10])
866         m1 = m[bexp]
867         #
868         a,b = m.areCellsIncludedIn(m1,0)
869         self.assertTrue(a)
870         self.assertTrue(b.isEqual(DataArrayInt([2,2,2, 6,6,6,6, 10,10])))
871         #
872         bexp2 = DataArrayInt([0,1,2, 3,4,0, 6, 9,10])
873         m2 = m[bexp2]
874         a,b = m.areCellsIncludedIn(m2,0)
875         self.assertTrue(a)
876         self.assertTrue(b.isEqual(DataArrayInt([2,2,2,6,6,2,6,10,10])))
877
878     def testSkyLineArrayThreshold(self):
879         x = DataArrayInt([0, 1, 2, 11, 12, 13, 3, 4, 5, 6, 14, 15, 16, 17, 9, 10, 18, 19])
880         xi = DataArrayInt([0, 6, 14, 18])
881         sk = MEDCouplingSkyLineArray(xi,x)
882         lsk,rsk = sk.thresholdPerPack(11)
883         self.assertTrue(lsk.getValuesArray().isEqual(DataArrayInt([0, 1, 2, 3, 4, 5, 6, 9, 10])))
884         self.assertTrue(lsk.getIndexArray().isEqual(DataArrayInt([0, 3, 7, 9])))
885         self.assertTrue(rsk.getValuesArray().isEqual(DataArrayInt([11, 12, 13, 14, 15, 16, 17, 18, 19])))
886         self.assertTrue(rsk.getIndexArray().isEqual(DataArrayInt([0, 3, 7, 9])))
887     
888     def testPenta18GaussNE(self):
889         conn = [1,0,2,4,3,5,6,7,8,9,13,14,11,10,15,12,17,16]
890         coo = DataArrayDouble([(27.237499999999997, 9.8, 0.0), (26.974999999999994, 9.8, 0.0), (27.111517409545634, 9.532083869948877, 0.0), (27.237499999999997, 9.8, 0.5000000000000001), (26.974999999999994, 9.8, 0.5000000000000002), (27.111517409545634, 9.532083869948877, 0.5), (27.106249999999996, 9.8, 0.0), (27.17450870477282, 9.666041934974439, 0.0), (27.04325870477281, 9.666041934974439, 0.0), (27.106249999999996, 9.8, 0.5000000000000001), (27.237499999999997, 9.8, 0.25), (26.974999999999994, 9.8, 0.2500000000000001), (27.106249999999996, 9.8, 0.2500000000000001), (27.174508704772816, 9.666041934974439, 0.5), (27.043258704772814, 9.666041934974439, 0.5000000000000001), (27.111517409545634, 9.532083869948877, 0.25), (27.043258704772818, 9.666041934974436, 0.25000000000000006), (27.174508704772816, 9.666041934974436, 0.25)])
891         m = MEDCouplingUMesh("mesh",3)
892         m.setCoords(coo)
893         m.allocateCells()
894         m.insertNextCell(NORM_PENTA18,conn)
895         f = MEDCouplingFieldDouble(ON_GAUSS_NE)
896         f.setMesh(m)
897         f.setArray(DataArrayDouble(18*[0.]))
898         self.assertTrue(f.getLocalizationOfDiscr().isEqual(coo[conn],1e-10))
899
900     def testDADEigenValuesPb(self):
901         """EDF22126 : eigen values with Identity matrix returned nan. Now it returns correct eigen values 1.0 """
902         valuesExp = DataArrayDouble([(1.,1.,1.),(2.,-1.,0.),(2.,0.,1.),(3.,0.,0.)])
903         d = DataArrayDouble(4, 6)
904         for i,(v0, v1, v2, v3, v4, v5,) in enumerate([
905                 (1, 1, 1, 0, 0, 0),
906                 (1, 0, 0, 1, 0, 1),
907                 (1, 1, 1, 0, 1, 0),
908                 (1, 1, 1, 1, 1, 1)]):
909             d[i] = [v0, v1, v2, v3, v4, v5]
910         self.assertTrue(d.eigenValues().isEqual(valuesExp,1e-12))
911         pass
912
913     def testBugOnReprOf1SGTUMesh(self):
914         """ Non reg bug on repr of empty MEDCoupling1SGTUMesh instance """
915         m = MEDCoupling1SGTUMesh()
916         m.simpleRepr()
917         str(m)
918         m.advancedRepr()
919         repr(m)
920         m = MEDCoupling1DGTUMesh()
921         m.simpleRepr()
922         str(m)
923         m.advancedRepr()
924         repr(m)
925
926     def testCheckGeomConsistency0(self):
927         """Test of MEDCouplingUMesh.checkGeomConsistency"""
928         m = MEDCouplingUMesh("",2)
929         m.setCoords(DataArrayDouble([(0,0),(1,0),(2,0),(0,1),(1,1),(2,1)]))
930         m.allocateCells()
931         m.insertNextCell(NORM_TRI6,[0,1,2,3,4,5])
932         m.insertNextCell(NORM_TRI6,[0,1,3,3,4,5])
933         m.checkConsistency()
934         self.assertRaises(InterpKernelException,m.checkGeomConsistency) # cell1 is incorrect because node 3 is repeated twice
935         m.getNodalConnectivity()[10]=2 # replace 3 by 2 for cell#1 to fix the problem
936         m.checkConsistency()
937         m.checkGeomConsistency() # now m is OK
938
939     def testInt32Int64Arr0(self):
940         n = 30
941         arr = DataArrayInt32(n)
942         arr.iota() ; arr.rearrange(3)
943         comps = ["a","bb","ccc"]
944         name = "aaa"
945         arr.setName(name) ; arr.setInfoOnComponents(comps)
946         self.assertEqual(arr.accumulate(),[135, 145, 155])
947         arr2 = arr.convertToInt64Arr() # test is here
948         self.assertEqual(arr2.accumulate(),[135, 145, 155])
949         self.assertTrue(isinstance(arr2,DataArrayInt64))
950         self.assertEqual(arr2.getName(),name)
951         self.assertEqual(arr2.getInfoOnComponents(),comps)
952         arr3 = arr2.convertToInt32Arr() # test is here
953         self.assertEqual(arr3.accumulate(),[135, 145, 155])
954         self.assertTrue(isinstance(arr3,DataArrayInt32))
955         self.assertEqual(arr3.getName(),name)
956         self.assertEqual(arr3.getInfoOnComponents(),comps)
957         self.assertTrue(arr3.isEqual(arr))
958
959     pass
960
961 if __name__ == '__main__':
962     unittest.main()