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 public void EndBeforeStart ()
60 DateTime dateStart = new DateTime (2007,01,01);
61 DateTime dateEnd = new DateTime (2006,01,01);
62 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
63 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
65 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
67 } catch (ArgumentException) {
72 [ExpectedException (typeof (ArgumentOutOfRangeException))]
73 public void DeltaOutOfRange ()
75 DateTime dateStart = new DateTime (2007,01,01);
76 DateTime dateEnd = new DateTime (2008,01,01);
77 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
78 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
79 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (14,1,0), daylightTransitionStart, daylightTransitionEnd);
83 public void DeltaNotInSeconds ()
85 DateTime dateStart = new DateTime (2007,01,01);
86 DateTime dateEnd = new DateTime (2008,01,01);
87 TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
88 TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
90 TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (55), daylightTransitionStart, daylightTransitionEnd);
92 } catch (ArgumentException) {
98 public class NonExceptional
101 public void Serialization_Deserialization ()
103 TimeZoneInfo.TransitionTime start = TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1,1,1,1,0,0), 3, 5, DayOfWeek.Sunday);
104 TimeZoneInfo.TransitionTime end = TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1,1,1,2,0,0), 10, 5, DayOfWeek.Sunday);
105 TimeZoneInfo.AdjustmentRule rule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (DateTime.MinValue.Date, DateTime.MaxValue.Date, new TimeSpan (1,0,0), start, end);
106 MemoryStream stream = new MemoryStream ();
107 BinaryFormatter formatter = new BinaryFormatter ();
108 formatter.Serialize (stream, rule);
110 TimeZoneInfo.AdjustmentRule deserialized = (TimeZoneInfo.AdjustmentRule) formatter.Deserialize (stream);
114 Assert.IsTrue (rule.Equals (deserialized));