Пример #1
0
    def test_empty_neighbors(self):
        nodelist = _NodeListRoot()

        assert nodelist.prev_neighbor is None
        assert nodelist.next_neighbor is None
        assert nodelist._next_node is nodelist
        assert nodelist._prev_node is nodelist
Пример #2
0
    def test_neighbors(self):
        nodelist = _NodeListRoot()
        node1 = GenericNode('node1')
        node2 = GenericNode('node2')
        nodelist.insert(node1)
        nodelist.insert(node2)

        assert nodelist.prev_neighbor is node2
        assert nodelist._prev_node is node2
        assert nodelist.next_neighbor is node1
        assert nodelist._next_node is node1
Пример #3
0
    def test_misspecified_neighbors(self):
        nodelist = _NodeListRoot()

        node1 = GenericNode('node1')
        node2 = GenericNode('node2')
        node3 = GenericNode('node3')
        toinsert = GenericNode('toinsert')

        nodelist.insert(node1)
        nodelist.insert(node2)
        nodelist.insert(node3)

        with pytest.raises(exceptions.ListIntegrityError):
            nodelist.insert(toinsert, after=node1, before=node3)
Пример #4
0
    def test_insert_remove(self):
        nodelist1 = _NodeListRoot()
        nodelist2 = _NodeListRoot()

        node_before = GenericNode('node_before')
        node1 = GenericNode('node1')
        node_after = GenericNode('node_after')

        nodelist1.insert(node_before)
        nodelist1.insert(node1)
        nodelist1.insert(node_after)

        assert nodelist1._next_node is node_before
        assert node_before._prev_node is nodelist1
        assert node_before._next_node is node1
        assert node1._prev_node is node_before
        assert node1._next_node is node_after
        assert node_after._prev_node is node1
        assert node_after._next_node is nodelist1
        assert nodelist1._prev_node is node_after

        nodelist1.remove(node1)

        assert nodelist1._next_node is node_before
        assert node_before._prev_node is nodelist1
        assert node_before._next_node is node_after
        assert node_after._prev_node is node_before
        assert node_after._next_node is nodelist1
        assert nodelist1._prev_node is node_after

        nodelist2.insert(node1)

        assert nodelist2._next_node is node1
        assert node1._prev_node is nodelist2
        assert node1._next_node is nodelist2
        assert nodelist2._prev_node is node1
Пример #5
0
    def test_iteration(self):
        nodelist = _NodeListRoot()

        node1 = GenericNode('node1')
        node2 = GenericNode('node2')
        node3 = GenericNode('node3')
        nodelist.insert(node1)
        nodelist.insert(node2)
        nodelist.insert(node3)

        forward = [node1, node2, node3]
        reverse = [node3, node2, node1]

        for found, expected in izip_longest(nodelist, forward):
            assert found is expected

        for found, expected in izip_longest(reversed(nodelist), reverse):
            assert found is expected
Пример #6
0
    def test_insert_errors(self):
        nodelist = _NodeListRoot()

        node1 = GenericNode('node1')
        node2 = GenericNode('node2')
        loosenode = GenericNode('loosenode')

        nodelist.insert(node1)
        oldnext = node1._next_node
        node1._next_node = loosenode

        with pytest.raises(exceptions.ListIntegrityError):
            nodelist.insert(node2)

        node1._next_node = oldnext
        node1._prev_node = loosenode

        with pytest.raises(exceptions.ListIntegrityError):
            nodelist.insert(node2, after=nodelist)