Example #1
0
        public void Test_InnerNode_Redistribute()
        {
            var child = new InnerNode<int, int>(4);
            var sibling = new InnerNode<int, int>(4);

            child.Keys.Add(1);
            var childLeaf = new LeafNode<int, int>(4);
            childLeaf.Keys.Add(1);
            childLeaf.Values.Add(new List<int>());
            childLeaf.Values[0].Add(1);
            child.Children.Add(childLeaf);

            sibling.Keys.Add(2);
            var siblingChild1 = new LeafNode<int, int>(4);
            siblingChild1.Keys.Add(2);
            siblingChild1.Values.Add(new List<int>());
            siblingChild1.Values[0].Add(2);

            siblingChild1.Keys.Add(3);
            siblingChild1.Values.Add(new List<int>());
            siblingChild1.Values[1].Add(3);

            sibling.Children.Add(siblingChild1);

            sibling.Keys.Add(4);
            var siblingChild2 = new LeafNode<int, int>(4);
            siblingChild2.Keys.Add(4);
            siblingChild2.Values.Add(new List<int>());
            siblingChild2.Values[0].Add(4);
            siblingChild2.Keys.Add(5);
            siblingChild2.Values.Add(new List<int>());
            siblingChild2.Values[1].Add(5);
            sibling.Children.Add(siblingChild2);

            sibling.Keys.Add(6);
            var siblingChild3 = new LeafNode<int, int>(4);
            siblingChild3.Keys.Add(6);
            siblingChild3.Values.Add(new List<int>());
            siblingChild3.Values[0].Add(6);
            siblingChild3.Keys.Add(7);
            siblingChild3.Values.Add(new List<int>());
            siblingChild3.Values[1].Add(7);
            sibling.Children.Add(siblingChild3);

            child.Redistribute(sibling, -1);

            Assert.AreEqual(2, sibling.Children.Count);
            Assert.AreEqual(2, sibling.Keys.Count);
            Assert.AreEqual(2, child.Keys.Count);
            Assert.AreEqual(2, child.Children.Count);
        }