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_immutability(self, a, b, c): lst1 = UnrolledLinkedList(5).from_list(a) lst2 = UnrolledLinkedList(5).from_list(b) lst3 = UnrolledLinkedList(5).from_list(c) concat_lst1_lst2_none = lst1.mconcat(lst2.mconcat(None)).to_list() concat_lst1_none_lst2 = lst1.mconcat(None).mconcat(lst2).to_list() self.assertEqual(concat_lst1_lst2_none, concat_lst1_none_lst2) concat1 = lst1.mconcat(lst2.mconcat(lst3)).to_list() concat2 = lst1.mconcat(lst2).mconcat(lst3).to_list() self.assertEqual(concat1, concat2)
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_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_monoid_identity(self, lst1): a = UnrolledLinkedList(5).from_list(lst1) b = UnrolledLinkedList(5).from_list([1, 2, 3, 4, 5, 0]) self.assertEqual(a.mconcat(None), a) self.assertEqual(a.mconcat(b).to_list(), lst1 + [1, 2, 3, 4, 5, 0])