public void RedBlackBSTTest3() { Alphabet alpha = Alphabet.LowerCase; // ab..z Random rnd = new Random(); RedBlackBST <int, char> bst = new RedBlackBST <int, char>(); int[] keys = new int[32]; for (int i = 0; i < keys.Length; i++) { keys[i] = i * 2; int index = rnd.Next(alpha.Radix); bst[keys[i]] = alpha.ToChar(index); } int min = keys.Min(); int max = keys.Max(); Assert.AreEqual(max, bst.Max); Assert.AreEqual(min, bst.Min); int ceiling = keys.First(n => n >= min + 1); int floor = keys.Last(n => n <= max - 1); Assert.AreEqual(ceiling, bst.Ceiling(min + 1)); Assert.AreEqual(floor, bst.Floor(max - 1)); int ith = 3; Assert.AreEqual(ith, bst.Rank(ith * 2)); Assert.AreEqual(keys.Length - ith, bst.Size(ith * 2, (keys.Length - 1) * 2)); }