def test_linked_list_basic_operations(self): l1 = LinkedList() l2 = l1.cons(1) l3 = l2.cons(2) self.assertEqual(None, l1.head) self.assertEqual(1, l2.head) self.assertEqual(2, l3.head) self.assertEqual(1, l3.tail.head) self.assertEqual(None, l3.tail.tail.head)
def test_from_iterable(self): expected = [10, 20, 30] actual = list(LinkedList.from_iterable(expected)) self.assertEqual(actual, expected) actual = LinkedList.from_iterable(tuple(expected)) self.assertEqual(list(actual), expected) actual = LinkedList.from_iterable(iter(expected)) self.assertEqual(list(actual), expected) actual = LinkedList.from_iterable(LinkedList().cons(30).cons(20).cons(10)) self.assertEqual(list(actual), expected)
def tests_linked_list_iterator(self): self.assertEqual([30, 20, 10], list(LinkedList().cons(10).cons(20).cons(30)))
def test_linked_list_num_of_elements(self): self.assertEqual(0, len(LinkedList())) self.assertEqual(3, len(LinkedList().cons(10).cons(20).cons(30)))