Esempio n. 1
0
        public void SeparatePerThread()
        {
            ThreadStaticLifestyle container = new ThreadStaticLifestyle();

            object instance = container.Locate((x, y) => new BasicService(),
                new FauxInjectionScope(),
                new FauxInjectionContext(),
                null);

            Assert.NotNull(instance);

            object instance2 = container.Locate((x, y) => new BasicService(),
                new FauxInjectionScope(),
                new FauxInjectionContext(),
                null);

            Assert.True(ReferenceEquals(instance, instance2));

            Task<object> newTask = Task.Factory.StartNew(
                () => container.Locate((x, y) => new BasicService(), new FauxInjectionScope(), new FauxInjectionContext(), null));

            newTask.Wait(1000);

            Assert.True(newTask.IsCompleted);
            Assert.False(ReferenceEquals(instance, newTask.Result));
        }
Esempio n. 2
0
        public void Dispose()
        {
            ThreadStaticLifestyle container = new ThreadStaticLifestyle();

            DisposableService instance =
                (DisposableService)
                    container.Locate((x, y) => new DisposableService(), new FauxInjectionScope(), new FauxInjectionContext(), null);

            Assert.NotNull(instance);

            bool instanceDisposed = false;
            bool instance2Disposed = false;

            instance.Disposing += (sender, args) => instanceDisposed = true;

            Task<DisposableService> waitTask = Task.Factory.StartNew(() =>
                (DisposableService)
                    container.Locate((x, y) => new DisposableService(),
                        new FauxInjectionScope(),
                        new FauxInjectionContext(),
                        null));

            waitTask.Wait(1000);

            waitTask.Result.Disposing += (sender, args) => instance2Disposed = true;

            container.Dispose();

            Assert.True(instanceDisposed);
            Assert.True(instance2Disposed);
        }
Esempio n. 3
0
        public void CloneTest()
        {
            ThreadStaticLifestyle container = new ThreadStaticLifestyle();

            ILifestyle clone = container.Clone();

            Assert.NotNull(clone);
            Assert.IsType(typeof(ThreadStaticLifestyle), clone);
        }
Esempio n. 4
0
        public void ShareTest()
        {
            ThreadStaticLifestyle container = new ThreadStaticLifestyle();

            object instance = container.Locate((x, y) => new BasicService(),
                new FauxInjectionScope(),
                new FauxInjectionContext(),
                null);

            Assert.NotNull(instance);

            object instance2 = container.Locate((x, y) => new BasicService(),
                new FauxInjectionScope(),
                new FauxInjectionContext(),
                null);

            Assert.True(ReferenceEquals(instance, instance2));
        }
Esempio n. 5
0
        public void TransientTest()
        {
            ThreadStaticLifestyle container = new ThreadStaticLifestyle();

            Assert.False(container.Transient);
        }