public void Insert_SeveralKeys_ExpectsTreeToIncreaseInLevelsAfewTimes() { var tree = new BPlusTree <int, string>(3); BTreeTestsUtils.HasBPlusTreeProperties(tree, 0, 0, 0); tree.Insert(new KeyValuePair <int, string>(50, "A")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 2, 1, 2); tree.Insert(new KeyValuePair <int, string>(10, "B")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 3, 2, 2); tree.Insert(new KeyValuePair <int, string>(100, "C")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 4, 3, 3); tree.Insert(new KeyValuePair <int, string>(200, "D")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 5, 4, 3); tree.Insert(new KeyValuePair <int, string>(20, "E")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 7, 5, 4); tree.Insert(new KeyValuePair <int, string>(300, "F")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 9, 6, 7); tree.Insert(new KeyValuePair <int, string>(30, "G")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 10, 7, 7); tree.Insert(new KeyValuePair <int, string>(500, "H")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 11, 8, 7); tree.Insert(new KeyValuePair <int, string>(250, "I")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 13, 9, 8); tree.Insert(new KeyValuePair <int, string>(400, "J")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 14, 10, 8); tree.Insert(new KeyValuePair <int, string>(270, "K")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 16, 11, 10); tree.Insert(new KeyValuePair <int, string>(600, "L")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 18, 12, 11); tree.Insert(new KeyValuePair <int, string>(150, "M")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 20, 13, 12); tree.Insert(new KeyValuePair <int, string>(80, "N")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 22, 14, 16); tree.Insert(new KeyValuePair <int, string>(60, "O")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 24, 15, 17); tree.Insert(new KeyValuePair <int, string>(90, "P")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 25, 16, 17); Assert.AreEqual(1, tree.Root.KeyCount); Assert.AreEqual(150, tree.Root.GetKeyValue(0).Key); Assert.AreEqual(default(string), tree.Root.GetKeyValue(0).Value, ignoreCase: true); }
public void Delete_TheOnlyKeyInTree_ExpectsNoNodeAndNoKeyAfter() { var tree = new BPlusTree <int, string>(3); tree.Insert(new KeyValuePair <int, string>(10, "A")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 2, 1, 2); /* Deleting the only key in the only leaf node of the tree. */ Assert.IsTrue(tree.Delete(10)); BTreeTestsUtils.HasBPlusTreeProperties(tree, 0, 0, 0); }
public void Delete_TheOnlyKeyInLeafNode_ExpectsToTriggerLeftRotateAndReduceBy1Key() { var tree = new BPlusTree <int, string>(3); tree.Insert(new KeyValuePair <int, string>(10, "A")); tree.Insert(new KeyValuePair <int, string>(20, "B")); tree.Insert(new KeyValuePair <int, string>(30, "C")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 4, 3, 3); Assert.IsTrue(tree.Delete(10)); BTreeTestsUtils.HasBPlusTreeProperties(tree, 3, 2, 3); }
public void Delete_NonExistingKey_ExpectsFailure() { var tree = new BPlusTree <int, string>(3); tree.Insert(new KeyValuePair <int, string>(10, "A")); tree.Insert(new KeyValuePair <int, string>(100, "B")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 3, 2, 3); /* Deleting a non-existing key. */ Assert.IsFalse(tree.Delete(50)); BTreeTestsUtils.HasBPlusTreeProperties(tree, 3, 2, 3); }
public void Delete_BiggestKeyInTheOnlyLeafNodeOfTree_ExpectsToReduceBy1Key() { var tree = new BPlusTree <int, string>(3); tree.Insert(new KeyValuePair <int, string>(10, "A")); tree.Insert(new KeyValuePair <int, string>(100, "B")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 3, 2, 3); /* Deleting 1 out of 2 keys in the only leaf node of the tree. */ Assert.IsTrue(tree.Delete(100)); BTreeTestsUtils.HasBPlusTreeProperties(tree, 2, 1, 2); }
public void Delete_AllNodesInRandomOrder1_ExpectsProperBtreeAfterEachDelete() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); Assert.IsTrue(_tree.Delete(100)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 24, 15, 17); Assert.IsTrue(_tree.Delete(20)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 23, 14, 17); Assert.IsTrue(_tree.Delete(250)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 22, 13, 17); Assert.IsTrue(_tree.Delete(600)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 21, 12, 17); Assert.IsTrue(_tree.Delete(270)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 19, 11, 16); Assert.IsTrue(_tree.Delete(60)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 18, 10, 16); Assert.IsTrue(_tree.Delete(10)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 17, 9, 16); Assert.IsTrue(_tree.Delete(300)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 15, 8, 12); Assert.IsTrue(_tree.Delete(80)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 13, 7, 11); Assert.IsTrue(_tree.Delete(150)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 11, 6, 10); Assert.IsTrue(_tree.Delete(400)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 9, 5, 8); Assert.IsTrue(_tree.Delete(30)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 7, 4, 7); Assert.IsTrue(_tree.Delete(90)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 5, 3, 4); Assert.IsTrue(_tree.Delete(500)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 3, 2, 3); Assert.IsTrue(_tree.Delete(50)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 2, 1, 2); Assert.IsTrue(_tree.Delete(200)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 0, 0, 0); }
public void Delete_TheOnlyKeyInLeafNodeWithMinOneFullSibling_ExpectsToTriggerLeftRotate() { var tree = new BPlusTree <int, string>(3); tree.Insert(new KeyValuePair <int, string>(10, "A")); tree.Insert(new KeyValuePair <int, string>(20, "B")); tree.Insert(new KeyValuePair <int, string>(30, "C")); tree.Insert(new KeyValuePair <int, string>(40, "D")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 6, 4, 4); Assert.IsTrue(tree.Delete(10)); BTreeTestsUtils.HasBPlusTreeProperties(tree, 5, 3, 4); }
public void Delete_KeyInFullLeaf_ExpectsToReduceBy1Key() { var tree = new BPlusTree <int, string>(3); tree.Insert(new KeyValuePair <int, string>(10, "A")); tree.Insert(new KeyValuePair <int, string>(20, "B")); tree.Insert(new KeyValuePair <int, string>(30, "C")); tree.Insert(new KeyValuePair <int, string>(40, "D")); BTreeTestsUtils.HasBPlusTreeProperties(tree, 6, 4, 4); Assert.IsTrue(tree.Delete(30)); BTreeTestsUtils.HasBPlusTreeProperties(tree, 5, 3, 4); }
public void Build_ExpectsACorrectBPlusTree() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); }
public void Delete_TheSmallestKeyInAFullLeafNodeOfRightSubtree_ExpectsSimpleDeleteAndToReduceBy1Key() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); Assert.IsTrue(_tree.Delete(400)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 24, 15, 17); }
public void Delete_TheOnlyKeyInLeafNode_ExpectsRightRotationAndToReduceBy1Key() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); Assert.IsTrue(_tree.Delete(600)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 24, 15, 17); }
public void Delete_TheBiggestKeyInFullLeafNode_ExpectsSimpleDeleteAndToReduceBy1Key() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); Assert.IsTrue(_tree.Delete(100)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 24, 15, 17); }
public void Delete_TheSmallestKeyInFullLeafWith2Siblings_ExpectsSimpleDeleteAndToReduceBy1Key() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); Assert.IsTrue(_tree.Delete(90)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 24, 15, 17); }
public void Delete_TheBiggestKeyInLeftMostLeafOnLeftSubtree_ExpectsSimpleDeleteAndToReduceBy1Key() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); Assert.IsTrue(_tree.Delete(20)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 24, 15, 17); }
public void Delete_AKeyFromFullLeaf_ExpectsSimpleDeleteAndToReduceBy1Key() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); Assert.IsTrue(_tree.Delete(270)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 24, 15, 17); }
public void Delete_TheBiggestKeyInLeftSubTree_ExpectsRightRotateAndToReduceBy1Key() { BTreeTestsUtils.HasBPlusTreeProperties(_tree, 25, 16, 17); Assert.IsTrue(_tree.Delete(150)); BTreeTestsUtils.HasBPlusTreeProperties(_tree, 24, 15, 17); }