{
Assert.IsTrue (converter.CanConvertTo (typeof (string)), "#1");
Assert.IsFalse (converter.CanConvertTo (typeof (object)), "#2");
+ Assert.IsTrue (converter.CanConvertTo (typeof (int)), "#3");
}
[Test]
converter.ConvertTo (sbyte.MaxValue, typeof (string)), "#3");
}
+ [Test]
+ public void ConvertToString ()
+ {
+ CultureInfo culture = new MyCultureInfo ();
+ NumberFormatInfo numberFormatInfo = (NumberFormatInfo) culture.GetFormat (typeof (NumberFormatInfo));
+
+ Assert.AreEqual (numberFormatInfo.NegativeSign + "5", converter.ConvertToString (null, culture, (sbyte) -5), "#1");
+ Assert.AreEqual (culture.NumberFormat.NegativeSign + "5", converter.ConvertToString (null, culture, (short) -5), "#2");
+ }
+
+ [Test]
+ public void ConvertFromString ()
+ {
+ CultureInfo culture = new MyCultureInfo ();
+ NumberFormatInfo numberFormatInfo = (NumberFormatInfo) culture.GetFormat (typeof (NumberFormatInfo));
+
+ Assert.AreEqual (-5, converter.ConvertFrom (null, culture, numberFormatInfo.NegativeSign + "5"));
+ }
+
[Test]
public void ConvertFromString_Invalid1 ()
{
Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#3");
}
}
+
+ [Serializable]
+ private sealed class MyCultureInfo : CultureInfo
+ {
+ internal MyCultureInfo ()
+ : base ("en-US")
+ {
+ }
+
+ public override object GetFormat (Type formatType)
+ {
+ if (formatType == typeof (NumberFormatInfo)) {
+ NumberFormatInfo nfi = (NumberFormatInfo) ((NumberFormatInfo) base.GetFormat (formatType)).Clone ();
+
+ nfi.NegativeSign = "myNegativeSign";
+ return NumberFormatInfo.ReadOnly (nfi);
+ } else {
+ return base.GetFormat (formatType);
+ }
+ }
+
+#if NET_2_0
+// adding this override in 1.x shows different result in .NET (it is ignored).
+// Some compatibility kids might want to fix this issue.
+ public override NumberFormatInfo NumberFormat {
+ get {
+ NumberFormatInfo nfi = (NumberFormatInfo) base.NumberFormat.Clone ();
+ nfi.NegativeSign = "myNegativeSign";
+ return nfi;
+ }
+ set { throw new NotSupportedException (); }
+ }
+#endif
+ }
}
}