A1 P1 Q2 Implement unit tests

This commit is contained in:
MstrPikachu
2022-01-22 23:19:11 -05:00
parent 35286e30a6
commit 29b9d76959
+62
View File
@@ -36,5 +36,67 @@ def test_all_lists_true() -> None:
assert(all(all(x in swap[i] for x in range(i)) for i in range(100)))
assert(all(all(x in count[i] for x in range(i)) for i in range(100)))
def test_all_lists_false() -> None:
movetofront = [MoveToFrontLinkedList(range(i)) for i in range(100)]
swap = [SwapLinkedList(range(i)) for i in range(100)]
count = [CountLinkedList(range(i)) for i in range(100)]
assert(all(all(x not in movetofront[i] for x in range(i, i + 100)) for i in range(100)))
assert(all(all(x not in swap[i] for x in range(i, i + 100)) for i in range(100)))
assert(all(all(x not in count[i] for x in range(i, i + 100)) for i in range(100)))
def generate_ordering(n: int):
"""generates a pseudorandom ordering of n integers from 0 to n-1, inclusive
Preconditions:
- n is prime
"""
arr = [(2 << i) % n for i in range(1, n)]
arr.append(0)
assert set(arr) == set(range(n))
return arr
def test_movetofront_mutation() -> None:
lst = MoveToFrontLinkedList(range(101))
arr = list(range(101))
operations = generate_ordering(101)
for x in operations:
i = arr.index(x) # find index
arr.insert(0, arr.pop(i)) # simulate moving to front
x in lst
assert lst.to_list() == arr
def test_swap_mutation() -> None:
lst = SwapLinkedList(range(101))
arr = list(range(101))
operations = generate_ordering(101)
for x in operations:
i = arr.index(x) # find index
if i > 0: # simulate swapping
temp = arr[i]
arr[i] = arr[i - 1]
arr[i - 1] = temp
x in lst
assert lst.to_list() == arr
def test_count_mutation() -> None:
lst = CountLinkedList(generate_ordering(101))
operations = list(range(101))
for x in operations:
x in lst
assert lst.to_list() == operations
for x in reversed(range(50)):
x in lst
assert lst.to_list() == list(reversed(range(50))) + list(range(50, 101))
if __name__ == '__main__':
pytest.main(['a1_part1_test.py', '-v'])