2 // System.ComponentModel.DateTimeConverter test cases
5 // Gert Driesen (drieseng@users.sourceforge.net)
7 // (c) 2005 Novell, Inc. (http://www.ximian.com)
11 using System.ComponentModel;
12 using System.ComponentModel.Design.Serialization;
13 using System.Globalization;
15 using NUnit.Framework;
17 namespace MonoTests.System.ComponentModel
20 public class DateTimeConverterTests
22 private DateTimeConverter converter;
23 private string pattern;
28 converter = new DateTimeConverter ();
30 DateTimeFormatInfo info = CultureInfo.CurrentCulture.DateTimeFormat;
31 pattern = info.ShortDatePattern + " " + info.ShortTimePattern;
35 public void CanConvertFrom ()
37 Assert.IsTrue (converter.CanConvertFrom (typeof (string)), "#1");
38 Assert.IsFalse (converter.CanConvertFrom (typeof (DateTime)), "#2");
39 Assert.IsFalse (converter.CanConvertFrom (typeof (object)), "#3");
40 Assert.IsTrue (converter.CanConvertFrom (typeof (InstanceDescriptor)), "#4");
44 public void CanConvertTo ()
46 Assert.IsTrue (converter.CanConvertTo (typeof (string)), "#1");
47 Assert.IsFalse (converter.CanConvertTo (typeof (object)), "#2");
48 Assert.IsTrue (converter.CanConvertTo (typeof (InstanceDescriptor)), "#3");
52 public void ConvertFrom_String ()
54 DateTime date = DateTime.Now;
55 DateTime newDate = (DateTime) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
56 date.ToString(CultureInfo.InvariantCulture));
58 Assert.AreEqual (date.Year, newDate.Year, "#1");
59 Assert.AreEqual (date.Month, newDate.Month, "#2");
60 Assert.AreEqual (date.Day, newDate.Day, "#3");
61 Assert.AreEqual (date.Hour, newDate.Hour, "#4");
62 Assert.AreEqual (date.Minute, newDate.Minute, "#5");
63 Assert.AreEqual (date.Second, newDate.Second, "#6");
64 Assert.AreEqual (0, newDate.Millisecond, "#7");
68 [ExpectedException (typeof (NotSupportedException))]
69 public void ConvertFrom_Object ()
71 converter.ConvertFrom (new object ());
75 [ExpectedException (typeof (NotSupportedException))]
76 public void ConvertFrom_Int32 ()
78 converter.ConvertFrom (10);
82 public void ConvertTo_MinValue ()
84 Assert.AreEqual (string.Empty, converter.ConvertTo (null,
85 CultureInfo.InvariantCulture, DateTime.MinValue, typeof (string)), "#1");
86 Assert.AreEqual (string.Empty, converter.ConvertTo (null,
87 CultureInfo.CurrentCulture, DateTime.MinValue, typeof (string)), "#2");
88 Assert.AreEqual (string.Empty, converter.ConvertTo (DateTime.MinValue,
89 typeof (string)), "#3");
93 public void ConvertTo_MaxValue ()
95 Assert.AreEqual (DateTime.MaxValue.ToString (CultureInfo.InvariantCulture),
96 converter.ConvertTo (null, CultureInfo.InvariantCulture, DateTime.MaxValue,
97 typeof (string)), "#1");
98 Assert.AreEqual (DateTime.MaxValue.ToString (pattern,
99 CultureInfo.CurrentCulture), converter.ConvertTo (null,
100 CultureInfo.CurrentCulture, DateTime.MaxValue, typeof (string)),
102 Assert.AreEqual (DateTime.MaxValue.ToString (pattern,
103 CultureInfo.CurrentCulture), converter.ConvertTo (DateTime.MaxValue,
104 typeof (string)), "#3");
108 public void ConvertToString_MinValue ()
110 Assert.AreEqual (string.Empty, converter.ConvertToString (null,
111 CultureInfo.InvariantCulture, DateTime.MinValue), "#1");
113 Assert.AreEqual (string.Empty, converter.ConvertToString (null,
114 DateTime.MinValue), "#2");
115 Assert.AreEqual (string.Empty, converter.ConvertToString (null,
116 CultureInfo.CurrentCulture, DateTime.MinValue), "#3");
117 Assert.AreEqual (string.Empty, converter.ConvertToString (DateTime.MinValue),
122 public void ConvertToString_MaxValue ()
124 Assert.AreEqual (DateTime.MaxValue.ToString (CultureInfo.InvariantCulture),
125 converter.ConvertToString (null, CultureInfo.InvariantCulture,
126 DateTime.MaxValue), "#1");
128 Assert.AreEqual (DateTime.MaxValue.ToString (pattern, CultureInfo.CurrentCulture),
129 converter.ConvertToString (null, DateTime.MaxValue), "#2");
130 Assert.AreEqual (DateTime.MaxValue.ToString (pattern, CultureInfo.CurrentCulture),
131 converter.ConvertToString (null, CultureInfo.CurrentCulture,
132 DateTime.MaxValue), "#3");
133 Assert.AreEqual (DateTime.MaxValue.ToString (pattern, CultureInfo.CurrentCulture),
134 converter.ConvertToString (DateTime.MaxValue), "#4");
138 public void ConvertToString ()
140 CultureInfo culture = new MyCultureInfo ();
141 DateTimeFormatInfo info = (DateTimeFormatInfo) culture.GetFormat (typeof (DateTimeFormatInfo));
142 DateTime date = DateTime.Now;
144 Assert.AreEqual (date.ToString (info.ShortDatePattern + " " +
145 info.ShortTimePattern, culture), converter.ConvertToString (
146 null, culture, date));
150 public void ConvertFromString ()
152 CultureInfo culture = new MyCultureInfo ();
153 DateTimeFormatInfo info = (DateTimeFormatInfo) culture.GetFormat (typeof (DateTimeFormatInfo));
154 DateTime date = DateTime.Now;
156 DateTime newDate = (DateTime) converter.ConvertFrom (null, culture, date.ToString("G", info));
158 Assert.AreEqual (date.Year, newDate.Year, "#1");
159 Assert.AreEqual (date.Month, newDate.Month, "#2");
160 Assert.AreEqual (date.Day, newDate.Day, "#3");
161 Assert.AreEqual (date.Hour, newDate.Hour, "#4");
162 Assert.AreEqual (date.Minute, newDate.Minute, "#5");
163 Assert.AreEqual (date.Second, newDate.Second, "#6");
164 Assert.AreEqual (0, newDate.Millisecond, "#7");
168 [ExpectedException (typeof (FormatException))]
169 public void ConvertFrom_InvalidValue ()
171 converter.ConvertFrom ("*1");
175 [ExpectedException (typeof (FormatException))]
176 public void ConvertFrom_InvalidValue_Invariant ()
178 converter.ConvertFrom (null, CultureInfo.InvariantCulture, "*1");
182 [ExpectedException (typeof (FormatException))]
183 public void ConvertFromString_InvalidValue ()
185 converter.ConvertFromString ("*1");
189 [ExpectedException (typeof (FormatException))]
190 public void ConvertFromString_InvalidValue_Invariant ()
192 converter.ConvertFromString (null, CultureInfo.InvariantCulture, "*1");
196 private sealed class MyCultureInfo : CultureInfo
198 internal MyCultureInfo () : base ("en-US")
202 public override object GetFormat (Type formatType)
204 if (formatType == typeof (DateTimeFormatInfo)) {
205 DateTimeFormatInfo info = (DateTimeFormatInfo) ((DateTimeFormatInfo) base.GetFormat (formatType)).Clone ();
206 info.ShortDatePattern = "MM?dd?yyyy";
207 info.ShortTimePattern = "hh!mm";
208 return DateTimeFormatInfo.ReadOnly (info);
210 return base.GetFormat (formatType);