public void WithActivationFunction_DifferentObjectsPerThreadAreReturned()
        {
            var lifecycle = new LightCore.Lifecycle.ThreadSingletonLifecycle();
            var factory = this.GetActivationFactory();

            var threadData = new ThreadData(lifecycle, factory);
            var thread = new Thread(threadData.ResolveFoosWithLifecycle);

            var threadDataTwo = new ThreadData(lifecycle, factory);
            var threadTwo = new Thread(threadDataTwo.ResolveFoosWithLifecycle);

            thread.Start();
            threadTwo.Start();

            thread.Join();
            threadTwo.Join();

            Assert.IsTrue(ReferenceEquals(threadData.FooOne, threadData.FooTwo));
            Assert.IsFalse(ReferenceEquals(threadData.FooOne, threadDataTwo.FooOne));
        }
        public void WithActivationFunction_DifferentObjectsPerThreadAreReturned()
        {
            var lifecycle = new LightCore.Lifecycle.ThreadSingletonLifecycle();
            var factory   = this.GetActivationFactory();

            var threadData = new ThreadData(lifecycle, factory);
            var thread     = new Thread(threadData.ResolveFoosWithLifecycle);

            var threadDataTwo = new ThreadData(lifecycle, factory);
            var threadTwo     = new Thread(threadDataTwo.ResolveFoosWithLifecycle);

            thread.Start();
            threadTwo.Start();

            thread.Join();
            threadTwo.Join();

            threadData.FooOne.Should().Be(threadData.FooTwo);
            threadData.FooOne.Should().NotBe(threadDataTwo.FooOne);
        }