Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }