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); } }