public virtual void Create_and_clone_with_converter(Type mappingType, Type clrType)
        {
            var mapping = (RelationalTypeMapping)Activator.CreateInstance(
                mappingType,
                "<original>",
                new FakeValueConverter(),
                new FakeValueComparer(),
                DbType.VarNumeric);

            var clone = mapping.Clone("<clone>", null);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<clone>", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Null(clone.Size);
            Assert.NotNull(mapping.Converter);
            Assert.Same(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(typeof(object), clone.ClrType);

            var newConverter = new FakeValueConverter();

            clone = (RelationalTypeMapping)mapping.Clone(newConverter);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<original>", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Null(clone.Size);
            Assert.NotSame(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(typeof(object), clone.ClrType);
        }
        public virtual void Create_and_clone_unicode_sized_mappings_with_converter(Type mappingType, Type clrType)
        {
            var mapping = (RelationalTypeMapping)Activator.CreateInstance(
                mappingType,
                BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.CreateInstance,
                null,
                new[]
            {
                FakeTypeMapping.CreateParameters(
                    clrType,
                    size: 33,
                    unicide: false,
                    fixedLength: true,
                    storeTypePostfix: StoreTypePostfix.Size)
            },
                null,
                null);

            var clone = mapping.Clone("<clone>", 66);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<original>(33)", mapping.StoreType);
            Assert.Equal("<clone>(66)", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(66, clone.Size);
            Assert.False(mapping.IsUnicode);
            Assert.False(clone.IsUnicode);
            Assert.NotNull(mapping.Converter);
            Assert.Same(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.True(mapping.IsFixedLength);
            Assert.True(clone.IsFixedLength);
            Assert.Equal(StoreTypePostfix.Size, clone.StoreTypePostfix);

            var newConverter = new FakeValueConverter();

            clone = (RelationalTypeMapping)mapping.Clone(newConverter);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<original>(33)", mapping.StoreType);
            Assert.Equal("<original>(33)", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(33, clone.Size);
            Assert.False(mapping.IsUnicode);
            Assert.False(clone.IsUnicode);
            Assert.NotSame(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.True(mapping.IsFixedLength);
            Assert.True(clone.IsFixedLength);
            Assert.Equal(StoreTypePostfix.Size, clone.StoreTypePostfix);
        }
예제 #3
0
        public virtual void Create_and_clone_UDT_mapping_with_converter()
        {
            var mapping = new MySqlUdtTypeMapping(
                typeof(object),
                "storeType",
                StoreTypePostfix.None,
                "udtType",
                new FakeValueConverter(),
                new FakeValueComparer(),
                new FakeValueComparer(),
                DbType.VarNumeric,
                false,
                33,
                true);

            var clone = (MySqlUdtTypeMapping)mapping.Clone("<clone>", 66);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("storeType", mapping.StoreType);
            Assert.Equal("<clone>", clone.StoreType);
            Assert.Equal("udtType", mapping.UdtTypeName);
            Assert.Equal("udtType", clone.UdtTypeName);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(66, clone.Size);
            Assert.False(mapping.IsUnicode);
            Assert.False(clone.IsUnicode);
            Assert.NotNull(mapping.Converter);
            Assert.Same(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.True(mapping.IsFixedLength);
            Assert.True(clone.IsFixedLength);

            var newConverter = new FakeValueConverter();

            clone = (MySqlUdtTypeMapping)mapping.Clone(newConverter);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("storeType", mapping.StoreType);
            Assert.Equal("storeType", clone.StoreType);
            Assert.Equal("udtType", mapping.UdtTypeName);
            Assert.Equal("udtType", clone.UdtTypeName);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(33, clone.Size);
            Assert.False(mapping.IsUnicode);
            Assert.False(clone.IsUnicode);
            Assert.NotSame(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.True(mapping.IsFixedLength);
            Assert.True(clone.IsFixedLength);
        }
예제 #4
0
        protected virtual void ConversionCloneTest(
            Type mappingType,
            Type type,
            params object[] additionalArgs)
        {
            var mapping = (RelationalTypeMapping)Activator.CreateInstance(
                mappingType,
                BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.CreateInstance,
                null,
                new[]
            {
                FakeTypeMapping.CreateParameters(
                    type,
                    size: 33,
                    fixedLength: true,
                    storeTypePostfix: StoreTypePostfix.Size)
            }.Concat(additionalArgs).ToArray(),
                null,
                null);

            var clone = mapping.Clone("<clone>", 66);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<original>(33)", mapping.StoreType);
            Assert.Equal("<clone>(66)", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(66, clone.Size);
            Assert.NotNull(mapping.Converter);
            Assert.Same(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.True(mapping.IsFixedLength);
            Assert.True(clone.IsFixedLength);
            Assert.Equal(StoreTypePostfix.Size, clone.StoreTypePostfix);

            var newConverter = new FakeValueConverter();

            clone = (RelationalTypeMapping)mapping.Clone(newConverter);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<original>(33)", mapping.StoreType);
            Assert.Equal("<original>(33)", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(33, clone.Size);
            Assert.NotSame(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.True(mapping.IsFixedLength);
            Assert.True(clone.IsFixedLength);
            Assert.Equal(StoreTypePostfix.Size, clone.StoreTypePostfix);
        }
        public virtual void Create_and_clone_unicode_sized_mappings_with_converter(Type mappingType, Type clrType)
        {
            var mapping = (RelationalTypeMapping)Activator.CreateInstance(
                mappingType,
                "<original>",
                new FakeValueConverter(),
                new FakeValueComparer(),
                new FakeValueComparer(),
                DbType.VarNumeric,
                false,
                33,
                true);

            var clone = mapping.Clone("<clone>", 66);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<original>", mapping.StoreType);
            Assert.Equal("<clone>", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(66, clone.Size);
            Assert.False(mapping.IsUnicode);
            Assert.False(clone.IsUnicode);
            Assert.NotNull(mapping.Converter);
            Assert.Same(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.True(mapping.IsFixedLength);
            Assert.True(clone.IsFixedLength);

            var newConverter = new FakeValueConverter();

            clone = (RelationalTypeMapping)mapping.Clone(newConverter);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<original>", mapping.StoreType);
            Assert.Equal("<original>", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(33, clone.Size);
            Assert.False(mapping.IsUnicode);
            Assert.False(clone.IsUnicode);
            Assert.NotSame(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.True(mapping.IsFixedLength);
            Assert.True(clone.IsFixedLength);
        }
        public virtual void Create_and_clone_UDT_mapping_with_converter()
        {
            var mapping = new SqlServerUdtTypeMapping(
                "storeType",
                typeof(object),
                "udtType",
                new FakeValueConverter(),
                DbType.VarNumeric,
                false,
                33);

            var clone = (SqlServerUdtTypeMapping)mapping.Clone("<clone>", 66);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("storeType", mapping.StoreType);
            Assert.Equal("<clone>", clone.StoreType);
            Assert.Equal("udtType", mapping.UdtTypeName);
            Assert.Equal("udtType", clone.UdtTypeName);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(66, clone.Size);
            Assert.False(mapping.IsUnicode);
            Assert.False(clone.IsUnicode);
            Assert.NotNull(mapping.Converter);
            Assert.Same(mapping.Converter, clone.Converter);
            Assert.Same(typeof(object), clone.ClrType);

            var newConverter = new FakeValueConverter();

            clone = (SqlServerUdtTypeMapping)mapping.Clone(newConverter);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("storeType", mapping.StoreType);
            Assert.Equal("storeType", clone.StoreType);
            Assert.Equal("udtType", mapping.UdtTypeName);
            Assert.Equal("udtType", clone.UdtTypeName);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Equal(33, mapping.Size);
            Assert.Equal(33, clone.Size);
            Assert.False(mapping.IsUnicode);
            Assert.False(clone.IsUnicode);
            Assert.NotSame(mapping.Converter, clone.Converter);
            Assert.Same(typeof(object), clone.ClrType);
        }
예제 #7
0
        public virtual void Create_and_clone_with_converter(Type mappingType, Type type)
        {
            var mapping = (RelationalTypeMapping)Activator.CreateInstance(
                mappingType,
                BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.CreateInstance,
                null,
                new[] { FakeTypeMapping.CreateParameters(type) },
                null,
                null);

            var clone = mapping.Clone("<clone>", null);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<clone>", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Null(clone.Size);
            Assert.NotNull(mapping.Converter);
            Assert.Same(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.Equal(StoreTypePostfix.PrecisionAndScale, clone.StoreTypePostfix);

            var newConverter = new FakeValueConverter();

            clone = (RelationalTypeMapping)mapping.Clone(newConverter);

            Assert.NotSame(mapping, clone);
            Assert.Same(mapping.GetType(), clone.GetType());
            Assert.Equal("<original>", clone.StoreType);
            Assert.Equal(DbType.VarNumeric, clone.DbType);
            Assert.Null(clone.Size);
            Assert.NotSame(mapping.Converter, clone.Converter);
            Assert.Same(mapping.Comparer, clone.Comparer);
            Assert.Same(mapping.KeyComparer, clone.KeyComparer);
            Assert.Same(typeof(object), clone.ClrType);
            Assert.Equal(StoreTypePostfix.PrecisionAndScale, clone.StoreTypePostfix);
        }