1 // 2 // System.ComponentModel.Int64Converter test cases 3 // 4 // Authors: 5 // Gert Driesen (drieseng@users.sourceforge.net) 6 // 7 // (c) 2005 Novell, Inc. (http://www.ximian.com) 8 // 9 10 using System; 11 using System.ComponentModel; 12 using System.ComponentModel.Design.Serialization; 13 using System.Globalization; 14 15 using NUnit.Framework; 16 17 namespace MonoTests.System.ComponentModel 18 { 19 [TestFixture] 20 public class Int64ConverterTests 21 { 22 private Int64Converter converter; 23 24 [SetUp] SetUp()25 public void SetUp () 26 { 27 converter = new Int64Converter (); 28 } 29 30 [Test] CanConvertFrom()31 public void CanConvertFrom () 32 { 33 Assert.IsTrue (converter.CanConvertFrom (typeof (string)), "#1"); 34 Assert.IsFalse (converter.CanConvertFrom (typeof (long)), "#2"); 35 Assert.IsFalse (converter.CanConvertFrom (typeof (object)), "#3"); 36 Assert.IsTrue (converter.CanConvertFrom (typeof (InstanceDescriptor)), "#4"); 37 } 38 39 [Test] CanConvertTo()40 public void CanConvertTo () 41 { 42 Assert.IsTrue (converter.CanConvertTo (typeof (string)), "#1"); 43 Assert.IsFalse (converter.CanConvertTo (typeof (object)), "#2"); 44 Assert.IsTrue (converter.CanConvertTo (typeof (int)), "#3"); 45 } 46 47 [Test] ConvertFrom_MinValue()48 public void ConvertFrom_MinValue () 49 { 50 Assert.AreEqual (long.MinValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "#8000000000000000"), "#1"); 51 Assert.AreEqual (long.MinValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "#0x8000000000000000"), "#2"); 52 Assert.AreEqual (long.MinValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "#0X8000000000000000"), "#3"); 53 Assert.AreEqual (long.MinValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "0x8000000000000000"), "#4"); 54 Assert.AreEqual (long.MinValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "0X8000000000000000"), "#5"); 55 } 56 57 [Test] ConvertFrom_MaxValue()58 public void ConvertFrom_MaxValue () 59 { 60 Assert.AreEqual (long.MaxValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "#7fffffffffffffff"), "#1"); 61 Assert.AreEqual (long.MaxValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "#7FFFFFFFFFFFFFFF"), "#2"); 62 Assert.AreEqual (long.MaxValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "#0x7fffffffffffffff"), "#3"); 63 Assert.AreEqual (long.MaxValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "#0X7FFFFFFFFFFFFFFF"), "#4"); 64 Assert.AreEqual (long.MaxValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "0x7fffffffffffffff"), "#5"); 65 Assert.AreEqual (long.MaxValue, converter.ConvertFrom (null, CultureInfo.InvariantCulture, "0X7FFFFFFFFFFFFFFF"), "#6"); 66 } 67 68 69 [Test] 70 [ExpectedException (typeof (NotSupportedException))] ConvertFrom_Object()71 public void ConvertFrom_Object () 72 { 73 converter.ConvertFrom (new object ()); 74 } 75 76 [Test] 77 [ExpectedException (typeof (NotSupportedException))] ConvertFrom_Int32()78 public void ConvertFrom_Int32 () 79 { 80 converter.ConvertFrom (10); 81 } 82 83 [Test] ConvertTo_MinValue()84 public void ConvertTo_MinValue () 85 { 86 Assert.AreEqual (long.MinValue.ToString (CultureInfo.InvariantCulture), 87 converter.ConvertTo (null, CultureInfo.InvariantCulture, long.MinValue, 88 typeof (string)), "#1"); 89 Assert.AreEqual (long.MinValue.ToString (CultureInfo.CurrentCulture), 90 converter.ConvertTo (null, CultureInfo.CurrentCulture, long.MinValue, 91 typeof (string)), "#2"); 92 Assert.AreEqual (long.MinValue.ToString (CultureInfo.CurrentCulture), 93 converter.ConvertTo (long.MinValue, typeof (string)), "#3"); 94 } 95 96 [Test] ConvertTo_MaxValue()97 public void ConvertTo_MaxValue () 98 { 99 Assert.AreEqual (long.MaxValue.ToString (CultureInfo.InvariantCulture), 100 converter.ConvertTo (null, CultureInfo.InvariantCulture, long.MaxValue, 101 typeof (string)), "#1"); 102 Assert.AreEqual (long.MaxValue.ToString (CultureInfo.CurrentCulture), 103 converter.ConvertTo (null, CultureInfo.CurrentCulture, long.MaxValue, 104 typeof (string)), "#2"); 105 Assert.AreEqual (long.MaxValue.ToString (CultureInfo.CurrentCulture), 106 converter.ConvertTo (long.MaxValue, typeof (string)), "#3"); 107 } 108 109 [Test] ConvertToString()110 public void ConvertToString () 111 { 112 CultureInfo culture = new MyCultureInfo (); 113 NumberFormatInfo numberFormatInfo = (NumberFormatInfo) culture.GetFormat (typeof (NumberFormatInfo)); 114 115 Assert.AreEqual (numberFormatInfo.NegativeSign + "5", converter.ConvertToString (null, culture, (long) -5), "#1"); 116 Assert.AreEqual (culture.NumberFormat.NegativeSign + "5", converter.ConvertToString (null, culture, (int) -5), "#2"); 117 } 118 119 [Test] ConvertFromString()120 public void ConvertFromString () 121 { 122 CultureInfo culture = new MyCultureInfo (); 123 NumberFormatInfo numberFormatInfo = (NumberFormatInfo) culture.GetFormat (typeof (NumberFormatInfo)); 124 125 Assert.AreEqual (-5, converter.ConvertFrom (null, culture, numberFormatInfo.NegativeSign + "5")); 126 } 127 128 [Test] ConvertFromString_Invalid1()129 public void ConvertFromString_Invalid1 () 130 { 131 try { 132 converter.ConvertFromString (null, CultureInfo.InvariantCulture, "*1"); 133 Assert.Fail ("#1"); 134 } catch (AssertionException) { 135 throw; 136 } catch (Exception ex) { 137 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2"); 138 Assert.IsNotNull (ex.InnerException, "#3"); 139 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3"); 140 } 141 } 142 143 [Test] ConvertFromString_Invalid2()144 public void ConvertFromString_Invalid2 () 145 { 146 try { 147 converter.ConvertFromString (null, CultureInfo.InvariantCulture, 148 double.MaxValue.ToString(CultureInfo.InvariantCulture)); 149 Assert.Fail ("#1"); 150 } catch (AssertionException) { 151 throw; 152 } catch (Exception ex) { 153 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2"); 154 Assert.IsNotNull (ex.InnerException, "#3"); 155 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3"); 156 } 157 } 158 159 [Test] ConvertFromString_Invalid3()160 public void ConvertFromString_Invalid3 () 161 { 162 try { 163 converter.ConvertFromString ("*1"); 164 Assert.Fail ("#1"); 165 } catch (AssertionException) { 166 throw; 167 } catch (Exception ex) { 168 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2"); 169 Assert.IsNotNull (ex.InnerException, "#3"); 170 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3"); 171 } 172 } 173 174 [Test] ConvertFromString_Invalid4()175 public void ConvertFromString_Invalid4 () 176 { 177 try { 178 converter.ConvertFromString (double.MaxValue.ToString (CultureInfo.CurrentCulture)); 179 Assert.Fail ("#1"); 180 } catch (AssertionException) { 181 throw; 182 } catch (Exception ex) { 183 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2"); 184 Assert.IsNotNull (ex.InnerException, "#3"); 185 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3"); 186 } 187 } 188 189 [Test] ConvertFrom_InvalidString1()190 public void ConvertFrom_InvalidString1 () 191 { 192 try { 193 converter.ConvertFrom (null, CultureInfo.InvariantCulture, "*1"); 194 Assert.Fail ("#1"); 195 } catch (AssertionException) { 196 throw; 197 } catch (Exception ex) { 198 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2"); 199 Assert.IsNotNull (ex.InnerException, "#3"); 200 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3"); 201 } 202 } 203 204 [Test] ConvertFrom_InvalidString2()205 public void ConvertFrom_InvalidString2 () 206 { 207 try { 208 converter.ConvertFrom (null, CultureInfo.InvariantCulture, 209 double.MaxValue.ToString (CultureInfo.InvariantCulture)); 210 Assert.Fail ("#1"); 211 } catch (AssertionException) { 212 throw; 213 } catch (Exception ex) { 214 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2"); 215 Assert.IsNotNull (ex.InnerException, "#3"); 216 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3"); 217 } 218 } 219 220 [Test] ConvertFrom_InvalidString3()221 public void ConvertFrom_InvalidString3 () 222 { 223 try { 224 converter.ConvertFrom ("*1"); 225 Assert.Fail ("#1"); 226 } catch (AssertionException) { 227 throw; 228 } catch (Exception ex) { 229 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2"); 230 Assert.IsNotNull (ex.InnerException, "#3"); 231 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3"); 232 } 233 } 234 235 [Test] ConvertFrom_InvalidString4()236 public void ConvertFrom_InvalidString4 () 237 { 238 try { 239 converter.ConvertFrom (double.MaxValue.ToString (CultureInfo.CurrentCulture)); 240 Assert.Fail ("#1"); 241 } catch (AssertionException) { 242 throw; 243 } catch (Exception ex) { 244 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2"); 245 Assert.IsNotNull (ex.InnerException, "#3"); 246 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3"); 247 } 248 } 249 250 [Serializable] 251 private sealed class MyCultureInfo : CultureInfo 252 { MyCultureInfo()253 internal MyCultureInfo () 254 : base ("en-US") 255 { 256 } 257 GetFormat(Type formatType)258 public override object GetFormat (Type formatType) 259 { 260 if (formatType == typeof (NumberFormatInfo)) { 261 NumberFormatInfo nfi = (NumberFormatInfo) ((NumberFormatInfo) base.GetFormat (formatType)).Clone (); 262 263 nfi.NegativeSign = "myNegativeSign"; 264 return NumberFormatInfo.ReadOnly (nfi); 265 } else { 266 return base.GetFormat (formatType); 267 } 268 } 269 270 // adding this override in 1.x shows different result in .NET (it is ignored). 271 // Some compatibility kids might want to fix this issue. 272 public override NumberFormatInfo NumberFormat { 273 get { 274 NumberFormatInfo nfi = (NumberFormatInfo) base.NumberFormat.Clone (); 275 nfi.NegativeSign = "myNegativeSign"; 276 return nfi; 277 } 278 set { throw new NotSupportedException (); } 279 } 280 } 281 } 282 } 283