예제 #1
0
        public void PrototypeModeWithSingletonTarget()
        {
            TestObject     dude             = new TestObject("Rick Evans", 30);
            IObjectFactory objectFactory    = mocks.StrictMock <IObjectFactory>();
            const string   lookupObjectName = "rick";

            Expect.Call(objectFactory.GetObject(lookupObjectName)).Return(dude).Repeat.Twice();
            ObjectFactoryCreatingFactoryObject factory = new ObjectFactoryCreatingFactoryObject();

            factory.ObjectFactory    = objectFactory;
            factory.TargetObjectName = lookupObjectName;
            factory.IsSingleton      = false;
            factory.AfterPropertiesSet();

            mocks.ReplayAll();
            IGenericObjectFactory gofOne = (IGenericObjectFactory)factory.GetObject();
            IGenericObjectFactory gofTwo = (IGenericObjectFactory)factory.GetObject();

            Assert.IsFalse(Object.ReferenceEquals(gofOne, gofTwo),
                           "Not returning distinct instances (Prototype = true).");
            TestObject one = (TestObject)gofOne.GetObject();

            Assert.IsNotNull(one, "Must never return null (IFactoryObject contract).");
            TestObject two = (TestObject)gofTwo.GetObject();

            Assert.IsNotNull(two, "Must never return null (IFactoryObject contract).");
            Assert.IsTrue(Object.ReferenceEquals(one, two),
                          "Not returning the same instance to singleton object.");
            mocks.VerifyAll();
        }
예제 #2
0
        public void SunnyDay()
        {
            TestObject     dude             = new TestObject("Rick Evans", 30);
            IObjectFactory objectFactory    = mocks.StrictMock <IObjectFactory>();
            const string   lookupObjectName = "rick";

            Expect.Call(objectFactory.GetObject(lookupObjectName)).Return(dude).Repeat.Twice();
            ObjectFactoryCreatingFactoryObject factory = new ObjectFactoryCreatingFactoryObject();

            factory.ObjectFactory    = objectFactory;
            factory.TargetObjectName = lookupObjectName;
            factory.AfterPropertiesSet();

            mocks.ReplayAll();

            IGenericObjectFactory gof      = (IGenericObjectFactory)factory.GetObject();
            IGenericObjectFactory gofOther = (IGenericObjectFactory)factory.GetObject();

            Assert.IsTrue(Object.ReferenceEquals(gof, gofOther),
                          "Not returning a shared instance (Singleton = true).");
            TestObject one = (TestObject)gof.GetObject();

            Assert.IsNotNull(one, "Must never return null (IFactoryObject contract).");
            TestObject two = (TestObject)gof.GetObject();

            Assert.IsNotNull(two, "Must never return null (IFactoryObject contract).");
            Assert.IsTrue(Object.ReferenceEquals(one, two),
                          "Not returning the same instance.");
            mocks.VerifyAll();
        }
 public GenericService(GenericRepository <D> repository,
                       IGenericObjectFactory <D, C> factory,
                       IGenericObjectFactory <D, U> factoryForUpdate)
 {
     _repository       = repository;
     _factory          = factory;
     _factoryForUpdate = factoryForUpdate;
     Log.Information("Inside GenericService Constructor");
     Log.Information("{@repositoryType}", repository.GetType());
 }
예제 #4
0
 public ProductService(GenericRepository <Product> repository, IGenericObjectFactory <Product, Product> factory, IGenericObjectFactory <Product, Product> factoryForUpdate, IProductRepository productRepository, IHostingEnvironment host)
     : base(repository, factory, factoryForUpdate)
 {
     this.productRepository = productRepository;
     this.host = host;
 }