コード例 #1
0
        public void GivenRandomPopulatedTreeWhenGetPrevReturnsCorrectValue()
        {
            var tree = new VanEmdeBoasTree64();
            var rand = new Random();
            var list = new List <ulong>();

            for (int i = 0; i < 1 << 17; i++)
            {
                var elem = GetRandomUlong(rand);
                list.Add(elem);
                tree.Add(elem);
            }
            var arr = list.OrderByDescending(x => x).Distinct().ToArray();

            if (arr[0] != ulong.MaxValue)
            {
                Assert.True(tree.TryGetPrevious(ulong.MaxValue, out ulong res));
                Assert.Equal(arr[0], res);
            }
            for (int i = 1; i < arr.Length - 1; i++)
            {
                if (arr[i - 1] - arr[i] > 1)
                {
                    Assert.True(tree.TryGetPrevious((arr[i - 1] - arr[i]) / 2 + arr[i], out ulong prev));
                    Assert.Equal(arr[i], prev);
                }
                Assert.True(tree.TryGetPrevious(arr[i - 1], out ulong res));
                Assert.Equal(arr[i], res);
            }
            Assert.False(tree.TryGetPrevious(arr[arr.Length - 1], out ulong _));
        }
コード例 #2
0
        public void GivenEmptyTreeWhenTryGetPrevReturnsFalse()
        {
            var tree = new VanEmdeBoasTree64();

            Assert.False(tree.TryGetPrevious(ulong.MaxValue, out ulong _));
        }