Exemple #1
0
class Queue(object):
    """Create a queue data structure"""
    def __init__(self):
        self.container = DoubleLinkedList()

    def enqueue(self, val):
        """Inserts value to queue"""
        self.container.insert(val)

    def dequeue(self):
        """Removes next item and returns it"""
        return self.container.shift()

    def peek(self):
        """Return next value in queue without dequeuing it"""
        if self.container.tail_node is None:
            return None
        return self.container.tail_node.value

    def size(self):
        """Return size of queue, 0 if empty"""
        if self.container.head_node is None:
            return 0
        cursor = self.container.head_node
        if self.container.head_node.next == self.container.tail_sentinal:
            return 1
        size = 1
        while cursor.next != self.container.tail_sentinal:
            size += 1
            cursor = cursor.next
        return size
    def test_delete(self):
        dll = DoubleLinkedList(array)
        item1 = 1
        item2 = 4
        item3 = 6

        current = dll.head

        #delete first item
        if dll.head.data == item1:
            dll.head = dll.head.next
            dll.head.prev = None

        #delete last item
        if dll.tail.data == item3:
            dll.tail = dll.tail.prev
            dll.tail.next = None

        #delete item in the middle of dll
        while current is not None:

            if current.data == item2:
                current.prev.next = current.next
                current.next.prev = current.prev
            current = current.next

        assert dll.head.data == 2
        assert dll.tail.data == 5
        assert dll.head.next.next.data == 5
        assert dll.tail.prev.data == 3
 def test_eq(self):
     dll_2 = DoubleLinkedList()
     self.dll.add_element(5)
     self.dll.add_element(6)
     dll_2.add_element(5)
     dll_2.add_element(6)
     self.assertEqual(self.dll, dll_2)
 def test_add_linked_list(self):
     self.dll.add_element(5)
     self.dll.add_element(6)
     dll_2 = DoubleLinkedList()
     dll_2.add_element(7)
     dll_2.add_element(8)
     self.dll.add_linked_list(dll_2)
     self.assertEqual(self.dll.to_list(), [5, 6, 7, 8])
Exemple #5
0
 def test_contains(self):
     """Test method which check if element contains in list"""
     l_list = DoubleLinkedList()
     l_list.push(1234)
     l_list.push(12)
     l_list.push(1)
     self.assertTrue(l_list.contains(12))
     self.assertFalse(l_list.contains(2345))
def test_pop_singleton():
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.append(5)
    return_value = dll.pop()
    assert return_value == 5
    assert dll.head_node is None
    assert dll.tail_node is None
Exemple #7
0
    def setUp(self):

        my_list = [1, 2, 3]
        self.dll = DoubleLinkedList()
        # self.dll_2 = DoubleLinkedList()
        # self.dll_3 = DoubleLinkedList()

        self.dll.add_list(my_list)
 def test_replace(self):
     dll = DoubleLinkedList(array)
     item1 = 5
     item2 = 10
     item3 = 45
     assert dll.replace(item1, 1) == item1
     assert dll.replace(item2, 4) == item2
     assert dll.replace(item3, 6) == item3
     assert dll.replace(34, 90) is None
Exemple #9
0
 def test_delete_when_no_this_element(self):
     """Test method which delete element from list, when no this element in the list"""
     l_list = DoubleLinkedList()
     l_list.push(1234)
     l_list.push(12)
     l_list.push(1)
     with self.assertRaises(Exception) as context:
         l_list.delete(123)
     self.assertTrue('No this Element' in str(context.exception))
Exemple #10
0
 def test_unshift(self):
     doubleLinkedList = DoubleLinkedList()
     doubleLinkedList.push("sdfsf")
     doubleLinkedList.push(1)
     doubleLinkedList.unshift(3)
     assert (list([
         doubleLinkedList.pop(),
         doubleLinkedList.pop(),
         doubleLinkedList.pop()
     ]) == [1, "sdfsf", 3])
 def test_delete_implementation(self):
     dll = DoubleLinkedList(array)
     assert dll.delete(1) == 1
     assert dll.delete(4) == 4
     assert dll.delete(6) == 6
     assert dll.size == 3
     assert dll.head.data == 2
     assert dll.tail.data == 5
     assert dll.tail.prev.data == 3
     assert dll.head.next.data == 3
