1 |
|
---|
2 |
|
---|
3 | from unittest.case import TestCase
|
---|
4 | from typing import List
|
---|
5 | from tudelft.utilities.immutablelist.ListWithRemove import ListWithRemove
|
---|
6 | from tudelft.utilities.immutablelist.FixedList import FixedList
|
---|
7 | from tudelft.utilities.immutablelist.ImmutableList import ImmutableList
|
---|
8 | import random
|
---|
9 |
|
---|
10 | class ListWithRemoveTest(TestCase):
|
---|
11 |
|
---|
12 | data:List[str] = [ "a", "b", "c", "d", "e" ]
|
---|
13 |
|
---|
14 | def testRemoveTest0(self):
|
---|
15 | remList:ListWithRemove[str] = ListWithRemove(
|
---|
16 | FixedList(self.data), set())
|
---|
17 | self.assertEqual("a", remList.get(0))
|
---|
18 | remList = remList.remove(0)
|
---|
19 | self.assertEqual("b", remList.get(0))
|
---|
20 | self.assertEquals(4, remList.size())
|
---|
21 |
|
---|
22 | def testRemoveTest1(self):
|
---|
23 | remList:ListWithRemove[str] = ListWithRemove(
|
---|
24 | FixedList(self.data), set())
|
---|
25 | self.assertEqual("a", remList.get(0))
|
---|
26 | remList = remList.remove(1)
|
---|
27 | self.assertEqual("a", remList.get(0))
|
---|
28 | self.assertEqual(4, remList.size())
|
---|
29 |
|
---|
30 | def testRemoveTest1b(self):
|
---|
31 | remList:ListWithRemove[str] = ListWithRemove(
|
---|
32 | FixedList(self.data), set())
|
---|
33 | self.assertEqual("b", remList.get(1))
|
---|
34 | remList = remList.remove(1);
|
---|
35 | self.assertEqual("c", remList.get(1))
|
---|
36 | self.assertEqual(4, remList.size())
|
---|
37 |
|
---|
38 | # def testRemoveTestLarge(self):
|
---|
39 | # PermutationsWithReturn<String> perm = new PermutationsWithReturn<>(
|
---|
40 | # new FixedList<>(data), 10);
|
---|
41 | # // assertEquals(BigInteger.valueOf(9765625), perm.size());
|
---|
42 | # ListWithRemove<ImmutableList<String>> permutation = new ListWithRemove<>(
|
---|
43 | # perm, Collections.emptySet());
|
---|
44 | # System.out.println(permutation);
|
---|
45 | # permutation.remove(BigInteger.valueOf(838232));
|
---|
46 | # System.out.println(permutation);
|
---|
47 | #
|
---|
48 | # }
|
---|
49 |
|
---|
50 | def testRemoveListMultipleTimes(self):
|
---|
51 |
|
---|
52 | for n in range(20):
|
---|
53 | self.removeRandomTillEmpty()
|
---|
54 |
|
---|
55 | def removeRandomTillEmpty(self):
|
---|
56 | '''
|
---|
57 | remove random data items till lists are empty
|
---|
58 | '''
|
---|
59 | alist:ImmutableList[str] = FixedList(self.data)
|
---|
60 | remlist:ListWithRemove[str] = ListWithRemove(alist,set())
|
---|
61 | copy:List[str] = list(self.data)
|
---|
62 |
|
---|
63 | while copy!=[]:
|
---|
64 | n:int = random.randint(0,len(copy)-1)
|
---|
65 | remlist = remlist.remove(n)
|
---|
66 | copy.pop(n)
|
---|
67 | self.checkListsEqual(remlist, copy)
|
---|
68 |
|
---|
69 | def testImmutability(self):
|
---|
70 | copy:List[str] = list(self.data)
|
---|
71 |
|
---|
72 | alist:ImmutableList[str] = FixedList(copy)
|
---|
73 | copy.pop(1)
|
---|
74 | self.checkListsEqual(alist, self.data)
|
---|
75 |
|
---|
76 | def checkListsEqual(self, list1:ImmutableList[str] ,
|
---|
77 | list2:List[str] ) :
|
---|
78 | self.assertEqual(list1.size(), len(list2))
|
---|
79 | for n in range(len(list2)):
|
---|
80 | self.assertEqual(list1.get(n), list2[n])
|
---|