def test_monoid_associativity(self, a, b, c): ULlsta = UnrolledLinkedList(Node()) ULlstb = UnrolledLinkedList(Node()) ULlstc = UnrolledLinkedList(Node()) ULlsta.from_list(a) ULlstb.from_list(b) ULlstc.from_list(c) ULlst_test1 = UnrolledLinkedList(Node()) ULlst_testb = UnrolledLinkedList(Node()) ULlst_testb.mconcat(ULlsta, ULlstb) ULlst_test1.mconcat(ULlst_testb, ULlstc) ULlsta = UnrolledLinkedList(Node()) ULlstb = UnrolledLinkedList(Node()) ULlstc = UnrolledLinkedList(Node()) ULlsta.from_list(a) ULlstb.from_list(b) ULlstc.from_list(c) ULlst_test2 = UnrolledLinkedList(Node()) ULlst_testb = UnrolledLinkedList(Node()) ULlst_testb.mconcat(ULlstb, ULlstc) ULlst_test2.mconcat(ULlsta, ULlst_testb) ULlst1 = ULlst_test1.to_list() ULlst2 = ULlst_test2.to_list() self.assertEqual(ULlst1, ULlst2)
def test_add_to_head(self): lst = UnrolledLinkedList(Node()) self.assertEqual(lst.to_list(), []) lst.add_to_head(1) self.assertEqual(lst.to_list(), [1]) lst.add_to_head('a') self.assertEqual(lst.to_list(), ['a', 1])
def test_to_list(self): self.assertEqual(UnrolledLinkedList(Node()).to_list(), []) lst = UnrolledLinkedList(Node()) lst.insert(0, 'a') self.assertEqual(lst.to_list(), ['a']) lst.insert(1, 2) self.assertEqual(lst.to_list(), ['a', 2])
def test_map(self): lst = UnrolledLinkedList(Node()) lst.map(str) self.assertEqual(lst.to_list(), []) lst1 = UnrolledLinkedList(Node()) lst1.from_list([1, 2, 3]) lst1.map(str) self.assertEqual(lst1.to_list(), ["1", "2", "3"])
def test_monoid_identity(self, a): lst = UnrolledLinkedList(Node()) lst.from_list(a) res = UnrolledLinkedList(Node()) lst_mconcat = UnrolledLinkedList(Node()) lst_mconcat.mconcat(lst, res.empty()) self.assertEqual(lst_mconcat.to_list(), a) lst_mconcat = UnrolledLinkedList(Node()) lst_mconcat.mconcat(res.empty(), lst) self.assertEqual(lst_mconcat.to_list(), a)
def test_map(self): lst = UnrolledLinkedList(5) lst.map(str) self.assertEqual(lst.to_list(), []) lst = UnrolledLinkedList(5) lst.from_list([1, 2, 3]) lst.map(str) self.assertEqual(lst.to_list(), ['1', '2', '3']) lst = UnrolledLinkedList(5) lst.from_list([1, 2, 3]) lst.map(lambda x: x + 1) self.assertEqual(lst.to_list(), [2, 3, 4])
def test_mconcat(self): lst1 = UnrolledLinkedList(5).add(1).add(2).add(3) lst2 = UnrolledLinkedList(5).add(4).add(5).add(6).add(7) concat = lst1.mconcat(lst2) lst3 = UnrolledLinkedList(5).add(1).add(2).add(3).add(4).add(5).add( 6).add(7) self.assertEqual(concat.to_list(), lst3.to_list())
def test_iter(self): x = [1, 2, 3] lst = UnrolledLinkedList(Node()) lst.from_list(x) tmp = [] i = 0 for e in lst.head.elements: i += 1 if i > len(x): break tmp.append(e) self.assertEqual(x, tmp) self.assertEqual(lst.to_list(), tmp) i = iter(UnrolledLinkedList()) self.assertRaises(StopIteration, lambda: next(i))
def test_from_list_to_list_equality(self, a): lst = UnrolledLinkedList(Node()) lst.from_list(a) b = lst.to_list() self.assertEqual(a, b)
def test_add_to_tail(self): lst = UnrolledLinkedList(Node()) self.assertEqual(lst.to_list(), []) lst.add_to_tail(1) self.assertEqual(lst.to_list(), [1])
def test_from_list(self): test_data = [[], ['a'], ['a', 'b']] for i in test_data: lst = UnrolledLinkedList(Node()) lst.from_list(i) self.assertEqual(lst.to_list(), i)
def test_reverse2(self, a): x = UnrolledLinkedList(5).from_list(a).reverse() self.assertEqual(x.to_list(), a[::-1])
def test_from_list2(self, a): lst1 = UnrolledLinkedList(5) lst2 = UnrolledLinkedList(5) for item in a: lst2.add(item) self.assertEqual(lst1.from_list(a).to_list(), lst2.to_list())
def test_from_list(self): test_data = [[], [1, 2], [1, 2, 3, 4, 5, 6, 7]] for e in test_data: lst = UnrolledLinkedList(5).from_list(e) self.assertEqual(lst.to_list(), e)
def test_to_list2(self, a): lst = UnrolledLinkedList(5) for item in a: lst.add(item) self.assertEqual(lst.to_list(), a)