示例#1
0
def test_equality_repeat():
    """DoublyLinkedList with different number of occurences should NOT be equal"""
    a_list = DoublyLinkedList()
    a_list.push(0).push(1).push(2)
    another_list = DoublyLinkedList()
    another_list.push(0).push(0).push(1).push(2)
    assert id(another_list) != id(a_list)
    assert another_list != a_list
示例#2
0
def test_equality():
    """DoublyLinkedList with same elements in order should be equal"""
    a_list = DoublyLinkedList()
    a_list.push(0).push(1).push(2)
    another_list = DoublyLinkedList()
    another_list.push(0).push(1).push(2)
    assert id(another_list) != id(a_list)
    assert another_list == a_list
示例#3
0
def test_equality_unorder():
    """DoublyLinkedList with same elements in different order should NOT be equal"""
    a_list = DoublyLinkedList()
    a_list.push(0).push(1).push(2)
    another_list = DoublyLinkedList()
    another_list.push(1).push(2).push(0)
    assert id(another_list) != id(a_list)
    assert another_list != a_list
示例#4
0
 def test_insert_get(self):
     l = DoublyLinkedList()
     l.insert("two")
     l.insert(1.0)
     l.insert(0)
     self.assertEqual(len(l), 3)
     self.assertEqual(l._head.data, 0)
     self.assertEqual(l._head._next.data, 1.0)
     self.assertEqual(l._head._next._next.data, "two")
     self.assertEqual(l._head._next._next, l._tail)
     self.assertEqual(l._head._next, l._tail._prev)
     self.assertIsNone(l._head._prev)
     self.assertIsNone(l._tail._next)
     self.assertEqual(l.get(0), 0)
     self.assertEqual(l.get(1), 1.0)
     self.assertEqual(l.get(2), "two")
     self.assertEqual(l.get(-1), "two")
     self.assertEqual(l.get(-3), 0)
     bad = False
     try:
         l.get(4)
     except ValueError:
         bad = True
     self.assertTrue(bad)
     bad = False
     try:
         l.get(-4)
     except ValueError:
         bad = True
     self.assertTrue(bad)
示例#5
0
def test_iterable():
    """DoublyLinkedList should be Iterable"""
    a_list = DoublyLinkedList()
    assert isinstance(a_list, Iterable)
    an_iter = iter(a_list)
    assert isinstance(an_iter, Iterable)
    assert isinstance(an_iter, Iterator)
示例#6
0
 def test_get(self):
     l = DoublyLinkedList()
     self.assertIsNone(l.get(1))
     l.append(1)
     self.assertEqual(1, l.get(0))
     l.append(2)
     self.assertEqual(2, l.get(1))
示例#7
0
def test_pop_one_from_one():
    """One element should be removed from a list of size one after pop"""
    a_list = DoublyLinkedList()
    a_list.push(0)
    value = a_list.pop()
    assert value == 0
    assert not a_list
示例#8
0
def test_contains():
    """__contains__ method should be used by 'in' statements"""
    a_list = DoublyLinkedList([0, 1, 2])
    assert 0 in a_list
    assert 1 in a_list
    assert 2 in a_list
    assert 42 not in a_list
示例#9
0
def test_creation_empty():
    """An empty list should have its attributes set"""
    a_list = DoublyLinkedList()
    assert not a_list
    assert hasattr(a_list, "start")
    assert hasattr(a_list, "end")
    assert hasattr(a_list, "length")
示例#10
0
def test_push_two():
    """Two elements should be added to an empty list"""
    a_list = DoublyLinkedList()
    a_list.push(0)
    a_list.push(1)
    assert len(a_list) == 2
    assert a_list.start.next == a_list.end
    assert a_list.end.prev == a_list.start
示例#11
0
def test_equality_other_class():
    """DoublyLinkedList equality with another class should return NotImplemented"""
    a_list = DoublyLinkedList()
    assert a_list.__eq__(0) == NotImplemented
    assert a_list.__eq__(True) == NotImplemented
    assert a_list.__eq__(()) == NotImplemented
    assert a_list.__eq__("test") == NotImplemented
    assert a_list.__eq__([]) == NotImplemented
示例#12
0
 def __init__(self, head=None):
     self._linked_list = DoublyLinkedList(head)
     self._front = self._linked_list.head()
     self._rear = self._linked_list.get_end()
     if not head:
         self._size = 0
     else:
         self._size = self.get_linked_list().get_length()
