public void CanConvert_returns_true_if_and_only_if_a_conversion_rule_supports_the_conversion()
 {
     var mockRule0 = MockRepository.GenerateStub<IConversionRule>();
     var mockRule1 = MockRepository.GenerateStub<IConversionRule>();
     var converter = new RuleBasedConverter(new DefaultExtensionPoints(), new[] { mockRule0, mockRule1 });;
     mockRule0.Stub(x => x.GetConversionCost(typeof(int), typeof(string), converter)).Return(ConversionCost.Invalid);
     mockRule1.Stub(x => x.GetConversionCost(typeof(int), typeof(string), converter)).Return(ConversionCost.Invalid);
     mockRule0.Stub(x => x.GetConversionCost(typeof(double), typeof(string), converter)).Return(ConversionCost.Default);
     mockRule1.Stub(x => x.GetConversionCost(typeof(double), typeof(string), converter)).Return(ConversionCost.Invalid);
     Assert.IsFalse(converter.CanConvert(typeof(int), typeof(string)));
     Assert.IsTrue(converter.CanConvert(typeof(double), typeof(string)));
 }
 public void CanConvert_always_returns_true_if_types_are_same()
 {
     var converter = new RuleBasedConverter(new DefaultExtensionPoints(), EmptyArray<IConversionRule>.Instance);
     Assert.IsTrue(converter.CanConvert(typeof(int), typeof(int)));
     Assert.IsFalse(converter.CanConvert(typeof(int), typeof(string)));
 }