public void ConvertTargetShouldReturnTypeConverterConvertToResult() { SetupTypeConverterToConversion(true, 10); var converter = new TypeConverterAdapter(_typeConverter.Object, typeof(int)); var source = converter.ConvertTarget(5); Assert.AreEqual(10, source); }
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); }
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); }
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); }
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); }
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); }
protected override IJsonTypeConverter CreateTypeConverter() { IJsonTypeConverter converter = CreateTypeConverter(ForType); if (converter == null) { return(TypeConverterAdapter.GetAdapter(ForType)); } //return null; else { return(converter); } }
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>())); }
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); }
protected override IJsonTypeConverter CreateTypeConverter() { return(TypeConverterAdapter.GetAdapter(ForType)); }