예제 #1
0
        public void Select_throws_for_unsupported_combinations()
        {
            var dbConfigurationMock        = new Mock <DbContextConfiguration>();
            var redisDatabaseMock          = new Mock <RedisDatabase>(dbConfigurationMock.Object);
            var guidValueGenerator         = new SimpleValueGeneratorFactory <GuidValueGenerator>();
            var redisValueGeneratorFactory = new RedisValueGeneratorFactory(redisDatabaseMock.Object);

            var selector = new RedisValueGeneratorSelector(guidValueGenerator, redisValueGeneratorFactory);

            var typeMock = new Mock <IEntityType>();

            typeMock.Setup(m => m.Name).Returns("AnEntity");

            Assert.Equal(
                GetString("FormatNoValueGenerator", "MyProperty", "MyType", "String"),
                Assert.Throws <NotSupportedException>(() => selector.Select(CreateProperty(typeof(string), ValueGeneration.OnAdd))).Message);
            Assert.Equal(
                GetString("FormatNoValueGenerator", "MyProperty", "MyType", "Single"),
                Assert.Throws <NotSupportedException>(() => selector.Select(CreateProperty(typeof(float), ValueGeneration.OnAdd))).Message);
            Assert.Equal(
                GetString("FormatNoValueGenerator", "MyProperty", "MyType", "Double"),
                Assert.Throws <NotSupportedException>(() => selector.Select(CreateProperty(typeof(double), ValueGeneration.OnAdd))).Message);
            Assert.Equal(
                GetString("FormatNoValueGenerator", "MyProperty", "MyType", "DateTime"),
                Assert.Throws <NotSupportedException>(() => selector.Select(CreateProperty(typeof(DateTime), ValueGeneration.OnAdd))).Message);
            Assert.Equal(
                GetString("FormatNoValueGenerator", "MyProperty", "MyType", "DateTimeOffset"),
                Assert.Throws <NotSupportedException>(() => selector.Select(CreateProperty(typeof(DateTimeOffset), ValueGeneration.OnAdd))).Message);
        }
        public ValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory<GuidValueGenerator> guidFactory)
        {
            Check.NotNull(guidFactory, "guidFactory");

            _guidFactory = guidFactory;
        }
예제 #3
0
        public void Returns_in_memory_GUID_generator_for_GUID_types_setup_for_value_generation()
        {
            var guidFactory = new SimpleValueGeneratorFactory <GuidValueGenerator>();

            var selector = new ValueGeneratorSelector(guidFactory);

            Assert.Same(guidFactory, selector.Select(CreateProperty(typeof(Guid), ValueGeneration.OnAdd)));
        }
        public void Returns_in_memory_GUID_generator_for_GUID_types_setup_for_client_values()
        {
            var guidFactory = new SimpleValueGeneratorFactory<GuidValueGenerator>();

            var selector = new ValueGeneratorSelector(guidFactory);

            Assert.Same(guidFactory, selector.Select(CreateProperty(typeof(Guid), ValueGenerationOnAdd.Client)));
        }
예제 #5
0
        public RedisValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory <GuidValueGenerator> guidFactory,
            [NotNull] RedisValueGeneratorFactory redisValueGeneratorFactory)
            : base(guidFactory)
        {
            Check.NotNull(redisValueGeneratorFactory, "redisValueGeneratorFactory");

            _redisValueGeneratorFactory = redisValueGeneratorFactory;
        }
        public SQLiteValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory<GuidValueGenerator> guidFactory,
            [NotNull] SimpleValueGeneratorFactory<TemporaryValueGenerator> tempFactory)
            : base(guidFactory)
        {
            Check.NotNull(tempFactory, "tempFactory");

            _tempFactory = tempFactory;
        }
        public InMemoryValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory <GuidValueGenerator> guidFactory,
            [NotNull] SimpleValueGeneratorFactory <InMemoryValueGenerator> inMemoryFactory)
            : base(guidFactory)
        {
            Check.NotNull(inMemoryFactory, "inMemoryFactory");

            _inMemoryFactory = inMemoryFactory;
        }
        public SQLiteValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory <GuidValueGenerator> guidFactory,
            [NotNull] SimpleValueGeneratorFactory <TemporaryValueGenerator> tempFactory)
            : base(guidFactory)
        {
            Check.NotNull(tempFactory, "tempFactory");

            _tempFactory = tempFactory;
        }
        public InMemoryValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory<GuidValueGenerator> guidFactory,
            [NotNull] SimpleValueGeneratorFactory<InMemoryValueGenerator> inMemoryFactory)
            : base(guidFactory)
        {
            Check.NotNull(inMemoryFactory, "inMemoryFactory");

            _inMemoryFactory = inMemoryFactory;
        }
