public void ContractCollectionGarbageCollects() { var contractCollection = new ContractCollection(); var s1 = (Contract)contractCollection.GetOrAddReadContract(typeof(Person)); var s2 = (Contract)contractCollection.GetOrAddReadContract(typeof(Wrapper <Person>)); Assert.Equal(4, contractCollection.Contracts.Count); Assert.True(contractCollection.Contracts.Contains(s1)); Assert.True(contractCollection.Contracts.Contains(s2)); contractCollection.GarbageCollect(new[] { s2 }); Assert.Equal(4, contractCollection.Contracts.Count); Assert.True(contractCollection.Contracts.Contains(s1)); Assert.True(contractCollection.Contracts.Contains(s2)); contractCollection.GarbageCollect(new[] { s1 }); Assert.Equal(3, contractCollection.Contracts.Count); Assert.True(contractCollection.Contracts.Contains(s1)); Assert.False(contractCollection.Contracts.Contains(s2)); contractCollection.GarbageCollect(new Contract[0]); Assert.Equal(0, contractCollection.Contracts.Count); Assert.False(contractCollection.Contracts.Contains(s1)); Assert.False(contractCollection.Contracts.Contains(s2)); }