def test_pop():
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.append(5)
    dll.insert(10)
    dll.append(15)
    dll.insert(20)
    return_value_1 = dll.pop()
    assert return_value_1 == 20
    assert dll.head_node.value == 10
Exemple #13
0
 def test_last(self):
     doubleLinkedList = DoubleLinkedList()
     doubleLinkedList.push("test1")
     doubleLinkedList.push(1)
     doubleLinkedList.push(2)
     doubleLinkedList.delete("test1")
     assert (doubleLinkedList.last().elem == 2)
def test_remove__first_value():
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.insert(4)
    dll.insert(2)
    dll.insert(3)
    dll.insert(2)
    dll.insert(1)
    dll.remove(2)
    assert dll.head_node.next.value != 2
    assert dll.tail_node.previous.value == 2
def test_shift():
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.append(5)
    dll.insert(10)
    dll.append(15)
    dll.insert(20)
    # [20, 10, 5, 15]
    return_value_1 = dll.shift()
    assert return_value_1 == 15
    assert dll.tail_node.value == 5
Exemple #16
0
class DoubleLinkedListTests_add_list(unittest.TestCase):
    def setUp(self):
        self.dll = DoubleLinkedList()

    def test_add_list(self):
        # test_list
        list_vals = [1, 2, 3]

        self.dll.add_list(list_vals)
        self.assertEqual(self.dll.head.value, 1)
        self.assertEqual(self.dll.head.next.value, 2)
        self.assertEqual(self.dll.head.next.next.value, 3)
 def test_prepend_implementation(self):
     dll = DoubleLinkedList()
     assert dll.prepend(1) == 1
     assert dll.prepend(2) == 2
     assert dll.prepend(3) == 3
     assert dll.head.data == 3
     assert dll.tail.data == 1
     assert dll.head.next.prev == dll.head
     assert dll.tail.prev.next == dll.tail
     assert dll.tail.next is None
     assert dll.head.prev is None
     assert dll.size == 3
def test_append():
    # test multiple append calls
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.append(4)
    dll.append(8)
    assert dll.head_node.value == 4
    assert dll.head_node.next.value == 8
    assert dll.head_node.previous == dll.head_sentinal

    assert dll.tail_node.value == 8
    assert dll.tail_node.next == dll.tail_sentinal
    assert dll.tail_node.previous == dll.head_node
def test_insert_on_empty_list():
    # test insert single element to empty list
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.insert(5)
    assert dll.head_node.value == 5
    assert dll.head_node.next == dll.tail_sentinal
    assert dll.head_node.previous == dll.head_sentinal

    # list is 1 element long, so head and tail are that element
    assert dll.tail_node.value == 5
    assert dll.tail_node.next == dll.tail_sentinal
    assert dll.tail_node.previous == dll.head_sentinal
def test_append_on_empty_list():
    # test append single element on empty list
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.append(4)
    assert dll.tail_node.value == 4
    assert dll.tail_node.next == dll.tail_sentinal
    assert dll.tail_node.previous == dll.head_sentinal

    # list is 1 element long, so head and tail are that element
    assert dll.head_node.value == 4
    assert dll.head_node.next == dll.tail_sentinal
    assert dll.head_node.previous == dll.head_sentinal
Exemple #21
0
 def test_push_pop(self):
     doubleLinkedList = DoubleLinkedList()
     doubleLinkedList.push("sdfsf")
     doubleLinkedList.push(1)
     assert (list([
         doubleLinkedList.pop(),
         doubleLinkedList.pop(),
         doubleLinkedList.pop()
     ]) == [1, "sdfsf", None])
 def test_append_implementation(self):
     dll = DoubleLinkedList(array)
     assert dll.head.data == 1
     assert dll.tail.data == 6
     assert dll.head.prev is None
     assert dll.tail.next is None
     assert dll.head == dll.head.next.prev
     assert dll.tail == dll.tail.prev.next
