예제 #1
0
        public void CircularDependency1()
        {
            var cache = new SimpleCache();

            Func<object> circular = () => cache.Resolve("urn:a", (a) => cache.Resolve("urn:b", (b) => cache.Resolve("urn:c", (c) => cache.Resolve("urn:a", (again) => new object()))));
            ExceptionAssert.Throws<CircularDependencyException>(() => circular());
        }
예제 #2
0
 public void CaseInsenstive()
 {
     var cache = new SimpleCache();
     var a = cache.Resolve("urn:x-test:foo2", (uri) => new object());
     var b = cache.Resolve("urn:x-test:FOO2", (uri) => new object());
     var c = cache.Resolve("urn:x-test:Foo2", (uri) => new object());
     Assert.AreSame(a, b);
     Assert.AreSame(a, c);
 }
예제 #3
0
        public void Invalidating()
        {
            const string id = "urn:x-test:invalidating";

            var cache = new SimpleCache();
            var a = cache.Resolve(id, (uri) => new object());
            cache.Invalidate(id);
            var b = cache.Resolve(id, (uri) => new object());
            var c = cache.Resolve(id, (uri) => new object());
            Assert.AreNotSame(a, b);
            Assert.AreSame(b, c);
        }
예제 #4
0
 public void Resolving()
 {
     var cache = new SimpleCache();
     Assert.AreEqual("foo", cache.Resolve("urn:x-test:foo", (uri) => "foo"));
 }
예제 #5
0
 public void SameObject()
 {
     var cache = new SimpleCache();
     var a = cache.Resolve("urn:x-test:foo1", (uri) => new object());
     var b = cache.Resolve("urn:x-test:foo1", (uri) => new object());
     var c = cache.Resolve("urn:x-test:foo1", (uri) => new object());
     Assert.AreSame(a, b);
     Assert.AreSame(a, c);
 }