public void RetrieveNonExistingSingleton()
 {
     using (var singleton = new MyDisposable())
     {
         SingletonsContainer.Add(singleton);
         Assert.IsNull(SingletonsContainer.Item("bla"));
     }
 }
 public void AddingTwiceThrowsException()
 {
     using (var singleton = new MyDisposable())
     {
         SingletonsContainer.Add(singleton);
         Assert.Throws(typeof(ArgumentException), () => SingletonsContainer.Add(singleton));
     }
 }
 public void RetrieveSingleton()
 {
     using (var singleton = new MyDisposable())
     {
         SingletonsContainer.Add(singleton);
         Assert.AreSame(singleton, SingletonsContainer.Item(typeof(MyDisposable).FullName));
     }
 }
 public void GetExistingWithCreateFunc()
 {
     using (var existingSingleton = new MyDisposable())
     {
         SingletonsContainer.Add("foo", existingSingleton);
         var singleton = SingletonsContainer.Get("foo", () => new MyDisposable());
         Assert.AreSame(existingSingleton, singleton);
     }
 }
 public void GetExistingWrongKey()
 {
     using (var existingSingleton = new Control())
     {
         SingletonsContainer.Add("foo", existingSingleton);
         Assert.Throws(typeof(InvalidCastException),
                       () => SingletonsContainer.Get <MyDisposable>("foo"));
     }
 }
 public void GetExistingWithKey()
 {
     using (var existingSingleton = new MyDisposable())
     {
         SingletonsContainer.Add("foo", existingSingleton);
         var singleton = SingletonsContainer.Get <MyDisposable>("foo");
         Assert.AreSame(existingSingleton, singleton);
     }
 }
 public void RemoveNonExistingSingleton()
 {
     using (var singleton = new MyDisposable())
     {
         SingletonsContainer.Add("foo", singleton);
         Assert.IsFalse(SingletonsContainer.Remove("bar"));
         Assert.AreSame(singleton, SingletonsContainer.Item("foo"));
     }
 }
 public void RemoveSingleton()
 {
     using (var singleton = new MyDisposable())
     {
         SingletonsContainer.Add("foo", singleton);
         Assert.IsTrue(SingletonsContainer.Remove("foo"));
         Assert.IsFalse(singleton.DisposeCalled);
         Assert.IsNull(SingletonsContainer.Item("foo"));
     }
 }
        public void SingletonProperlyDisposedAutoKey()
        {
            using (var singleton = new MyDisposable())
            {
                SingletonsContainer.Add(singleton);

                Assert.IsFalse(singleton.DisposeCalled);

                // Simulate application exit
                SingletonsContainer.Release();
                Assert.IsTrue(singleton.DisposeCalled);
            }
        }