예제 #10
0
        public void Returns_in_memory_GUID_generator_for_GUID_types_setup_for_client_values()
        {
            var guidFactory = new SimpleValueGeneratorFactory <GuidValueGenerator>();

            var selector = new InMemoryValueGeneratorSelector(
                guidFactory,
                new SimpleValueGeneratorFactory <InMemoryValueGenerator>());

            Assert.Same(guidFactory, selector.Select(CreateProperty(typeof(Guid), ValueGenerationOnAdd.Client)));
        }
예제 #11
0
        public void Select_returns_GuidValueGenerator_for_Guid_type_with_ValueGeneration_set_to_OnAdd()
        {
            var dbConfigurationMock        = new Mock <DbContextConfiguration>();
            var redisDatabaseMock          = new Mock <RedisDatabase>(dbConfigurationMock.Object);
            var guidValueGenerator         = new SimpleValueGeneratorFactory <GuidValueGenerator>();
            var redisValueGeneratorFactory = new RedisValueGeneratorFactory(redisDatabaseMock.Object);

            var selector = new RedisValueGeneratorSelector(guidValueGenerator, redisValueGeneratorFactory);

            Assert.Same(guidValueGenerator, selector.Select(CreateProperty(typeof(Guid), ValueGeneration.OnAdd)));
        }
        public void Returns_sequential_GUID_generator_for_GUID_types_setup_for_client_values()
        {
            var sequentialGuidFactory = new SimpleValueGeneratorFactory<SequentialGuidValueGenerator>();

            var selector = new SqlServerValueGeneratorSelector(
                new SimpleValueGeneratorFactory<GuidValueGenerator>(),
                new SimpleValueGeneratorFactory<TemporaryValueGenerator>(),
                new SqlServerSequenceValueGeneratorFactory(new SqlStatementExecutor()),
                sequentialGuidFactory);

            Assert.Same(sequentialGuidFactory, selector.Select(CreateProperty(typeof(Guid), ValueGenerationOnAdd.Client)));
        }
