protected override void AssertIsValidEmptySet(IBoundedSet<object> set, int expectedUniverse)
 {
     var tree = (RsVanEmdeBoasTree<object>) set;
     Assert(tree.Universe == expectedUniverse);
     Assert(!tree.Min.HasValue);
     Assert(!tree.Max.HasValue);
     Assert(tree.Summary == null);
     Assert(!tree.Clusters.Any());
 }
        protected override void AssertIsValidEmptySet(IBoundedSet<object> set, int expectedUniverse)
        {
            var tree = (VanEmdeBoasTree<object>)set;
            Assert(tree.Universe == expectedUniverse);
            Assert(!tree.Min.HasValue);
            Assert(!tree.Max.HasValue);

            if (expectedUniverse <= 2)
            {
                Assert(tree.Summary == null);
            }
            else
            {
                AssertIsValidEmptySet(tree.Summary, (int)Math.Pow(2, Math.Ceiling(Math.Log(expectedUniverse, 2) / 2)));
                Assert(tree.Clusters.All(x => x != null));
                var lowSqrt = (int)Math.Pow(2, Math.Floor(Math.Log(expectedUniverse, 2) / 2));
                foreach (var cluster in tree.Clusters)
                    AssertIsValidEmptySet(cluster, lowSqrt);
            }
        }
 protected abstract void AssertIsValidEmptySet(IBoundedSet<object> set, int expectedUniverse);
 protected override void AssertIsValidEmptySet(IBoundedSet<object> set, int expectedUniverse)
 {
     var tree = (ProtoYFastTree<object>) set;
     Assert(tree.Min == null && tree.Max == null);
 }