public void CanEnsureSingletonForTypeWithDifferentConstructor() { var data = new ContextData(new DictionaryContextProvider()); var sample1 = data.Singleton<Sample>(() => new Sample(1)); var sample2 = data.Singleton<Sample>(() => new Sample(1)); sample1.Should().Be.SameInstanceAs(sample2); }
public void CanCheckForSingletonExistence() { var data = new ContextData(new DictionaryContextProvider()); data.ContainsSingleton<Sample>().Should().Be(false); var sample1 = data.Singleton<Sample>(() => new Sample(1)); data.ContainsSingleton<Sample>().Should().Be(true); }
public void CanEnsureSingletonUsingThreadProvider() { var data = new ContextData(new ThreadDataProvider()); var sample1 = data.Singleton<SampleDefault>(); var thread = new Thread(() => { var inside1 = data.Singleton<SampleDefault>(); var inside2 = data.Singleton<SampleDefault>(); inside1.Should().Not.Be.SameInstanceAs(sample1); inside2.Should().Be.SameInstanceAs(inside2); }); thread.Start(); thread.Join(1000); var sample2 = data.Singleton<SampleDefault>(); sample1.Should().Be.SameInstanceAs(sample2); }