示例#13
0
 def test_index(self):
     l = DoublyLinkedList()
     self.assertIsNone(l.index(1))
     l.append(1)
     l.append(1)
     self.assertEqual(0, l.index(1))
     l.append(2)
     self.assertEqual(2, l.index(2))
示例#14
0
 def test_delete(self):
     l = DoublyLinkedList(1, 2, 3)
     self.assertEqual(1, l.head.data)
     l.delete(1)
     self.assertEqual(2, l.head.data)
     l.delete(3)
     self.assertEqual(2, l.head.data)
     self.assertEqual(2, l.tail.data)
示例#15
0
def test_pop_one_from_three():
    """One element should be removed from a list of size three after pop"""
    a_list = DoublyLinkedList()
    a_list.push(0).push(1).push(2)
    a_value = a_list.pop()
    assert a_value == 2
    assert a_list.end.value == 1
    assert a_list.start.value == 0
    assert len(a_list) == 2
示例#16
0
 def test_pop(self):
     l = DoublyLinkedList(0, 1, 2, 3, 4)
     self.assertEqual(l.pop(), 0)
     self.assertEqual(l.pop(1), 2)
     self.assertEqual(len(l), 3)
     self.assertEqual(l.pop(-1), 4)
     for i in range(len(l)):
         l.pop()
     self.assertEqual(len(l), 0)
示例#17
0
def test_pop_two_from_two():
    """Two elements should be removed from a list of size one after two pops"""
    a_list = DoublyLinkedList()
    a_list.push(0).push(1)
    a_value = a_list.pop()
    assert a_value == 1
    another_value = a_list.pop()
    assert another_value == 0
    assert not a_list
示例#18
0
    def setUp(self):
        self.n1 = Node(1)
        self.n2 = Node(2)
        self.n3 = Node(3)
        self.n4 = Node(4)
        self.n5 = Node(5)

        self.empty_list = DoublyLinkedList()
        self.empty_head = self.empty_list.head()
        self.empty_tail = self.empty_list.get_end()

        self.single_list = DoublyLinkedList(self.n4)
        self.single_head = self.single_list.head()
        self.single_tail = self.single_list.get_end()

        self.linked_list = DoublyLinkedList(self.n1)
        self.linked_list.append(self.n2)
        self.head = self.linked_list.head()
        self.tail = self.linked_list.get_end()
示例#19
0
 def test_append_get(self):
     l = DoublyLinkedList(0, -1.0)
     self.assertEqual(len(l), 2)
     self.assertEqual(l.get(0), 0)
     self.assertEqual(l.get(1), -1.0)
     self.assertEqual(l._head.data, 0)
     self.assertEqual(l._tail.data, -1.0)
     self.assertEqual(l._head._next, l._tail)
     self.assertEqual(l._tail._prev, l._head)
     self.assertIsNone(l._head._prev)
     self.assertIsNone(l._tail._next)
示例#20
0
 def __init__(self):
     self.list = DoublyLinkedList()
     self.iterList = iter(self.list)
示例#21
0
 def setUp(self):
     self.linked_list = DoublyLinkedList()
     self.helper = SharedListTestHelpers()
示例#22
0
 def test_insert(self):
     l = DoublyLinkedList()
     l.insert(1, 0)
     self.assertEqual(1, l.head.data)
     self.assertEqual(1, l.tail.data)
示例#23
0
 def test_empty_init(self):
     l = DoublyLinkedList()
     self.assertEqual(len(l), 0)
示例#24
0
 def test_insert_out_of_list(self):
     l = DoublyLinkedList()
     self.assertRaises(ValueError, lambda: l.insert(1, 1))
示例#25
0
 def test_append(self):
     l = DoublyLinkedList()
     l.append(1)
     self.assertEqual(1, l.head.data)
     self.assertEqual(1, l.tail.data)
示例#26
0
 def test_empty_list(self):
     l = DoublyLinkedList()
     self.assertIsNone(l.head)
     self.assertIsNone(l.tail)
示例#27
0
 def test_linked_list(self):
     data = [1, 2, 3, 4, 5]
     l = DoublyLinkedList(*data)
     self.assertEqual(1, l.head.data)
     self.assertEqual(5, l.tail.data)
示例#28
0
 def test_get_with_negative_inx(self):
     l = DoublyLinkedList()
     self.assertRaises(ValueError, lambda: l.get(-1))
示例#29
0
 def test_iter(self):
     to_iterate = list(range(10))
     l = DoublyLinkedList(*to_iterate)
     for i, j in zip(to_iterate, l):
         self.assertTrue(i == j)
示例#30
0
 def __init__(self, top=None):
     self._linked_list = DoublyLinkedList(top)