예제 #1
0
def test_delete_on_complex_tree():
    """Test that the selected node is deleted."""
    from bst import Bst
    nodes = [10, 9, 15, 2, 6, 12, 20, 1, 3]
    new_bst = Bst()
    for item in nodes:
        new_bst.insert(item)
    new_bst.delete(2)
    assert new_bst.contains(2) is False
예제 #2
0
def test_delete_on_range():
    """Test that the node selected is removed from the tree."""
    from bst import Bst
    new_bst = Bst()
    for items in range(20):
        new_bst.insert(items)
    new_bst.delete(10)
    assert new_bst.contains(10) is False
    assert new_bst.size == 19
예제 #3
0
def test_delete():
    """Test that the selected node is deleted."""
    from bst import Bst
    new_bst = Bst()
    new_bst.insert(1)
    new_bst.delete(1)
    assert new_bst.contains(1) is False
    assert new_bst.head is None
    assert new_bst.size == 0
예제 #4
0
def test_edge_cases_delete_tree():
    """Test deletion on tree from EdgeCases example tree."""
    from bst import Bst
    new_bst = Bst()
    new_bst.insert(10)
    new_bst.insert(20)
    new_bst.insert(5)
    new_bst.delete(10)
    assert new_bst.contains(10) is False
    assert new_bst.size == 2
    assert new_bst.head.value == 20
    assert new_bst.head.right is None
    assert new_bst.head.left.value == 5
예제 #5
0
def test_delete_on_small_range():
    """Test that the node selected is removed from the tree."""
    from bst import Bst
    new_bst = Bst()
    for items in range(5):
        new_bst.insert(items)
    new_bst.delete(1)
    assert new_bst.contains(1) is False
    assert new_bst.size == 4
    assert new_bst.head.value == 2
    assert new_bst.head.left.value == 0
    assert new_bst.head.right.value == 3
    assert new_bst.head.right.right.value == 4
예제 #6
0
def test_off_balance_delete_tree_non_head():
    """Test deletion on tree from complex tree."""
    from bst import Bst
    new_bst = Bst()
    new_bst.insert(10)
    new_bst.insert(20)
    new_bst.insert(5)
    new_bst.insert(15)
    new_bst.insert(25)
    new_bst.delete(20)
    assert new_bst.contains(20) is False
    assert new_bst.size == 4
    assert new_bst.head.value == 10
    assert new_bst.head.right.value == 25
    assert new_bst.head.left.value == 5
    assert new_bst.head.right.left.value == 15
예제 #7
0
    def test_contains(self):
        # Test with a root only
        tree = root_only()

        self.assertFalse(tree.isempty())
        self.assertEquals(tree.getsize(), 1)
        self.assertIsNotNone(tree.root)
        self.assertEquals(tree.root.getdata(), ROOT_DATA)

        # Should contain the root data
        self.assertTrue(tree.contains(ROOT_DATA))

        # Should not contain any of the children data
        self.assertFalse(tree.contains(LEFT_DATA))
        self.assertFalse(tree.contains(RIGHT_DATA))

        # Should not contain any of the grandchildren data
        self.assertFalse(tree.contains(LL_DATA))
        self.assertFalse(tree.contains(LR_DATA))
        self.assertFalse(tree.contains(RL_DATA))
        self.assertFalse(tree.contains(RR_DATA))

        tree.remove(ROOT_DATA)
        self.assertTrue(tree.isempty())
        self.assertIsNone(tree.root)
        self.assertFalse(tree.contains(ROOT_DATA))

        # Now test with the balanced tree
        tree = balanced_tree()

        self.assertFalse(tree.isempty())
        self.assertEquals(tree.getsize(), 7)
        self.assertIsNotNone(tree.root)
        self.assertEquals(tree.root.getdata(), ROOT_DATA)

        # Should contain the root data
        self.assertTrue(tree.contains(ROOT_DATA))

        # Should not contain any of the children data
        self.assertTrue(tree.contains(LEFT_DATA))
        self.assertTrue(tree.contains(RIGHT_DATA))

        # Should not contain any of the grandchildren data
        self.assertTrue(tree.contains(LL_DATA))
        self.assertTrue(tree.contains(LR_DATA))
        self.assertTrue(tree.contains(RL_DATA))
        self.assertTrue(tree.contains(RR_DATA))

        TO_ADD_DATA = 50

        self.assertFalse(tree.contains(TO_ADD_DATA))
        tree.add(TO_ADD_DATA)
        self.assertTrue(tree.getsize(), 8)
        self.assertTrue(tree.contains(TO_ADD_DATA))

        # Finally, test with an empty tree
        tree = Bst()

        self.assertTrue(tree.isempty())
        self.assertIsNone(tree.root)

        # Should not contain the root data
        self.assertFalse(tree.contains(ROOT_DATA))

        # Should not contain any of the children data
        self.assertFalse(tree.contains(LEFT_DATA))
        self.assertFalse(tree.contains(RIGHT_DATA))

        # Should not contain any of the grandchildren data
        self.assertFalse(tree.contains(LL_DATA))
        self.assertFalse(tree.contains(LR_DATA))
        self.assertFalse(tree.contains(RL_DATA))
        self.assertFalse(tree.contains(RR_DATA))
예제 #8
0
def test_contain_false():
    """Test if value in list return False."""
    from bst import Bst
    new_bst = Bst()
    new_bst.insert(3)
    assert new_bst.contains(4) is False
예제 #9
0
def test_contain_true():
    """Test if value in list return True."""
    from bst import Bst
    new_bst = Bst()
    new_bst.insert(3)
    assert new_bst.contains(3) is True