public void Convert_caches_the_conversion_so_GetConversionCost_is_only_called_once_for_a_pair_of_types() { var mockRule0 = MockRepository.GenerateMock <IConversionRule>(); var mockRule1 = MockRepository.GenerateMock <IConversionRule>(); var converter = new RuleBasedConverter(new DefaultExtensionPoints(), new[] { mockRule0, mockRule1 }); mockRule0.Expect(x => x.GetConversionCost(typeof(int), typeof(string), converter)).Return(ConversionCost.Invalid); mockRule1.Expect(x => x.GetConversionCost(typeof(int), typeof(string), converter)).Return(ConversionCost.Default); mockRule1.Expect(x => x.Convert(42, typeof(string), converter, true)).Return("42"); mockRule1.Expect(x => x.Convert(53, typeof(string), converter, true)).Return("53"); Assert.AreEqual("42", converter.Convert(42, typeof(string))); Assert.AreEqual("53", converter.Convert(53, typeof(string))); mockRule0.VerifyAllExpectations(); mockRule1.VerifyAllExpectations(); }
public void Custom_conversion() { var extensionPoints = new DefaultExtensionPoints(); extensionPoints.CustomConverters.Register <string, Foo>(x => new Foo(Int32.Parse(x))); var converter = new RuleBasedConverter(extensionPoints, EmptyArray <IConversionRule> .Instance); var actual = (Foo)converter.Convert("123", typeof(Foo)); Assert.AreEqual(123, actual.Value); }
public void Nulls_cannot_be_converted_to_non_nullable_ValueTypes() { var converter = new RuleBasedConverter(new DefaultExtensionPoints(), EmptyArray <IConversionRule> .Instance); converter.Convert(null, typeof(int)); }
public void Nulls_remain_rull_during_conversions_to_nullable_ValueTypes() { var converter = new RuleBasedConverter(new DefaultExtensionPoints(), EmptyArray <IConversionRule> .Instance); Assert.IsNull(converter.Convert(null, typeof(int?))); }
public void Convert_throws_if_conversion_not_supported() { var converter = new RuleBasedConverter(new DefaultExtensionPoints(), EmptyArray <IConversionRule> .Instance); converter.Convert("42", typeof(int)); }
public void Convert_returns_same_value_if_types_are_same() { var converter = new RuleBasedConverter(new DefaultExtensionPoints(), EmptyArray <IConversionRule> .Instance); Assert.AreEqual(42, converter.Convert(42, typeof(int))); }