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)); } }
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; } }