public void DuplicateTest()
{
var t = new RedBlackTree<int, string>();
var collection = t as ICollection<KeyValuePair<int, string>>;
var values = collection.ToArray();
Assert.AreEqual(0, values.Length);
t.Add(new KeyValuePair<int, string>(1, "1"));
values = collection.ToArray();
Assert.AreEqual(1, values.Length);
t.Add(new KeyValuePair<int, string>(2, "2"));
values = collection.ToArray();
Assert.AreEqual(2, values.Length);
Assert.AreEqual("1", values[0].Value);
Assert.AreEqual("2", values[1].Value);
t.Add(new KeyValuePair<int, string>(1, "bla"));
values = collection.ToArray();
Assert.AreEqual(2, values.Length);
Assert.AreEqual("bla", values[0].Value);
Assert.AreEqual("2", values[1].Value);
var node1 = t.Remove(new KeyValuePair<int, string>(1, "-"));
Assert.IsNotNull(node1);
values = collection.ToArray();
Assert.AreEqual(1, values.Length);
Assert.AreEqual("2", values[0].Value);
var node2 = t.Remove(new KeyValuePair<int, string>(1, "-"));
Assert.IsNull(node2);
values = collection.ToArray();
Assert.AreEqual(1, values.Length);
Assert.AreEqual("2", values[0].Value);
var node3 = t.Remove(new KeyValuePair<int, string>(2, "-"));
values = collection.ToArray();
Assert.AreEqual(0, values.Length);
}