1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2019 CEA/DEN, EDF R&D
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 if sys.platform == "win32":
24 from MEDCouplingCompat import *
26 from medcoupling import *
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
33 class MEDCouplingBasicsTest7(unittest.TestCase):
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());
43 self.assertEqual(expected1,da2.getValues());
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());
54 self.assertEqual(expected1,da2.getValues());
57 def testDAIsUniform1(self):
59 da=DataArrayInt64.New();
60 da.setValues(tab1,5,1);
61 self.assertTrue(da.isUniform(1));
63 self.assertTrue(not da.isUniform(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));
74 def testDAIBuildComplement1(self):
75 a=DataArrayInt64.New();
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]
83 self.assertEqual(expected1[i],b.getIJ(0,i));
87 def testDAIBuildUnion1(self):
88 a=DataArrayInt64.New();
90 a.setValues(tab1,4,1);
91 c=DataArrayInt64.New();
93 c.setValues(tab2,5,1);
95 self.assertEqual(7,b.getNumberOfTuples());
96 self.assertEqual(1,b.getNumberOfComponents());
97 expected1=[0,1,3,5,7,8,18]
99 self.assertEqual(expected1[i],b.getIJ(0,i));
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]
106 self.assertEqual(expected1[i],b.getIJ(0,i));
110 def testDAIBuildIntersection1(self):
111 a=DataArrayInt64.New();
113 a.setValues(tab1,4,1);
114 c=DataArrayInt64.New();
116 c.setValues(tab2,5,1);
117 b=a.buildIntersection(c);
118 self.assertEqual(2,b.getNumberOfTuples());
119 self.assertEqual(1,b.getNumberOfComponents());
122 self.assertEqual(expected1[i],b.getIJ(0,i));
124 b=DataArrayInt64.BuildIntersection([a,c]);
125 self.assertEqual(2,b.getNumberOfTuples());
126 self.assertEqual(1,b.getNumberOfComponents());
129 self.assertEqual(expected1[i],b.getIJ(0,i));
133 def testDAIDeltaShiftIndex1(self):
134 a=DataArrayInt64.New();
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]
142 self.assertEqual(expected1[i],b.getIJ(0,i));
146 def testDAIBuildSubstraction1(self):
147 a=DataArrayInt64.New()
150 b=DataArrayInt64.New()
153 self.assertEqual([2,6,8],a.buildSubstraction(b).getValues())
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))
165 self.assertTrue(not a.isEqualWithoutConsideringStrAndOrder(b))
166 self.assertRaises(InterpKernelException,a.buildPermutationArr,b)
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()
176 self.assertEqual(expect3,b.getValues())
178 self.assertEqual(5,d.getNumberOfTuples());
179 self.assertEqual(1,d.getNumberOfComponents());
181 self.assertAlmostEqual(float(expect3[i]),d.getIJ(i,0),14);
185 def testDAIAggregateMulti1(self):
186 a=DataArrayInt64.New()
187 a.setValues(list(range(4)), 2, 2)
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())
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());
208 self.assertEqual(expect1[i],da2.getIJ(i,0));
211 da=DataArrayInt64.New();
214 da2=da.checkAndPreparePermutation();
215 self.assertEqual(1,da2.getNumberOfComponents());
216 self.assertTrue(da2.isIota(8));
218 da=DataArrayInt64.New();
220 da.setValues(vals2,8,1);
221 self.assertRaises(InterpKernelException,da.checkAndPreparePermutation);
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);
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());
237 self.assertRaises(InterpKernelException,da.changeSurjectiveFormat,3);
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]
250 self.assertEqual(expected1[i],d2.getIJ(0,i));
253 self.assertRaises(InterpKernelException,d.findIdsNotEqual,5);
257 d3=d.findIdsNotEqualList(vals3);
258 self.assertEqual(5,d3.getNumberOfTuples());
259 self.assertEqual(1,d3.getNumberOfComponents());
260 expected2=[0,1,4,8,9]
262 self.assertEqual(expected2[i],d3.getIJ(0,i));
266 def testDAIComputeOffsets1(self):
267 d=DataArrayInt64.New();
269 expected1=[0,3,8,9,11,11]
270 d.setValues(vals1,6,1);
272 self.assertEqual(6,d.getNumberOfTuples());
273 self.assertEqual(1,d.getNumberOfComponents());
275 self.assertEqual(expected1[i],d.getIJ(0,i));
279 def testDAITransformWithIndArr1(self):
280 if not MEDCouplingUse64BitIDs():
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);
291 d1.transformWithIndArr(d);
292 self.assertEqual(12,d1.getNumberOfTuples());
293 self.assertEqual(1,d1.getNumberOfComponents());
295 self.assertEqual(expected[i],d1.getIJ(i,0));
299 d1.transformWithIndArr(tab1)
300 self.assertEqual(12,d1.getNumberOfTuples());
301 self.assertEqual(1,d1.getNumberOfComponents());
303 self.assertEqual(expected[i],d1.getIJ(i,0));
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());
316 self.assertEqual(expected1[i],da2.getIJ(i,0));
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();
327 self.assertRaises(InterpKernelException,DataArrayInt64.Add,da,da1);#not same number of tuples/Components
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]
334 self.assertEqual(expected1[i],da2.getIJ(0,i));
336 da1.substractEqual(da);
337 expected2=[3,5,0,-2,3,5,2,3,6,8,12,12]
339 self.assertEqual(expected2[i],da1.getIJ(0,i));
341 da1.rearrange(1); da1.iota(2); da1.rearrange(3);
344 self.assertEqual(expected1[i],da1.getIJ(0,i));
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]
352 self.assertEqual(expected3[i],da2.getIJ(0,i));
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]
359 self.assertEqual(expected4[i],da.getIJ(0,i));
361 da.setValues(arr1,4,3);
362 da1.multiplyEqual(da);
363 self.assertEqual(4,da1.getNumberOfTuples());
364 self.assertEqual(3,da1.getNumberOfComponents());
366 self.assertEqual(expected3[i],da1.getIJ(0,i));
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());
373 self.assertEqual(expected4[i],da2.getIJ(0,i));
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]
380 self.assertEqual(expected5[i],da1.getIJ(0,i));
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]
387 self.assertEqual(expected6[i],da1.getIJ(0,i));
389 expected7=[3,4,5,4,5,1,6,3,2,0,6,5]
392 self.assertEqual(expected7[i],da1.getIJ(0,i));
395 expected8=[3,3,3,3,3,1,3,3,0,0,3,3]
396 da1.applyRModulus(3);
398 self.assertEqual(expected8[i],da1.getIJ(0,i));
402 def testDAITransformWithIndArrR1(self):
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);
412 d3=d.transformWithIndArrR(d1);
413 self.assertEqual(6,d3.getNumberOfTuples());
414 self.assertEqual(1,d3.getNumberOfComponents());
416 self.assertEqual(expected[i],d3.getIJ(i,0));
420 d3=d.transformWithIndArrR(tab2)
421 self.assertEqual(6,d3.getNumberOfTuples());
422 self.assertEqual(1,d3.getNumberOfComponents());
424 self.assertEqual(expected[i],d3.getIJ(i,0));
428 def testDAISplitByValueRange1(self):
429 val1=[6,5,0,3,2,7,8,1,4]
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());
441 expected1=[1,1,0,0,0,1,1,0,1]
442 expected2=[2,1,0,3,2,3,4,1,0]
444 self.assertEqual(expected1[i],e.getIJ(i,0));
445 self.assertEqual(expected2[i],f.getIJ(i,0));
447 self.assertEqual(0,g.getIJ(0,0));
448 self.assertEqual(1,g.getIJ(1,0));
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])))
460 def testDAIBuildExplicitArrByRanges1(self):
461 d=DataArrayInt64.New();
463 d.setValues(vals1,3,1);
464 e=DataArrayInt64.New();
465 vals2=[0,3,6,10,14,20]
466 e.setValues(vals2,6,1);
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]
473 self.assertEqual(expected1[i],f.getIJ(i,0));
477 def testDAIComputeOffsets2(self):
478 d=DataArrayInt64.New();
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());
486 self.assertEqual(expected1[i],d.getIJ(0,i));
490 def testDAIBuildOld2NewArrayFromSurjectiveFormat2(self):
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);
506 def testDAIBuildUnique1(self):
507 d=DataArrayInt64([1,2,2,3,3,3,3,4,5,5,7,7,7,19])
509 self.assertTrue(e.isEqual(DataArrayInt64([1,2,3,4,5,7,19])))
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())
521 def testDAICheckMonotonic1(self):
523 data2=[6,2,0,-8,-9,-56]
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)
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])
564 a=da1.buildSubstractionOptimized(da2);
565 self.assertTrue(a.isEqual(DataArrayInt64([1,6,7,13])));
567 a=da1.buildSubstractionOptimized(da3);
568 self.assertTrue(a.isEqual(DataArrayInt64([6,7,9,13])));
570 a=da1.buildSubstractionOptimized(da4);
571 self.assertTrue(a.isEqual(DataArrayInt64([])));
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)
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)
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)
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);
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);
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)
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);
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);
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])))
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
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))
673 self.assertRaises(InterpKernelException,d.fromLinkedListOfPairToList)
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))
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])))
694 def testDAICheckUniformAndGuess1(self):
695 d=DataArrayInt64([3,3],1,2)
696 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# non single compo
698 self.assertRaises(InterpKernelException,d.checkUniformAndGuess)# empty
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
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 !
718 self.assertRaises(InterpKernelException,a1.findIdForEach,b1) # a1 is not single component
723 if __name__ == '__main__':