public void RemoveRight() { //**************************************** var Seed = Environment.TickCount; var Random = new Random(Seed); //**************************************** var Dictionary = new Dictionary <int, int>(1024); foreach (var(Left, Right) in YieldRandom(Random, 1024)) { Dictionary.Add(Left, Right); } var Records = BiDictionary.FromInverse(Dictionary); //**************************************** for (var Index = 0; Index < 512; Index++) { var InnerIndex = Random.Next(Records.Count); var Key = Records.Rights[InnerIndex]; Assert.IsTrue(Records.Inverse.Remove(Key)); Assert.IsTrue(Dictionary.Remove(Key)); } //**************************************** Assert.AreEqual(512, Records.Count, "Count incorrect. Bad Seed was {0}", Seed); CollectionAssert.AreEquivalent(Dictionary, Records.Inverse, "Collections don't match. Bad Seed was {0}", Seed); foreach (var MyPair in Dictionary) { Assert.IsTrue(Records.TryGetLeft(MyPair.Key, out var Value)); Assert.AreEqual(MyPair.Value, Value); } }