コード例 #1
0
        public void release_from_the_cache()
        {
            var cache = new TrackingTransientCache();

            var instance = new SmartInstance<Target>();
            var session = new FakeBuildSession();

            var t1 = cache.Get(typeof(Target), instance, session).As<Target>();
            var t2 = cache.Get(typeof(Target), instance, session).As<Target>();
            var t3 = cache.Get(typeof(Target), instance, session).As<Target>();

            // pre-conditions
            t2.WasDisposed.ShouldBeFalse();
            cache.Tracked.ShouldHaveTheSameElementsAs(t1, t2, t3);


            cache.Release(t2);

            // only t2 should be disposed
            t1.WasDisposed.ShouldBeFalse();
            t2.WasDisposed.ShouldBeTrue();
            t3.WasDisposed.ShouldBeFalse();

            // t2 should be removed from tracked
            cache.Tracked.ShouldHaveTheSameElementsAs(t1, t3);
        }