public void TestEnumeration()
        {
            var options = Options;

            options.BTreeOrder = 4;
            using (BPlusTree <int, string> data = new BPlusTree <int, string>(options))
            {
                data.EnableCount();

                data.DebugSetOutput(new StringWriter());
                data.DebugSetValidateOnCheckpoint(true);

                for (int id = 0; id < 10; id++)
                {
                    data.Add(id, id.ToString());
                }

                using (IEnumerator <KeyValuePair <int, string> > enu = data.GetEnumerator())
                {
                    Assert.IsTrue(enu.MoveNext());
                    Assert.AreEqual(0, enu.Current.Key);

                    for (int id = 2; id < 10; id++)
                    {
                        Assert.IsTrue(data.Remove(id));
                    }
                    for (int id = 6; id < 11; id++)
                    {
                        data.Add(id, id.ToString());
                    }

                    Assert.IsTrue(enu.MoveNext());
                    Assert.AreEqual(1, enu.Current.Key);
                    Assert.IsTrue(enu.MoveNext());
                    Assert.AreEqual(6, enu.Current.Key);
                    Assert.IsTrue(enu.MoveNext());
                    Assert.AreEqual(7, enu.Current.Key);
                    Assert.IsTrue(data.Remove(8));
                    Assert.IsTrue(data.Remove(9));
                    Assert.IsTrue(data.Remove(10));
                    data.Add(11, 11.ToString());
                    Assert.IsTrue(enu.MoveNext());
                    Assert.AreEqual(11, enu.Current.Key);
                    Assert.IsTrue(false == enu.MoveNext());
                }
                data.Clear();
            }
        }
        public void RandomSequenceTest()
        {
            int iterations = 5;
            int limit      = 255;

            using (BPlusTree <int, string> data = Create(Options))
            {
                data.EnableCount();

                List <int> numbers = new List <int>();
                while (iterations-- > 0)
                {
                    data.Clear();
                    numbers.Clear();
                    data.DebugSetValidateOnCheckpoint(true);

                    for (int i = 0; i < limit; i++)
                    {
                        int id = Random.Next(limit);
                        if (!numbers.Contains(id))
                        {
                            numbers.Add(id);
                            data.Add(id, "V" + id);
                        }
                    }

                    Assert.AreEqual(numbers.Count, data.Count);

                    foreach (int number in numbers)
                    {
                        Assert.IsTrue(data.Remove(number));
                    }

                    Assert.AreEqual(0, data.Count);
                }
            }
        }