def test_insert_in_the_middle(self): linked = SinglyLinkedList(100) linked.append(200) linked.append(300) linked.insert(1000, 1) self.assertEqual(linked.as_list(), [100, 1000, 200, 300])
def test_remove(self): linked = SinglyLinkedList(100) linked.append(200) linked.append(300) linked.remove(1) self.assertEqual(linked.as_list(), [100, 300])
def test_as_list(self): linked = SinglyLinkedList() linked.append(100) linked.append(200) linked.append(300) self.assertEqual(linked.as_list(), [100, 200, 300])
def test_append_multiple_with_initial_value(self): linked = SinglyLinkedList(1000) linked.append(100) linked.append(200) linked.append(300) self.assertEqual(linked.as_list(), [1000, 100, 200, 300])
def test_remove_at_the_beginning_with_multiple_values(self): linked = SinglyLinkedList(100) linked.append(200) linked.append(300) linked.append(400) linked.remove(0) self.assertEqual(linked.as_list(), [200, 300, 400])
def test_item_setting_by_index_overrides_previous_value_at_the_end(self): linked = SinglyLinkedList() linked.append(100) linked.append(200) linked.append(300) linked[2] = 400 self.assertEqual(linked.as_list(), [100, 200, 400])
def test_remove_at_the_end(self): linked = SinglyLinkedList(100) linked.append(200) linked.append(300) linked.append(400) linked.append(500) linked.remove(4) self.assertEqual(linked.as_list(), [100, 200, 300, 400])
class SinglyLinkedListQueue: def __init__(self, max_length): self._queue = SinglyLinkedList() self._length = 0 self._max_length = max_length def enqueue(self, value): if self._length == self._max_length: raise ValueError("Overflow") self._length += 1 self._queue.append(value) def dequeue(self): if self._length == 0: raise ValueError("Underflow") self._length -= 1 return self._queue.remove(0).value def increase_max_length(self): self._max_length += 1 def as_list(self): return self._queue.as_list()
def test_remove_at_the_beginning(self): linked = SinglyLinkedList(100) linked.remove(0) self.assertEqual(linked.as_list(), [])
def test_insert_at_the_beginning_without_initial_value(self): linked = SinglyLinkedList() linked.insert(1000, 0) self.assertEqual(linked.as_list(), [1000])
def test_as_list_no_data(self): linked = SinglyLinkedList() self.assertEqual(linked.as_list(), [])
def test_item_setting_by_index_with_a_previous_value(self): linked = SinglyLinkedList() linked.append(100) linked[1] = 200 self.assertEqual(linked.as_list(), [100, 200])
def test_item_setting_by_index(self): linked = SinglyLinkedList() linked[0] = 100 self.assertEqual(linked.as_list(), [100])
def test_prepend_adds_an_element_at_the_beginning_even_without_a_first_node( self): linked = SinglyLinkedList() linked.prepend(1000) self.assertEqual(linked.as_list(), [1000])
def test_prepend_adds_an_element_at_the_beginning(self): linked = SinglyLinkedList(100) linked.prepend(1000) self.assertEqual(linked.as_list(), [1000, 100])
def test_append_single(self): linked = SinglyLinkedList() linked.append(100) self.assertEqual(linked.as_list(), [100])