def populate_list(llist: LinkedList): nodes = ( Node(12), Node(34), Node(56), ) for node in nodes: llist.add_in_tail(node) return nodes
def test_insert_after(self): node = Node(99) prev_node = Node(77) self.list.add_in_tail(Node(35)) self.list.add_in_tail(prev_node) self.list.add_in_tail(Node(64)) self.list.insert(prev_node, node) self.assertEqual(4, self.list.len()) self.assertEqual(node, prev_node.next)
def test_find(self): node = Node(99) self.list.add_in_tail(Node(13)) self.list.add_in_tail(Node(0)) self.list.add_in_tail(node) self.list.add_in_tail(Node(44)) found_node = self.list.find(node.value) self.assertIsNotNone(found_node) self.assertEqual(node, found_node)
def test_find_all(self): source_node = Node(99) self.list.add_in_tail(Node(28)) self.list.add_in_tail(Node(source_node.value)) self.populate_list(self.list) self.list.add_in_tail(Node(source_node.value)) self.list.add_in_tail(Node(81)) self.list.add_in_tail(source_node) found_nodes = self.list.find_all(source_node.value) self.assertEqual(3, len(found_nodes)) for node in found_nodes: self.assertEqual(source_node.value, node.value)
def test_add_in_tail(self): first_node = Node(23) second_node = Node(72) self.list.add_in_tail(first_node) self.assertEqual(first_node, self.list.head) self.assertEqual(first_node, self.list.tail) self.list.add_in_tail(second_node) self.assertEqual(first_node, self.list.head) self.assertEqual(second_node, self.list.tail) self.assertEqual(second_node, first_node.next) self.assertIsNone(second_node.next)
def test_delete_in_head(self): node = Node(99) node_alt = Node(node.value) self.list.add_in_tail(node) nodes = self.populate_list(self.list) self.list.add_in_tail(node_alt) self.list.delete(node.value) self.assertEqual(len(nodes) + 1, self.list.len()) self.assertEqual(1, len(self.list.find_all(node.value))) self.assertNotEqual(node, self.list.head) self.assertEqual(nodes[0], self.list.head) self.assertEqual(node_alt, self.list.tail) self.assertIsNone(node.next)
def test_insert_multiple(self): prev_node = None nodes = ( Node(12), Node(34), Node(56), ) for node in nodes: self.list.insert(prev_node, node) prev_node = node self.assertEqual(len(nodes), self.list.len()) self.assertEqual(nodes[0], self.list.head) self.assertEqual(nodes[len(nodes) - 1], self.list.tail)
def test_insert_in_empty_list(self): node = Node(99) self.list.insert(None, node) self.assertEqual(node, self.list.head) self.assertEqual(node, self.list.tail) self.assertEqual(1, self.list.len())
def enqueue(self, elem): e = Node(elem) if self.__list.head() != None: self.__rear.set_next(e) else: self.__list.add_head(e) self.__front = e self.__rear = e
def test_insert_in_head(self): node = Node(99) nodes = self.populate_list(self.list) self.list.insert(None, node) self.assertEqual(node, self.list.head) self.assertNotEqual(node, self.list.tail) self.assertEqual(nodes[len(nodes) - 1], self.list.tail) self.assertEqual(len(nodes) + 1, self.list.len())
def test_delete_all_in_one_elem_list(self): node = Node(99) self.list.add_in_tail(node) self.list.delete(node.value, True) self.assertEqual(0, self.list.len()) self.assertIsNone(self.list.head) self.assertIsNone(self.list.tail) self.assertIsNone(node.next)
class Queue: def __init__(self): self.__list = LinkedList() self.__rear = Node() self.__front = Node() self.__size = 0 def size(self): return self.__list.size() def is_empty(self): return self.size == 0 def front(self): return self.__front def enqueue(self, elem): e = Node(elem) if self.__list.head() != None: self.__rear.set_next(e) else: self.__list.add_head(e) self.__front = e self.__rear = e def dequeue(self): if self.__list.head() != None: temp = self.__front self.__list.remove_head() self.__front = self.__front.get_next() return temp.get_element() else: print('Queue is empty, cannot remove element!') return 1 def __repr__(self): result = "-> " p = self.__list.head() print(p) if p is not None: while p is not None: result += "%s " % str(p.get_element()) p = p.get_next() return result
def test_delete_all_with_sequentially_nodes(self): node = Node(99) node_alt = Node(node.value) node_result = Node(8) self.list.add_in_tail(node) self.list.add_in_tail(node_alt) self.list.add_in_tail(node_result) self.list.delete(node.value, True) self.assertEqual(1, self.list.len()) self.assertEqual(0, len(self.list.find_all(node.value))) self.assertNotEqual(node, self.list.head) self.assertNotEqual(node_alt, self.list.head) self.assertEqual(node_result, self.list.head) self.assertNotEqual(node, self.list.tail) self.assertNotEqual(node_alt, self.list.tail) self.assertEqual(node_result, self.list.tail) self.assertIsNone(node.next) self.assertIsNone(node_alt.next)
def test_multi_flatten(self): llist = LinkedList() node1 = Node(10) node11 = Node(4) node12 = Node(20) node121 = Node(2) node13 = Node(13) node131 = Node(16) node1311 = Node(3) node2 = Node(5) node3 = Node(12) node4 = Node(7) node41 = Node(17) node411 = Node(9) node4111 = Node(19) node4112 = Node(15) node412 = Node(8) node42 = Node(6) node5 = Node(11) node1.child = node11 node11.next = node12 node12.child = node121 node12.next = node13 node13.child = node131 node131.child = node1311 node1.next = node2 node2.next = node3 node3.next = node4 node4.next = node5 node4.child = node41 node41.next = node42 node41.child = node411 node411.next = node412 node411.child = node4111 node4111.next = node4112 llist.head = node1 llist.multi_flatten() self.assertEqual(str(llist), '10512711420131762169831915')
def stackPUSH(self, item): '''adds element to stack - initially named push, renamed to prevent confusion when reading world.py''' self.storage.add_head(Node(item)) #increases total counter by 1 self.counter += 1
def __init__(self): self.__list = LinkedList() self.__rear = Node() self.__front = Node() self.__size = 0
def test_find_all_in_empty_list(self): node = Node(99) found_nodes = self.list.find_all(node.value) self.assertEqual(0, self.list.len()) self.assertEqual([], found_nodes)
def test_initiate_node(n): """Test if attributes in node class match what is expected.""" from src.linked_list import Node assert Node(n).data == n
def test_node_has_data(): """Test node object has data.""" from src.linked_list import Node ll = Node(5) assert ll.data is 5 and ll.next is None
def test_find_in_empty_list(self): node = Node(99) found_node = self.list.find(node.value) self.assertEqual(0, self.list.len()) self.assertIsNone(found_node)