def test_put_withCompareFunctionAnddNoneTypeArgumentValue_shouldRemoveAssociatedKeyFromBSTDecreaseLengthAndMaintainBalanceFactor( self): bst = AVLTree(self.cmp) bst.put([0, 0], 1) bst.put([0, 1], 2) bst.put([0, 2], 3) bst.put([0, 3], 4) self.assertIn([0, 1], bst) self.assertEqual(4, len(bst)) self.assertEqual(2, bst.height()) bst.put([0, 1], None) self.assertNotIn([0, 1], bst) self.assertEqual(3, len(bst)) self.assertEqual(1, bst.height())
def test_put_withNoneTypeArgumentValue_shouldRemoveAssociatedKeyFromBSTDecreaseLengthAndMaintainBalanceFactor( self): bst = AVLTree() bst.put("A", 1) bst.put("B", 2) bst.put("C", 3) bst.put("D", 4) self.assertIn("A", bst) self.assertEqual(4, len(bst)) self.assertEqual(2, bst.height()) bst.put("A", None) self.assertNotIn("A", bst) self.assertEqual(3, len(bst)) self.assertEqual(1, bst.height())
def test_delete_withKeyInBST_shouldDeleteKeyFromBSTDecreaseLengthAndMaintainBalanceFactor( self): bst = AVLTree() bst.put("A", 1) bst.put("B", 2) bst.put("C", 3) bst.put("D", 4) self.assertEqual(2, bst.height()) bst.delete("A") self.assertEqual(3, len(bst)) self.assertEqual(1, bst.height()) bst.delete("C") self.assertEqual(2, len(bst)) self.assertEqual(1, bst.height())
def test_delete_withCompareFunctionAndKeyInBST_shouldDeleteKeyFromBSTDecreaseLengthAndMaintainBalanceFactor( self): bst = AVLTree(self.cmp) bst.put([0, 0], 1) bst.put([0, 1], 2) bst.put([0, 2], 3) bst.put([0, 3], 4) self.assertEqual(2, bst.height()) bst.delete([0, 1]) self.assertEqual(3, len(bst)) self.assertEqual(1, bst.height()) bst.delete([0, 2]) self.assertEqual(2, len(bst)) self.assertEqual(1, bst.height())
def test_put_withCompareFunctionAndKeyNotInBST_shouldAddNewKeyIncreaseBSTLengthAndMaintainBalanceFactor( self): bst = AVLTree(self.cmp) self.assertEqual(0, len(bst)) bst.put([0, 0], 0) self.assertEqual(1, len(bst)) self.assertEqual(0, bst.height()) bst.put([0, 1], 0) self.assertEqual(2, len(bst)) self.assertEqual(1, bst.height()) bst.put([0, -1], 0) self.assertEqual(3, len(bst)) self.assertEqual(1, bst.height()) bst.put([-1, 1], 0) self.assertEqual(4, len(bst)) self.assertEqual(2, bst.height())
def test_put_withKeyNotInBST_shouldAddNewKeyIncreaseBSTLengthAndMaintainBalanceFactor( self): bst = AVLTree() self.assertEqual(0, len(bst)) bst.put(10, 0) self.assertEqual(1, len(bst)) self.assertEqual(0, bst.height()) bst.put(20, 0) self.assertEqual(2, len(bst)) self.assertEqual(1, bst.height()) bst.put(30, 0) self.assertEqual(3, len(bst)) self.assertEqual(1, bst.height()) bst.put(40, 0) self.assertEqual(4, len(bst)) self.assertEqual(2, bst.height()) bst.put(50, 0) self.assertEqual(5, len(bst)) self.assertEqual(2, bst.height()) bst.put(25, 0) self.assertEqual(6, len(bst)) self.assertEqual(2, bst.height())
def test_height_withNotEmptyBST_shouldReturnHeightOfBST(self): bst = AVLTree() bst.put(10, 0) self.assertEqual(0, bst.height()) bst.put(20, 0) self.assertEqual(1, bst.height()) bst.put(30, 0) self.assertEqual(1, bst.height()) bst.put(40, 0) self.assertEqual(2, bst.height()) bst.put(50, 0) self.assertEqual(2, bst.height()) bst.put(25, 0) self.assertEqual(2, bst.height())
def test_height_withOneNodeBST_shouldReturnZero(self): bst = AVLTree() bst.put("A", 0) self.assertEqual(0, bst.height())