public void TestAdd()
        {
            HashedCollection<SampleClass> collection = new HashedCollection<SampleClass>((item) => item.Hash);

            collection.Add(new SampleClass("XXX"));
            collection.Add(new SampleClass("XXX"));
            collection.Add(new SampleClass("YYY"));

            Assert.AreEqual(3, collection.Count);
        }
        public void TestContainsWithEquals()
        {
            HashedCollection<SampleClassWithEquals> collection = new HashedCollection<SampleClassWithEquals>((item) => item.Hash);

            var i1 = new SampleClassWithEquals("XXX");
            var i2 = new SampleClassWithEquals("YYY");
            var i3 = new SampleClassWithEquals("ZZZ");

            collection.Add(new SampleClassWithEquals("XXX"));
            collection.Add(new SampleClassWithEquals("YYY"));

            Assert.IsFalse(collection.Contains(i3));
            Assert.IsTrue(collection.Contains(i1));
            Assert.IsTrue(collection.Contains(i2));
        }
        public void TestRemove()
        {
            HashedCollection<SampleClass> collection = new HashedCollection<SampleClass>((item) => item.Hash);

            var i1 = new SampleClass("XXX");
            var i2 = new SampleClass("YYY");

            collection.Add(i1);
            collection.Add(i2);

            Assert.AreEqual(2, collection.Count);

            collection.Remove(i1);
            collection.Remove(i2);

            Assert.AreEqual(0, collection.Count);
        }