Exemplo n.º 1
0
        public void ConvertTargetShouldReturnTypeConverterConvertToResult()
        {
            SetupTypeConverterToConversion(true, 10);
            var converter = new TypeConverterAdapter(_typeConverter.Object, typeof(int));

            var source = converter.ConvertTarget(5);

            Assert.AreEqual(10, source);
        }
Exemplo n.º 2
0
        public void ConvertSourceShouldReturnTypeConverterConvertFromResult()
        {
            SetupTypeConverterToConversion(true);
            SetupTypeConverterFromConversion(true, 10);
            var converter = new TypeConverterAdapter(_typeConverter.Object, typeof(int));

            var target = converter.ConvertSource(5);

            Assert.AreEqual(10, target);
        }
Exemplo n.º 3
0
        private static IValueAdapter WrapInTypeConverterIfNecessary(IValueAdapter propertyAdapter, Type propertyType)
        {
            var typeConverter = GetTypeConverterIfAny(propertyType);

            if (typeConverter != null)
            {
                var valueConverter = new TypeConverterAdapter(typeConverter, typeof(string));
                return(new ConvertingAdapter(propertyAdapter, valueConverter));
            }
            return(propertyAdapter);
        }
Exemplo n.º 4
0
        public void ConvertTargetShouldReturnNoValueWhenTypeConverterConvertToThrows()
        {
            SetupTypeConverterToConversion(true);
            var converter = new TypeConverterAdapter(_typeConverter.Object, typeof(int));

            _typeConverter.Setup(c => c.ConvertTo(It.IsAny <ITypeDescriptorContext>(), It.IsAny <CultureInfo>(), It.IsAny <object>(), It.IsAny <Type>()))
            .Throws <Exception>();

            var source = converter.ConvertTarget(5);

            Assert.AreEqual(SettingsConstants.NoValue, source);
        }
Exemplo n.º 5
0
        public void Test_CanFormat()
        {
            // Arrange.
            var adapted = new Int32Converter();

            var adapter = new TypeConverterAdapter(adapted);

            // Act.
            var actual = adapter.CanFormat(typeof(int));

            // Assert.
            Assert.True(actual);
        }
Exemplo n.º 6
0
        public void Test_Format_ShouldPassThrough()
        {
            // Arrange.
            var adapted = new Int32Converter();

            var adapter = new TypeConverterAdapter(adapted);

            // Act.
            var actual = adapter.Format(new FieldFormattingContext(1, null, typeof(int)));

            // Assert.
            Assert.Equal("1", actual);
        }
Exemplo n.º 7
0
        protected override IJsonTypeConverter CreateTypeConverter()
        {
            IJsonTypeConverter converter = CreateTypeConverter(ForType);

            if (converter == null)
            {
                return(TypeConverterAdapter.GetAdapter(ForType));
            }
            //return null;
            else
            {
                return(converter);
            }
        }
Exemplo n.º 8
0
        public void ConvertSourceShouldUseTypeConverterConvertFromForSourceConversion()
        {
            SetupTypeConverterToConversion(true);
            SetupTypeConverterFromConversion(true);
            var sourceType = typeof(int);
            var converter  = new TypeConverterAdapter(_typeConverter.Object, sourceType);

            converter.ConvertSource(5);

            _typeConverter.Verify(
                c => c.ConvertFrom(
                    It.IsAny <ITypeDescriptorContext>(),
                    It.IsAny <CultureInfo>(),
                    It.IsAny <object>()));
        }
Exemplo n.º 9
0
        public static ITypeConverter GetConverter(Type type)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }

            if (_typeConverters.TryGetValue(type, out var converter))
            {
                return(converter);
            }

            var isGenericType = type.IsGenericType;

            if (isGenericType)
            {
                var definition = type.GetGenericTypeDefinition();

                // Nullables
                if (definition == typeof(Nullable <>))
                {
                    converter = new NullableConverter(type);
                    RegisterConverter(type, converter);
                    return(converter);
                }

                // Sequence types
                var genericArgs  = type.GetGenericArguments();
                var isEnumerable = genericArgs.Length == 1 && type.IsSubClass(typeof(IEnumerable <>));
                if (isEnumerable)
                {
                    converter = (ITypeConverter)Activator.CreateInstance(typeof(EnumerableConverter <>).MakeGenericType(genericArgs[0]), type);
                    RegisterConverter(type, converter);
                    return(converter);
                }
            }

            // default fallback
            converter = new TypeConverterAdapter(TypeDescriptor.GetConverter(type));
            RegisterConverter(type, converter);
            return(converter);
        }
Exemplo n.º 10
0
 protected override IJsonTypeConverter CreateTypeConverter()
 {
     return(TypeConverterAdapter.GetAdapter(ForType));
 }