예제 #1
0
        public void GivenFullVebTreeWhenRemoveNumberThenFindCantFindIt()
        {
            var tree = new VanEmdeBoasTree64();

            for (ulong i = 0; i < 1 << 17; i++)
            {
                tree.Add(i << 20);
            }
            for (ulong i = 0; i < 1 << 17; i++)
            {
                tree.Remove(i << 20);
                Assert.False(tree.Find(i));
            }
            for (ulong i = 0; i < 1 << 17; i++)
            {
                tree.Add(i << 20);
            }
            for (ulong i = 0; i < 1 << 17; i++)
            {
                var toRemove = (1 << 37) - 1 - (i << 20);
                tree.Remove(toRemove);
                Assert.False(tree.Find(toRemove));
            }
        }
예제 #2
0
        public void GivenRandomFilledTreeWhenRemoveThenMatchesArrayState()
        {
            var tree = new VanEmdeBoasTree64();
            var rand = new Random();
            var arr  = new bool[1 << 17];

            for (int i = 0; i < 1 << 7; i++)
            {
                var elem = (ulong)rand.Next(1 << 17);
                arr[elem] = true;
                tree.Add(elem);
            }

            for (int i = 0; i < 1 << 7; i++)
            {
                var elem = (ulong)rand.Next(1 << 17);
                Assert.Equal(arr[elem], tree.Remove(elem));
                arr[elem] = false;
            }
        }