예제 #13
0
        public InMemoryValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory <GuidValueGenerator> guidFactory,
            [NotNull] SimpleValueGeneratorFactory <InMemoryValueGenerator> inMemoryFactory,
            [NotNull] SimpleValueGeneratorFactory <TemporaryIntegerValueGenerator> integerFactory,
            [NotNull] SimpleValueGeneratorFactory <TemporaryStringValueGenerator> stringFactory,
            [NotNull] SimpleValueGeneratorFactory <TemporaryBinaryValueGenerator> binaryFactory)
            : base(guidFactory, integerFactory, stringFactory, binaryFactory)
        {
            Check.NotNull(inMemoryFactory, "inMemoryFactory");

            _inMemoryFactory = inMemoryFactory;
        }
        public void Returns_sequential_GUID_generator_for_GUID_types()
        {
            var sequentialGuidFactory = new SimpleValueGeneratorFactory <SequentialGuidValueGenerator>();

            var selector = new SqlServerValueGeneratorSelector(
                new SimpleValueGeneratorFactory <GuidValueGenerator>(),
                new SimpleValueGeneratorFactory <TemporaryValueGenerator>(),
                new SqlServerSequenceValueGeneratorFactory(new SqlStatementExecutor(new LoggerFactory())),
                sequentialGuidFactory);

            Assert.Same(sequentialGuidFactory, selector.Select(CreateDefaultValueGenProperty <Guid>()));
        }
        public void Returns_sequential_GUID_generator_for_GUID_types_setup_for_client_values()
        {
            var sequentialGuidFactory = new SimpleValueGeneratorFactory <SequentialGuidValueGenerator>();

            var selector = new SqlServerValueGeneratorSelector(
                new SimpleValueGeneratorFactory <GuidValueGenerator>(),
                new SimpleValueGeneratorFactory <TemporaryValueGenerator>(),
                new SqlServerSequenceValueGeneratorFactory(new SqlStatementExecutor()),
                sequentialGuidFactory);

            Assert.Same(sequentialGuidFactory, selector.Select(CreateProperty(typeof(Guid), ValueGenerationOnAdd.Client)));
        }
        public void Returns_in_memory_integer_generator_for_all_integer_types_setup_for_server_values()
        {
            var inMemoryFactory = new SimpleValueGeneratorFactory<InMemoryValueGenerator>();

            var selector = new InMemoryValueGeneratorSelector(
                new SimpleValueGeneratorFactory<GuidValueGenerator>(),
                inMemoryFactory);

            Assert.Same(inMemoryFactory, selector.Select(CreateProperty(typeof(long), ValueGenerationOnAdd.Server)));
            Assert.Same(inMemoryFactory, selector.Select(CreateProperty(typeof(int), ValueGenerationOnAdd.Server)));
            Assert.Same(inMemoryFactory, selector.Select(CreateProperty(typeof(short), ValueGenerationOnAdd.Server)));
            Assert.Same(inMemoryFactory, selector.Select(CreateProperty(typeof(byte), ValueGenerationOnAdd.Server)));
        }
