DateTimeConverterTests.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. //
  2. // System.ComponentModel.DateTimeConverter test cases
  3. //
  4. // Authors:
  5. // Gert Driesen ([email protected])
  6. //
  7. // (c) 2005 Novell, Inc. (http://www.ximian.com)
  8. //
  9. using System;
  10. using System.ComponentModel;
  11. using System.ComponentModel.Design.Serialization;
  12. using System.Globalization;
  13. using NUnit.Framework;
  14. namespace MonoTests.System.ComponentModel
  15. {
  16. [TestFixture]
  17. public class DateTimeConverterTests
  18. {
  19. private DateTimeConverter converter;
  20. private string pattern;
  21. [SetUp]
  22. public void SetUp ()
  23. {
  24. converter = new DateTimeConverter ();
  25. DateTimeFormatInfo info = CultureInfo.CurrentCulture.DateTimeFormat;
  26. pattern = info.ShortDatePattern + " " + info.ShortTimePattern;
  27. }
  28. [Test]
  29. public void CanConvertFrom ()
  30. {
  31. Assert.IsTrue (converter.CanConvertFrom (typeof (string)), "#1");
  32. Assert.IsFalse (converter.CanConvertFrom (typeof (DateTime)), "#2");
  33. Assert.IsFalse (converter.CanConvertFrom (typeof (object)), "#3");
  34. Assert.IsTrue (converter.CanConvertFrom (typeof (InstanceDescriptor)), "#4");
  35. }
  36. [Test]
  37. public void CanConvertTo ()
  38. {
  39. Assert.IsTrue (converter.CanConvertTo (typeof (string)), "#1");
  40. Assert.IsFalse (converter.CanConvertTo (typeof (object)), "#2");
  41. Assert.IsTrue (converter.CanConvertTo (typeof (InstanceDescriptor)), "#3");
  42. }
  43. [Test]
  44. public void ConvertFrom_String ()
  45. {
  46. DateTime date = DateTime.Now;
  47. DateTime newDate = (DateTime) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
  48. date.ToString(CultureInfo.InvariantCulture));
  49. Assert.AreEqual (date.Year, newDate.Year, "#1");
  50. Assert.AreEqual (date.Month, newDate.Month, "#2");
  51. Assert.AreEqual (date.Day, newDate.Day, "#3");
  52. Assert.AreEqual (date.Hour, newDate.Hour, "#4");
  53. Assert.AreEqual (date.Minute, newDate.Minute, "#5");
  54. Assert.AreEqual (date.Second, newDate.Second, "#6");
  55. Assert.AreEqual (0, newDate.Millisecond, "#7");
  56. }
  57. [Test]
  58. [ExpectedException (typeof (NotSupportedException))]
  59. public void ConvertFrom_Object ()
  60. {
  61. converter.ConvertFrom (new object ());
  62. }
  63. [Test]
  64. [ExpectedException (typeof (NotSupportedException))]
  65. public void ConvertFrom_Int32 ()
  66. {
  67. converter.ConvertFrom (10);
  68. }
  69. [Test]
  70. public void ConvertTo_MinValue ()
  71. {
  72. Assert.AreEqual (string.Empty, converter.ConvertTo (null,
  73. CultureInfo.InvariantCulture, DateTime.MinValue, typeof (string)), "#1");
  74. Assert.AreEqual (string.Empty, converter.ConvertTo (null,
  75. CultureInfo.CurrentCulture, DateTime.MinValue, typeof (string)), "#2");
  76. Assert.AreEqual (string.Empty, converter.ConvertTo (DateTime.MinValue,
  77. typeof (string)), "#3");
  78. }
  79. [Test]
  80. public void ConvertTo_MaxValue ()
  81. {
  82. Assert.AreEqual (DateTime.MaxValue.ToString (CultureInfo.InvariantCulture),
  83. converter.ConvertTo (null, CultureInfo.InvariantCulture, DateTime.MaxValue,
  84. typeof (string)), "#1");
  85. // FIXME: We probably shouldn't be using CurrentCulture in these tests.
  86. if (CultureInfo.CurrentCulture == CultureInfo.InvariantCulture)
  87. return;
  88. Assert.AreEqual (DateTime.MaxValue.ToString (pattern,
  89. CultureInfo.CurrentCulture), converter.ConvertTo (null,
  90. CultureInfo.CurrentCulture, DateTime.MaxValue, typeof (string)),
  91. "#2");
  92. Assert.AreEqual (DateTime.MaxValue.ToString (pattern,
  93. CultureInfo.CurrentCulture), converter.ConvertTo (DateTime.MaxValue,
  94. typeof (string)), "#3");
  95. }
  96. [Test]
  97. public void ConvertToString_MinValue ()
  98. {
  99. Assert.AreEqual (string.Empty, converter.ConvertToString (null,
  100. CultureInfo.InvariantCulture, DateTime.MinValue), "#1");
  101. Assert.AreEqual (string.Empty, converter.ConvertToString (null,
  102. DateTime.MinValue), "#2");
  103. Assert.AreEqual (string.Empty, converter.ConvertToString (null,
  104. CultureInfo.CurrentCulture, DateTime.MinValue), "#3");
  105. Assert.AreEqual (string.Empty, converter.ConvertToString (DateTime.MinValue),
  106. "#4");
  107. }
  108. [Test]
  109. public void ConvertToString_MaxValue ()
  110. {
  111. Assert.AreEqual (DateTime.MaxValue.ToString (CultureInfo.InvariantCulture),
  112. converter.ConvertToString (null, CultureInfo.InvariantCulture,
  113. DateTime.MaxValue), "#1");
  114. // FIXME: We probably shouldn't be using CurrentCulture in these tests.
  115. if (CultureInfo.CurrentCulture == CultureInfo.InvariantCulture)
  116. return;
  117. Assert.AreEqual (DateTime.MaxValue.ToString (pattern, CultureInfo.CurrentCulture),
  118. converter.ConvertToString (null, DateTime.MaxValue), "#2");
  119. Assert.AreEqual (DateTime.MaxValue.ToString (pattern, CultureInfo.CurrentCulture),
  120. converter.ConvertToString (null, CultureInfo.CurrentCulture,
  121. DateTime.MaxValue), "#3");
  122. Assert.AreEqual (DateTime.MaxValue.ToString (pattern, CultureInfo.CurrentCulture),
  123. converter.ConvertToString (DateTime.MaxValue), "#4");
  124. }
  125. [Test]
  126. public void ConvertToString ()
  127. {
  128. CultureInfo culture = new MyCultureInfo ();
  129. DateTimeFormatInfo info = (DateTimeFormatInfo) culture.GetFormat (typeof (DateTimeFormatInfo));
  130. DateTime date = DateTime.Now;
  131. Assert.AreEqual (date.ToString (info.ShortDatePattern + " " +
  132. info.ShortTimePattern, culture), converter.ConvertToString (
  133. null, culture, date));
  134. }
  135. [Test]
  136. public void ConvertFromString ()
  137. {
  138. CultureInfo culture = new MyCultureInfo ();
  139. DateTimeFormatInfo info = (DateTimeFormatInfo) culture.GetFormat (typeof (DateTimeFormatInfo));
  140. DateTime date = DateTime.Now;
  141. DateTime newDate = (DateTime) converter.ConvertFrom (null, culture, date.ToString("G", info));
  142. Assert.AreEqual (date.Year, newDate.Year, "#1");
  143. Assert.AreEqual (date.Month, newDate.Month, "#2");
  144. Assert.AreEqual (date.Day, newDate.Day, "#3");
  145. Assert.AreEqual (date.Hour, newDate.Hour, "#4");
  146. Assert.AreEqual (date.Minute, newDate.Minute, "#5");
  147. Assert.AreEqual (date.Second, newDate.Second, "#6");
  148. Assert.AreEqual (0, newDate.Millisecond, "#7");
  149. }
  150. [Test]
  151. [ExpectedException (typeof (FormatException))]
  152. public void ConvertFrom_InvalidValue ()
  153. {
  154. converter.ConvertFrom ("*1");
  155. }
  156. [Test]
  157. [ExpectedException (typeof (FormatException))]
  158. public void ConvertFrom_InvalidValue_Invariant ()
  159. {
  160. converter.ConvertFrom (null, CultureInfo.InvariantCulture, "*1");
  161. }
  162. [Test]
  163. [ExpectedException (typeof (FormatException))]
  164. public void ConvertFromString_InvalidValue ()
  165. {
  166. converter.ConvertFromString ("*1");
  167. }
  168. [Test]
  169. [ExpectedException (typeof (FormatException))]
  170. public void ConvertFromString_InvalidValue_Invariant ()
  171. {
  172. converter.ConvertFromString (null, CultureInfo.InvariantCulture, "*1");
  173. }
  174. [Serializable]
  175. private sealed class MyCultureInfo : CultureInfo
  176. {
  177. internal MyCultureInfo () : base ("en-US")
  178. {
  179. }
  180. public override object GetFormat (Type formatType)
  181. {
  182. if (formatType == typeof (DateTimeFormatInfo)) {
  183. DateTimeFormatInfo info = (DateTimeFormatInfo) ((DateTimeFormatInfo) base.GetFormat (formatType)).Clone ();
  184. info.ShortDatePattern = "MM?dd?yyyy";
  185. info.ShortTimePattern = "hh!mm";
  186. return DateTimeFormatInfo.ReadOnly (info);
  187. } else {
  188. return base.GetFormat (formatType);
  189. }
  190. }
  191. }
  192. }
  193. }