示例#1
0
        public void Uses_single_generator_per_cache_key_when_pool_size_is_one()
        {
            var property = CreateProperty(ValueGenerationOnAdd.Client);

            var factoryMock = new Mock <SimpleValueGeneratorFactory <GuidValueGenerator> >();

            factoryMock.Setup(m => m.Create(property)).Returns(() => new TemporaryValueGenerator());
            factoryMock.Setup(m => m.GetPoolSize(property)).Returns(1);
            factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheKeyMaster");

            var selector = new ValueGeneratorSelector(factoryMock.Object);
            var cache    = new ValueGeneratorCache(selector, Mock.Of <ForeignKeyValueGenerator>());

            var generator1 = cache.GetGenerator(property);

            Assert.NotNull(generator1);
            Assert.Same(generator1, cache.GetGenerator(property));

            factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheGatekeeper");

            var generator2 = cache.GetGenerator(property);

            Assert.NotNull(generator2);
            Assert.Same(generator2, cache.GetGenerator(property));
            Assert.NotSame(generator1, generator2);
        }
        public void Uses_pool_per_cache_key_when_pool_size_is_greater_than_one()
        {
            var property = CreateProperty(ValueGenerationOnAdd.Client);

            var factoryMock = new Mock<SimpleValueGeneratorFactory<GuidValueGenerator>>();
            factoryMock.Setup(m => m.Create(property)).Returns(CreateValueGeneratorCallback);
            factoryMock.Setup(m => m.GetPoolSize(property)).Returns(2);
            factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheKeyMaster");

            var selector = new ValueGeneratorSelector(factoryMock.Object);
            var cache = new ValueGeneratorCache(selector, Mock.Of<ForeignKeyValueGenerator>());

            var generator1a = cache.GetGenerator(property);
            var generator1b = cache.GetGenerator(property);
            Assert.NotSame(generator1a, generator1b);

            Assert.Same(generator1a, cache.GetGenerator(property));
            Assert.Same(generator1b, cache.GetGenerator(property));
            Assert.Same(generator1a, cache.GetGenerator(property));
            Assert.Same(generator1b, cache.GetGenerator(property));

            factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheGatekeeper");

            var generator2a = cache.GetGenerator(property);
            var generator2b = cache.GetGenerator(property);
            Assert.NotSame(generator2a, generator2b);
            Assert.NotSame(generator1a, generator2a);
            Assert.NotSame(generator1b, generator2a);

            Assert.Same(generator2a, cache.GetGenerator(property));
            Assert.Same(generator2b, cache.GetGenerator(property));
            Assert.Same(generator2a, cache.GetGenerator(property));
            Assert.Same(generator2b, cache.GetGenerator(property));
        }
示例#3
0
        public void Returns_null_if_selector_returns_null()
        {
            var property = CreateProperty(ValueGenerationOnAdd.None);
            var selector = new ValueGeneratorSelector(new SimpleValueGeneratorFactory <GuidValueGenerator>());
            var cache    = new ValueGeneratorCache(selector, Mock.Of <ForeignKeyValueGenerator>());

            Assert.Null(cache.GetGenerator(property));
        }
        public void Returns_null_if_selector_returns_null()
        {
            var property = CreateProperty(ValueGenerationOnAdd.None);
            var selector = new ValueGeneratorSelector(new SimpleValueGeneratorFactory<GuidValueGenerator>());
            var cache = new ValueGeneratorCache(selector, Mock.Of<ForeignKeyValueGenerator>());

            Assert.Null(cache.GetGenerator(property));
        }
        public RedisDataStoreServices(
            [NotNull] RedisDataStore store,
            [NotNull] RedisDataStoreCreator creator,
            [NotNull] RedisConnection connection,
            [NotNull] ValueGeneratorCache valueGeneratorCache,
            [NotNull] RedisDatabase database,
            [NotNull] ModelBuilderFactory modelBuilderFactory)
        {
            Check.NotNull(store, "store");
            Check.NotNull(creator, "creator");
            Check.NotNull(connection, "connection");
            Check.NotNull(valueGeneratorCache, "valueGeneratorCache");
            Check.NotNull(database, "database");
            Check.NotNull(modelBuilderFactory, "modelBuilderFactory");

            _store = store;
            _creator = creator;
            _connection = connection;
            _valueGeneratorCache = valueGeneratorCache;
            _database = database;
            _modelBuilderFactory = modelBuilderFactory;
        }
示例#6
0
        public void Uses_pool_per_cache_key_when_pool_size_is_greater_than_one()
        {
            var property = CreateProperty(ValueGenerationOnAdd.Client);

            var factoryMock = new Mock <SimpleValueGeneratorFactory <GuidValueGenerator> >();

            factoryMock.Setup(m => m.Create(property)).Returns(CreateValueGeneratorCallback);
            factoryMock.Setup(m => m.GetPoolSize(property)).Returns(2);
            factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheKeyMaster");

            var selector = new ValueGeneratorSelector(factoryMock.Object);
            var cache    = new ValueGeneratorCache(selector, Mock.Of <ForeignKeyValueGenerator>());

            var generator1a = cache.GetGenerator(property);
            var generator1b = cache.GetGenerator(property);

            Assert.NotSame(generator1a, generator1b);

            Assert.Same(generator1a, cache.GetGenerator(property));
            Assert.Same(generator1b, cache.GetGenerator(property));
            Assert.Same(generator1a, cache.GetGenerator(property));
            Assert.Same(generator1b, cache.GetGenerator(property));

            factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheGatekeeper");

            var generator2a = cache.GetGenerator(property);
            var generator2b = cache.GetGenerator(property);

            Assert.NotSame(generator2a, generator2b);
            Assert.NotSame(generator1a, generator2a);
            Assert.NotSame(generator1b, generator2a);

            Assert.Same(generator2a, cache.GetGenerator(property));
            Assert.Same(generator2b, cache.GetGenerator(property));
            Assert.Same(generator2a, cache.GetGenerator(property));
            Assert.Same(generator2b, cache.GetGenerator(property));
        }