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 _)); }
public void GivenEmptyTreeWhenTryGetPrevReturnsFalse() { var tree = new VanEmdeBoasTree64(); Assert.False(tree.TryGetPrevious(ulong.MaxValue, out ulong _)); }