Ejemplo n.º 1
0
Archivo: test_BST.py Proyecto: yc0/ands
 def test_is_right_child(self):
     a = _BSTNode(3)
     b = _BSTNode(4)
     a.right = b
     b.parent = a
     self.assertFalse(b.is_left_child())
     self.assertTrue(b.is_right_child())
Ejemplo n.º 2
0
Archivo: test_BST.py Proyecto: yc0/ands
 def test_comparison_when_values_are_of_different_types(self):
     a = _BSTNode(12)
     b = _BSTNode(14)
     with self.assertRaises(TypeError):
         a < b
     with self.assertRaises(TypeError):
         a >= b
Ejemplo n.º 3
0
Archivo: test_BST.py Proyecto: yc0/ands
 def test_set_both_children(self):
     a = _BSTNode(12)
     a.left = _BSTNode(11)
     a.right = _BSTNode(13)
     self.assertEqual(a.count(), 3)
     self.assertTrue(a.has_children())
     self.assertFalse(a.has_one_child())
     self.assertTrue(a.has_two_children())
Ejemplo n.º 4
0
Archivo: test_BST.py Proyecto: yc0/ands
    def test_set_right_child(self):
        a = _BSTNode(12)
        b = _BSTNode(28)
        a.right = b

        self.assertIs(a.right, b)
        self.assertEqual(a.count(), 2)
        self.assertIsNone(b.parent)

        self.assertTrue(a.has_children())
        self.assertTrue(a.has_one_child())
        self.assertFalse(a.has_two_children())
Ejemplo n.º 5
0
Archivo: test_BST.py Proyecto: yc0/ands
    def test_set_parent(self):
        a = _BSTNode(12)
        b = _BSTNode(14)
        b.parent = a

        self.assertIs(b.parent, a)
        self.assertEqual(a.count(), 1)
        self.assertIsNone(a.parent)
        self.assertIsNone(a.left)
        self.assertIsNone(a.right)

        # If we just set the parent of a node
        # the parent does NOT automatically have children.
        self.assertFalse(a.has_children())
        self.assertFalse(a.has_one_child())
        self.assertFalse(a.has_two_children())
Ejemplo n.º 6
0
Archivo: test_BST.py Proyecto: yc0/ands
 def test_when_no_parent(self):
     n = _BSTNode(12)
     self.assertRaises(AttributeError, n.is_left_child)
     self.assertRaises(AttributeError, n.is_right_child)
     self.assertIsNone(n.sibling)
     self.assertIsNone(n.grandparent)
     self.assertIsNone(n.uncle)
Ejemplo n.º 7
0
Archivo: test_BST.py Proyecto: yc0/ands
 def test_create_default(self):
     n = _BSTNode(12)
     self.assertEqual(n.key, 12)
     self.assertIsNone(n.left)
     self.assertIsNone(n.right)
     self.assertIsNone(n.parent)
     self.assertEqual(n.count(), 1)
Ejemplo n.º 8
0
Archivo: test_BST.py Proyecto: yc0/ands
    def test_uncle(self):
        n = _BSTNode(12)
        p = _BSTNode(14)
        g = _BSTNode(28)

        n.parent = p
        p.left = n
        p.parent = g
        g.right = p

        self.assertIsNotNone(n.parent)
        self.assertIsNotNone(n.grandparent)
        self.assertIsNone(n.sibling)
        self.assertIsNone(n.uncle)

        u = _BSTNode(7)
        g.left = u
        u.parent = g

        self.assertIsNotNone(n.uncle)
        self.assertIs(n.uncle, u)
Ejemplo n.º 9
0
Archivo: test_BST.py Proyecto: yc0/ands
    def test_grandparent(self):
        a = _BSTNode(12)
        b = _BSTNode(14)
        c = _BSTNode(28)

        self.assertIsNone(a.grandparent)
        self.assertIsNone(b.grandparent)
        self.assertIsNone(c.grandparent)

        b.left = a
        a.parent = b

        self.assertIsNone(a.grandparent)

        c.right = b
        b.parent = c

        self.assertIsNone(b.grandparent)
        self.assertIsNotNone(b.parent)
        self.assertIsNone(c.grandparent)
        self.assertIsNotNone(a.grandparent)
        self.assertIs(a.grandparent, c)
Ejemplo n.º 10
0
Archivo: test_BST.py Proyecto: yc0/ands
    def test_sibling(self):
        p = _BSTNode(12)
        l = _BSTNode(14)
        r = _BSTNode(28)

        self.assertIsNone(r.sibling)
        self.assertIsNone(l.sibling)

        p.left = l
        p.right = r
        l.parent = p
        r.parent = p

        self.assertIs(l.sibling, r)
        self.assertIs(r.sibling, l)

        # Without the parent pointers to its children,
        # we can't determine if the children are siblings.
        p.left = None

        self.assertIsNone(r.sibling)
        self.assertIsNone(l.sibling)
Ejemplo n.º 11
0
Archivo: test_BST.py Proyecto: yc0/ands
 def test_when_no_children(self):
     n = _BSTNode(12)
     self.assertFalse(n.has_children())
     self.assertFalse(n.has_one_child())
     self.assertFalse(n.has_two_children())