TimeZoneInfo.AdjustmentRuleTest.cs 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using NUnit.Framework;
  3. #if NET_2_0
  4. namespace MonoTests.System
  5. {
  6. public class TimeZoneInfo_AdjustmentRuleTest
  7. {
  8. [TestFixture]
  9. public class CreateAdjustmentRuleException
  10. {
  11. [Test]
  12. [ExpectedException (typeof (ArgumentException))]
  13. public void DateTimeKindNotUnspecified ()
  14. {
  15. DateTime dateStart = new DateTime (2007,01,01, 0,0,0,DateTimeKind.Utc);
  16. DateTime dateEnd = new DateTime (2008,01,01);
  17. TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
  18. TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
  19. TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
  20. }
  21. [Test]
  22. [ExpectedException (typeof (ArgumentException))]
  23. public void TransitionEndEqualStart ()
  24. {
  25. DateTime dateStart = new DateTime (2007,01,01);
  26. DateTime dateEnd = new DateTime (2008,01,01);
  27. TimeZoneInfo.TransitionTime daylightTransition = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
  28. TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransition, daylightTransition);
  29. }
  30. [Test]
  31. [ExpectedException (typeof (ArgumentException))]
  32. public void DateIncludesTimeOfDay ()
  33. {
  34. DateTime dateStart = new DateTime (2007,01,01, 0,1,0);
  35. DateTime dateEnd = new DateTime (2008,01,01);
  36. TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
  37. TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
  38. TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
  39. }
  40. [Test]
  41. public void DatesMaxMinValid ()
  42. {
  43. try {
  44. TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
  45. TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
  46. TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (DateTime.MinValue.Date, DateTime.MaxValue.Date, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
  47. } catch {
  48. Assert.Fail ("DateTime.MinValue and MaxValue are not valid...");
  49. }
  50. }
  51. [Test]
  52. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  53. public void EndBeforeStart ()
  54. {
  55. if (Environment.OSVersion.Platform != PlatformID.Unix)
  56. throw new ArgumentOutOfRangeException ();;
  57. DateTime dateStart = new DateTime (2007,01,01);
  58. DateTime dateEnd = new DateTime (2006,01,01);
  59. TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
  60. TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
  61. TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
  62. }
  63. [Test]
  64. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  65. public void DeltaOutOfRange ()
  66. {
  67. DateTime dateStart = new DateTime (2007,01,01);
  68. DateTime dateEnd = new DateTime (2008,01,01);
  69. TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
  70. TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
  71. TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (14,1,0), daylightTransitionStart, daylightTransitionEnd);
  72. }
  73. [Test]
  74. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  75. public void DeltaNotInSeconds ()
  76. {
  77. if (Environment.OSVersion.Platform != PlatformID.Unix)
  78. throw new ArgumentOutOfRangeException ();;
  79. DateTime dateStart = new DateTime (2007,01,01);
  80. DateTime dateEnd = new DateTime (2008,01,01);
  81. TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
  82. TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
  83. TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (55), daylightTransitionStart, daylightTransitionEnd);
  84. }
  85. }
  86. }
  87. }
  88. #endif