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())
Esempio n. 9
0
 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)
Esempio n. 12
0
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)
Esempio n. 14
0
 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')
Esempio n. 15
0
 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
Esempio n. 16
0
 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)
Esempio n. 18
0
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
Esempio n. 19
0
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)