예제 #17
0
        public void Returns_in_memory_integer_generator_for_all_integer_types_setup_for_server_values()
        {
            var inMemoryFactory = new SimpleValueGeneratorFactory <InMemoryValueGenerator>();

            var selector = new InMemoryValueGeneratorSelector(
                new SimpleValueGeneratorFactory <GuidValueGenerator>(),
                inMemoryFactory);

            Assert.Same(inMemoryFactory, selector.Select(CreateProperty(typeof(long), ValueGenerationOnAdd.Server)));
            Assert.Same(inMemoryFactory, selector.Select(CreateProperty(typeof(int), ValueGenerationOnAdd.Server)));
            Assert.Same(inMemoryFactory, selector.Select(CreateProperty(typeof(short), ValueGenerationOnAdd.Server)));
            Assert.Same(inMemoryFactory, selector.Select(CreateProperty(typeof(byte), ValueGenerationOnAdd.Server)));
        }
        public SqlServerValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory<GuidValueGenerator> guidFactory,
            [NotNull] SimpleValueGeneratorFactory<TemporaryValueGenerator> tempFactory,
            [NotNull] SqlServerSequenceValueGeneratorFactory sequenceFactory,
            [NotNull] SimpleValueGeneratorFactory<SequentialGuidValueGenerator> sequentialGuidFactory)
            : base(guidFactory)
        {
            Check.NotNull(sequenceFactory, "sequenceFactory");
            Check.NotNull(sequentialGuidFactory, "sequentialGuidFactory");

            _tempFactory = tempFactory;
            _sequenceFactory = sequenceFactory;
            _sequentialGuidFactory = sequentialGuidFactory;
        }
        public void Returns_temp_generator_for_identity_generator_when_explicitly_configured()
        {
            var tempFactory = new SimpleValueGeneratorFactory <TemporaryValueGenerator>();

            var selector = new SqlServerValueGeneratorSelector(
                new SimpleValueGeneratorFactory <GuidValueGenerator>(),
                tempFactory,
                new SqlServerSequenceValueGeneratorFactory(new SqlStatementExecutor(new LoggerFactory())),
                new SimpleValueGeneratorFactory <SequentialGuidValueGenerator>());

            Assert.Same(tempFactory, selector.Select(CreateIdentityProperty <long>()));
            Assert.Same(tempFactory, selector.Select(CreateIdentityProperty <int>()));
            Assert.Same(tempFactory, selector.Select(CreateIdentityProperty <short>()));
        }
        [Fact] // TODO: This will change when sequence becomes the default
        public void Returns_in_temp_generator_for_all_integer_types_except_byte_setup_for_value_generation()
        {
            var tempFactory = new SimpleValueGeneratorFactory <TemporaryValueGenerator>();

            var selector = new SqlServerValueGeneratorSelector(
                new SimpleValueGeneratorFactory <GuidValueGenerator>(),
                tempFactory,
                new SqlServerSequenceValueGeneratorFactory(new SqlStatementExecutor(new LoggerFactory())),
                new SimpleValueGeneratorFactory <SequentialGuidValueGenerator>());

            Assert.Same(tempFactory, selector.Select(CreateDefaultValueGenProperty <long>()));
            Assert.Same(tempFactory, selector.Select(CreateDefaultValueGenProperty <int>()));
            Assert.Same(tempFactory, selector.Select(CreateDefaultValueGenProperty <short>()));
        }
        public void Returns_in_temp_generator_for_all_integer_types_except_byte_setup_for_client_values()
        {
            var tempFactory = new SimpleValueGeneratorFactory <TemporaryValueGenerator>();

            var selector = new SqlServerValueGeneratorSelector(
                new SimpleValueGeneratorFactory <GuidValueGenerator>(),
                tempFactory,
                new SqlServerSequenceValueGeneratorFactory(new SqlStatementExecutor()),
                new SimpleValueGeneratorFactory <SequentialGuidValueGenerator>());

            Assert.Same(tempFactory, selector.Select(CreateProperty(typeof(long), ValueGenerationOnAdd.Client)));
            Assert.Same(tempFactory, selector.Select(CreateProperty(typeof(int), ValueGenerationOnAdd.Client)));
            Assert.Same(tempFactory, selector.Select(CreateProperty(typeof(short), ValueGenerationOnAdd.Client)));
        }
        public void Returns_in_temp_generator_for_all_integer_types_except_byte_setup_for_client_values()
        {
            var tempFactory = new SimpleValueGeneratorFactory<TemporaryValueGenerator>();

            var selector = new SqlServerValueGeneratorSelector(
                new SimpleValueGeneratorFactory<GuidValueGenerator>(),
                tempFactory,
                new SqlServerSequenceValueGeneratorFactory(new SqlStatementExecutor()),
                new SimpleValueGeneratorFactory<SequentialGuidValueGenerator>());

            Assert.Same(tempFactory, selector.Select(CreateProperty(typeof(long), ValueGenerationOnAdd.Client)));
            Assert.Same(tempFactory, selector.Select(CreateProperty(typeof(int), ValueGenerationOnAdd.Client)));
            Assert.Same(tempFactory, selector.Select(CreateProperty(typeof(short), ValueGenerationOnAdd.Client)));
        }
예제 #23
0
        public SqlServerValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory <GuidValueGenerator> guidFactory,
            [NotNull] SimpleValueGeneratorFactory <TemporaryValueGenerator> tempFactory,
            [NotNull] SqlServerSequenceValueGeneratorFactory sequenceFactory,
            [NotNull] SimpleValueGeneratorFactory <SequentialGuidValueGenerator> sequentialGuidFactory)
            : base(guidFactory)
        {
            Check.NotNull(sequenceFactory, "sequenceFactory");
            Check.NotNull(sequentialGuidFactory, "sequentialGuidFactory");

            _tempFactory           = tempFactory;
            _sequenceFactory       = sequenceFactory;
            _sequentialGuidFactory = sequentialGuidFactory;
        }