def test_remove_tail():
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.insert(3)
    dll.insert(2)
    dll.insert(1)
    assert dll.tail_node.value == 3
    dll.remove(3)
    assert dll.tail_node.value == 2
    assert dll.tail_node.next == dll.tail_sentinal
    def __init__(self):
        number_of_bucket = 5
        self.bucket = DoubleLinkedList()
        self.hash_table = []

        index = 0

        while index < number_of_bucket:
            self.hash_table.append(self.bucket)
            index += 1
Exemple #25
0
class Stack:
    def __init__(self):
        self.__list = DoubleLinkedList()

    def push(self, value):
        self.__list.add(value)

    def pop(self):
        val = self.__list.pop_back()
        return val

    def is_empty(self):
        return self.__list.size == 0

    def peek(self):
        return self.__list.back()

    def size(self):
        return self.__list.size

    def __len__(self):
        return self.__list.size
Exemple #26
0
class Queue:
    def __init__(self):
        self.__list = DoubleLinkedList()

    def enque(self, value):
        self.__list.add(value)

    def deque(self):
        val = self.__list.pop_front()
        return val

    def front(self):
        return self.__list.front()

    def __len__(self):
        return self.__list.size

    def size(self):
        return self.__list.size

    def is_empty(self):
        return self.__list.size == 0
    def test_init_hash_table(self):
        size = 5
        bucket = DoubleLinkedList()
        ash_table = []

        x = 0
        while x<size:
            ash_table.append(bucket)
            x += 1

        assert ash_table != None
        assert ash_table[0] != None
        assert ash_table[1] != None
        assert ash_table[2] != None
        assert ash_table[3] != None
        assert ash_table[4] != None
    def setUp(self):
        self.dll = DoubleLinkedList()
        self.all = DoubleLinkedList()
        self.repeat = DoubleLinkedList()

        all_val = [1, 1, 1, 1]
        self.all.add_list(all_val)
        
        
        repeat_val = [1, 1, 2, 5, 6, 1, 1, 1, 3, 1, 4, 9, 1, 1, 1]
        self.repeat.add_list(repeat_val)
class DoubleLinkedListTest_reverse_list(unittest.TestCase):
    def setUp(self):
        my_list = [1, 2, 3]     
        self.dll = DoubleLinkedList()
        self.dll.add_list(my_list)


    def test_reverse_list(self):
        self.dll.reverse_list()
        self.assertEqual(self.dll.print(), 'HEAD >> 3 -> 2 -> 1 ->  TAIL')
        self.assertEqual(self.dll.print_reverse(), 'TAIL >> 1 -> 2 -> 3 ->  HEAD')
    def setUp(self):
        not_found = [2, 3, 4]
        self.dll_1 = DoubleLinkedList()
        self.dll_1.add_list(not_found)

        repeat_list = [1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 4, 1, 1, 1]
        self.dll_2 = DoubleLinkedList()
        self.dll_2.add_list(repeat_list)

        all_removed = [1, 1, 1, 1]
        self.dll_3 = DoubleLinkedList()
        self.dll_3.add_list(all_removed)
def test_insert():
    # test multiple insert calls
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.insert(5)
    dll.insert(10)
    assert dll.head_node.value == 10
    assert dll.head_node.next.value == 5
    assert dll.head_node.previous == dll.head_sentinal

    assert dll.tail_node.value == 5
    assert dll.tail_node.next == dll.tail_sentinal
    assert dll.tail_node.previous == dll.head_node
Exemple #32
0
    def __init__(self):
        self.pellets = DoubleLinkedList()
        self.blobs = DoubleLinkedList()
        self.bullet_blobs = DoubleLinkedList()
        self.blob_families = []
        self.controllers = []
        self.lastime = time.time()

        for _ in range(SMALL_PELLET_NUM):
            self.__generate_pellet()

        for _ in range(LARGE_PELLET_NUM):
            self.__generate_large_pellet()
def test_remove_value_not_in_list():
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    dll.append(5)
    dll.insert(10)
    dll.append(15)
    dll.insert(20)
    with pytest.raises(ValueError):
        dll.remove('bananas')
Exemple #34
0
 def __init__(self):
     self.container = DoubleLinkedList()
def test_pop_empty_list():
    from double_linked_list import DoubleLinkedList
    dll = DoubleLinkedList()
    with pytest.raises(ValueError):
        dll.pop()