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)); }
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; }
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)); }