Пример #1
0
        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));
        }