예제 #24
0
        public SqlServerValueGeneratorSelector(
            [NotNull] SimpleValueGeneratorFactory <GuidValueGenerator> guidFactory,
            [NotNull] SimpleValueGeneratorFactory <TemporaryIntegerValueGenerator> integerFactory,
            [NotNull] SimpleValueGeneratorFactory <TemporaryStringValueGenerator> stringFactory,
            [NotNull] SimpleValueGeneratorFactory <TemporaryBinaryValueGenerator> binaryFactory,
            [NotNull] SqlServerSequenceValueGeneratorFactory sequenceFactory,
            [NotNull] SimpleValueGeneratorFactory <SequentialGuidValueGenerator> sequentialGuidFactory)
            : base(guidFactory, integerFactory, stringFactory, binaryFactory)
        {
            Check.NotNull(sequenceFactory, "sequenceFactory");
            Check.NotNull(sequentialGuidFactory, "sequentialGuidFactory");

            _sequenceFactory       = sequenceFactory;
            _sequentialGuidFactory = sequentialGuidFactory;
        }
예제 #25
0
        public void Select_returns_RedisValueGeneratorFactory_for_all_integer_types_with_ValueGeneration_set_to_OnAdd()
        {
            var dbConfigurationMock        = new Mock <DbContextConfiguration>();
            var redisDatabaseMock          = new Mock <RedisDatabase>(dbConfigurationMock.Object);
            var guidValueGenerator         = new SimpleValueGeneratorFactory <GuidValueGenerator>();
            var redisValueGeneratorFactory = new RedisValueGeneratorFactory(redisDatabaseMock.Object);

            var selector = new RedisValueGeneratorSelector(guidValueGenerator, redisValueGeneratorFactory);

            Assert.Same(redisValueGeneratorFactory, selector.Select(CreateProperty(typeof(long), ValueGeneration.OnAdd)));
            Assert.Same(redisValueGeneratorFactory, selector.Select(CreateProperty(typeof(int), ValueGeneration.OnAdd)));
            Assert.Same(redisValueGeneratorFactory, selector.Select(CreateProperty(typeof(short), ValueGeneration.OnAdd)));
            Assert.Same(redisValueGeneratorFactory, selector.Select(CreateProperty(typeof(byte), ValueGeneration.OnAdd)));
            Assert.Same(redisValueGeneratorFactory, selector.Select(CreateProperty(typeof(ulong), ValueGeneration.OnAdd)));
            Assert.Same(redisValueGeneratorFactory, selector.Select(CreateProperty(typeof(uint), ValueGeneration.OnAdd)));
            Assert.Same(redisValueGeneratorFactory, selector.Select(CreateProperty(typeof(ushort), ValueGeneration.OnAdd)));
            Assert.Same(redisValueGeneratorFactory, selector.Select(CreateProperty(typeof(sbyte), ValueGeneration.OnAdd)));
        }
예제 #26
0
        public void Select_returns_null_for_all_types_with_ValueGeneration_set_to_None()
        {
            var dbConfigurationMock        = new Mock <DbContextConfiguration>();
            var redisDatabaseMock          = new Mock <RedisDatabase>(dbConfigurationMock.Object);
            var guidValueGenerator         = new SimpleValueGeneratorFactory <GuidValueGenerator>();
            var redisValueGeneratorFactory = new RedisValueGeneratorFactory(redisDatabaseMock.Object);

            var selector = new RedisValueGeneratorSelector(guidValueGenerator, redisValueGeneratorFactory);

            Assert.Null(selector.Select(CreateProperty(typeof(long), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(int), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(short), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(byte), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(ulong), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(uint), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(ushort), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(sbyte), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(string), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(float), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(double), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(Guid), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(DateTime), ValueGeneration.None)));
            Assert.Null(selector.Select(CreateProperty(typeof(DateTimeOffset), ValueGeneration.None)));
        }