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(CreateValueGeneratorCallback);
            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 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(generateValues: false);
            var selector = new ValueGeneratorSelector(new SimpleValueGeneratorFactory <GuidValueGenerator>());
            var cache    = new ValueGeneratorCache(selector);

            Assert.Null(cache.GetGenerator(property));
        }
        public void X()
        {
            var        model      = new Model();
            EntityType entityType = model.AddEntityType(typeof(SimpleRecord));
            Property   property   = entityType.AddProperty(typeof(SimpleRecord)
                                                           .GetTypeInfo()
                                                           .GetProperty(nameof(SimpleRecord.Id)));

            var            valueGeneratorCacheDependencies    = new ValueGeneratorCacheDependencies();
            var            valueGeneratorCache                = new ValueGeneratorCache(valueGeneratorCacheDependencies);
            var            valueGeneratorSelectorDependencies = new ValueGeneratorSelectorDependencies(valueGeneratorCache);
            var            mongoDbValueGeneratorSelector      = new MongoDbValueGeneratorSelector(valueGeneratorSelectorDependencies);
            ValueGenerator valueGenerator = mongoDbValueGeneratorSelector.Select(property, entityType);

            Assert.IsAssignableFrom(typeof(ObjectIdValueGenerator), valueGenerator);
        }
Пример #5
0
        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(ValueGeneration.OnAdd);

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