3 using System.Runtime.Serialization.Formatters.Binary;
6 namespace MonoTests.System
8 public class TimeZoneInfo_AdjustmentRuleTest
11 public class CreateAdjustmentRuleException
14 [ExpectedException (typeof (ArgumentException))]
15 public void DateTimeKindNotUnspecified ()
17 DateTime dateStart = new DateTime (2007,01,01, 0,0,0,DateTimeKind.Utc);
18 DateTime dateEnd = new DateTime (2008,01,01);
19 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
20 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
21 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
25 [ExpectedException (typeof (ArgumentException))]
26 public void TransitionEndEqualStart ()
28 DateTime dateStart = new DateTime (2007,01,01);
29 DateTime dateEnd = new DateTime (2008,01,01);
30 TimeZoneInfo.TransitionTime daylightTransition = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
31 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransition, daylightTransition);
35 [ExpectedException (typeof (ArgumentException))]
36 public void DateIncludesTimeOfDay ()
38 DateTime dateStart = new DateTime (2007,01,01, 0,1,0);
39 DateTime dateEnd = new DateTime (2008,01,01);
40 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
41 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
42 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
46 public void DatesMaxMinValid ()
49 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
50 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
51 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (DateTime.MinValue.Date, DateTime.MaxValue.Date, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
53 Assert.Fail ("DateTime.MinValue and MaxValue are not valid...");
58 [ExpectedException (typeof (ArgumentOutOfRangeException))]
59 public void EndBeforeStart ()
61 if (Environment.OSVersion.Platform != PlatformID.Unix)
62 throw new ArgumentOutOfRangeException ();;
63 DateTime dateStart = new DateTime (2007,01,01);
64 DateTime dateEnd = new DateTime (2006,01,01);
65 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
66 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
67 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
71 [ExpectedException (typeof (ArgumentOutOfRangeException))]
72 public void DeltaOutOfRange ()
74 DateTime dateStart = new DateTime (2007,01,01);
75 DateTime dateEnd = new DateTime (2008,01,01);
76 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
77 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
78 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (14,1,0), daylightTransitionStart, daylightTransitionEnd);
82 [ExpectedException (typeof (ArgumentOutOfRangeException))]
83 public void DeltaNotInSeconds ()
85 if (Environment.OSVersion.Platform != PlatformID.Unix)
86 throw new ArgumentOutOfRangeException ();;
87 DateTime dateStart = new DateTime (2007,01,01);
88 DateTime dateEnd = new DateTime (2008,01,01);
89 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
90 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
91 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (55), daylightTransitionStart, daylightTransitionEnd);
96 public class NonExceptional
99 public void Serialization_Deserialization ()
101 TimeZoneInfo.TransitionTime start = TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1,1,1,1,0,0), 3, 5, DayOfWeek.Sunday);
102 TimeZoneInfo.TransitionTime end = TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1,1,1,2,0,0), 10, 5, DayOfWeek.Sunday);
103 TimeZoneInfo.AdjustmentRule rule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (DateTime.MinValue.Date, DateTime.MaxValue.Date, new TimeSpan (1,0,0), start, end);
104 MemoryStream stream = new MemoryStream ();
105 BinaryFormatter formatter = new BinaryFormatter ();
106 formatter.Serialize (stream, rule);
108 TimeZoneInfo.AdjustmentRule deserialized = (TimeZoneInfo.AdjustmentRule) formatter.Deserialize (stream);
112 Assert.IsTrue (rule.Equals (deserialized));