2 // TimeZoneTest.cs - NUnit Test Cases for the System.TimeZone struct
5 // Martin Baulig (martin@gnome.org)
6 // Sebastien Pouliot <sebastien@ximian.com>
8 // (C) 2002 Martin Baulig
9 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
12 using NUnit.Framework;
15 using System.Threading;
16 using System.Globalization;
17 using System.Runtime.Serialization.Formatters.Binary;
19 namespace MonoTests.System {
22 public class TimeZoneTest {
24 private CultureInfo oldcult;
26 public TimeZoneTest() {}
29 protected void SetUp ()
31 oldcult = Thread.CurrentThread.CurrentCulture;
32 Thread.CurrentThread.CurrentCulture = new CultureInfo ("");
36 protected void TearDown ()
38 Thread.CurrentThread.CurrentCulture = oldcult;
41 private void CET (TimeZone t1)
43 Assert.AreEqual("CET", t1.StandardName, "A01");
44 Assert.AreEqual("CEST", t1.DaylightName, "A02");
46 DaylightTime d1 = t1.GetDaylightChanges (2002);
47 Assert.AreEqual("03/31/2002 02:00:00", d1.Start.ToString ("G"), "A03");
48 Assert.AreEqual("10/27/2002 03:00:00", d1.End.ToString ("G"), "A04");
49 Assert.AreEqual(36000000000L, d1.Delta.Ticks, "A05");
51 DaylightTime d2 = t1.GetDaylightChanges (1996);
52 Assert.AreEqual("03/31/1996 02:00:00", d2.Start.ToString ("G"), "A06");
53 Assert.AreEqual("10/27/1996 03:00:00", d2.End.ToString ("G"), "A07");
54 Assert.AreEqual(36000000000L, d2.Delta.Ticks, "A08");
56 DateTime d3 = new DateTime (2002,2,25);
57 Assert.AreEqual(false, t1.IsDaylightSavingTime (d3), "A09");
58 DateTime d4 = new DateTime (2002,4,2);
59 Assert.AreEqual(true, t1.IsDaylightSavingTime (d4), "A10");
60 DateTime d5 = new DateTime (2002,11,4);
61 Assert.AreEqual(false, t1.IsDaylightSavingTime (d5), "A11");
63 Assert.AreEqual(36000000000L, t1.GetUtcOffset (d3).Ticks, "A12");
64 Assert.AreEqual(72000000000L, t1.GetUtcOffset (d4).Ticks, "A13");
65 Assert.AreEqual(36000000000L, t1.GetUtcOffset (d5).Ticks, "A14");
68 private void EST (TimeZone t1)
70 // It could be EST though...
71 //Assert.AreEqual("Eastern Standard Time", t1.StandardName, "B01");
72 //Assert.AreEqual("Eastern Daylight Time", t1.DaylightName, "B02");
74 DaylightTime d1 = t1.GetDaylightChanges (2002);
75 Assert.AreEqual("04/07/2002 02:00:00", d1.Start.ToString ("G"), "B03");
76 Assert.AreEqual("10/27/2002 02:00:00", d1.End.ToString ("G"), "B04");
77 Assert.AreEqual(36000000000L, d1.Delta.Ticks, "B05");
79 DaylightTime d2 = t1.GetDaylightChanges (1996);
80 Assert.AreEqual("04/07/1996 02:00:00", d2.Start.ToString ("G"), "B06");
81 Assert.AreEqual("10/27/1996 02:00:00", d2.End.ToString ("G"), "B07");
82 Assert.AreEqual(36000000000L, d2.Delta.Ticks, "B08");
84 DateTime d3 = new DateTime (2002,2,25);
85 Assert.AreEqual(false, t1.IsDaylightSavingTime (d3), "B09");
86 DateTime d4 = new DateTime (2002,4,8);
87 Assert.AreEqual(true, t1.IsDaylightSavingTime (d4), "B10");
88 DateTime d5 = new DateTime (2002,11,4);
89 Assert.AreEqual(false, t1.IsDaylightSavingTime (d5), "B11");
91 Assert.AreEqual(-180000000000L, t1.GetUtcOffset (d3).Ticks, "B12");
92 Assert.AreEqual(-144000000000L, t1.GetUtcOffset (d4).Ticks, "B13");
93 Assert.AreEqual(-180000000000L, t1.GetUtcOffset (d5).Ticks, "B14");
96 private void TST (TimeZone t1)
98 Assert.AreEqual("Tokyo Standard Time", t1.StandardName, "C01");
99 Assert.AreEqual("Tokyo Standard Time", t1.DaylightName, "C02");
101 DateTime d3 = new DateTime (2002,2,25);
102 Assert.AreEqual(false, t1.IsDaylightSavingTime (d3), "C09");
103 DateTime d4 = new DateTime (2002,4,8);
104 Assert.AreEqual(false, t1.IsDaylightSavingTime (d4), "C10");
105 DateTime d5 = new DateTime (2002,11,4);
106 Assert.AreEqual(false, t1.IsDaylightSavingTime (d5), "C11");
108 Assert.AreEqual(324000000000L, t1.GetUtcOffset (d3).Ticks, "C12");
109 Assert.AreEqual(324000000000L, t1.GetUtcOffset (d4).Ticks, "C13");
110 Assert.AreEqual(324000000000L, t1.GetUtcOffset (d5).Ticks, "C14");
113 private void GMT (TimeZone t1) {
114 // Probably wont work on MS.NET, but is better than nothing. Where do
115 // we change our implementation to match theirs?
117 Assert.AreEqual("GMT", t1.StandardName, "D01");
118 Assert.AreEqual("BST", t1.DaylightName, "D02");
120 DaylightTime d1 = t1.GetDaylightChanges (2002);
121 Assert.AreEqual("03/31/2002 01:00:00", d1.Start.ToString ("G"), "D03");
122 Assert.AreEqual("10/27/2002 02:00:00", d1.End.ToString ("G"), "D04");
123 Assert.AreEqual(36000000000L, d1.Delta.Ticks, "D05");
125 DaylightTime d2 = t1.GetDaylightChanges (1996);
126 Assert.AreEqual("03/31/1996 01:00:00", d2.Start.ToString ("G"), "D06");
127 Assert.AreEqual("10/27/1996 02:00:00", d2.End.ToString ("G"), "D07");
128 Assert.AreEqual(36000000000L, d2.Delta.Ticks, "D08");
130 DateTime d3 = new DateTime (2002,2,25);
131 Assert.AreEqual(false, t1.IsDaylightSavingTime (d3), "D09");
132 DateTime d4 = new DateTime (2002,4,2);
133 Assert.AreEqual(true, t1.IsDaylightSavingTime (d4), "D10");
134 DateTime d5 = new DateTime (2002,11,4);
135 Assert.AreEqual(false, t1.IsDaylightSavingTime (d5), "D11");
137 Assert.AreEqual(0L, t1.GetUtcOffset (d3).Ticks, "D12");
138 Assert.AreEqual(36000000000L, t1.GetUtcOffset (d4).Ticks, "D13");
139 Assert.AreEqual(0L, t1.GetUtcOffset (d5).Ticks, "D14");
143 public void TestCtors ()
145 TimeZone t1 = TimeZone.CurrentTimeZone;
146 switch (t1.StandardName) {
150 case "Eastern Standard Time":
154 case "Tokyo Standard Time":
161 NUnit.Framework.Assert.Ignore ("Your time zone (" + t1.StandardName + ") isn't defined in the test case");
167 [Category ("TargetJvmNotWorking")]
168 public void CurrentTimeZone_SerializationRoundtrip ()
170 TimeZone tz = TimeZone.CurrentTimeZone;
171 BinaryFormatter bf = new BinaryFormatter ();
172 MemoryStream ms = new MemoryStream ();
173 bf.Serialize (ms, tz);
176 TimeZone clone = (TimeZone) bf.Deserialize (ms);
178 Assert.AreEqual (tz.DaylightName, clone.DaylightName, "DaylightName");
179 Assert.AreEqual (tz.StandardName, clone.StandardName, "StandardName");
182 static private byte[] serialized_timezone = {
184 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00,
185 0x1C, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x54,
186 0x69, 0x6D, 0x65, 0x5A, 0x6F, 0x6E, 0x65, 0x04, 0x00, 0x00, 0x00, 0x17, 0x6D, 0x5F, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x44, 0x61,
187 0x79, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x73, 0x0D, 0x6D, 0x5F, 0x74, 0x69, 0x63, 0x6B, 0x73, 0x4F,
188 0x66, 0x66, 0x73, 0x65, 0x74, 0x0E, 0x6D, 0x5F, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x4E, 0x61, 0x6D, 0x65, 0x0E, 0x6D,
189 0x5F, 0x64, 0x61, 0x79, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x03, 0x00, 0x01, 0x01, 0x1C, 0x53, 0x79, 0x73, 0x74,
190 0x65, 0x6D, 0x2E, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x62,
191 0x6C, 0x65, 0x09, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x29, 0x17, 0xD6, 0xFF, 0xFF, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x00, 0x15,
192 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x0A,
193 0x04, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F,
194 0x6E, 0x73, 0x2E, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x07, 0x00, 0x00, 0x00, 0x0A, 0x4C, 0x6F, 0x61, 0x64, 0x46,
195 0x61, 0x63, 0x74, 0x6F, 0x72, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x08, 0x43, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x72,
196 0x10, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6F, 0x64, 0x65, 0x50, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x72, 0x08, 0x48, 0x61, 0x73, 0x68,
197 0x53, 0x69, 0x7A, 0x65, 0x04, 0x4B, 0x65, 0x79, 0x73, 0x06, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x00, 0x00, 0x03, 0x03, 0x00, 0x05,
198 0x05, 0x0B, 0x08, 0x1C, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73,
199 0x2E, 0x49, 0x43, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x72, 0x24, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x43, 0x6F, 0x6C, 0x6C,
200 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x49, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6F, 0x64, 0x65, 0x50, 0x72, 0x6F, 0x76, 0x69,
201 0x64, 0x65, 0x72, 0x08, 0xEC, 0x51, 0x38, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x0B, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00,
202 0x00, 0x09, 0x05, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0xCC, 0x07, 0x00, 0x00, 0x08,
203 0x08, 0xD5, 0x07, 0x00, 0x00, 0x08, 0x08, 0xD2, 0x07, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x06,
204 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x21, 0x53, 0x79, 0x73,
205 0x74, 0x65, 0x6D, 0x2E, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x44, 0x61, 0x79, 0x6C,
206 0x69, 0x67, 0x68, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x03, 0x00, 0x00, 0x00, 0x07, 0x6D, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x05, 0x6D,
207 0x5F, 0x65, 0x6E, 0x64, 0x07, 0x6D, 0x5F, 0x64, 0x65, 0x6C, 0x74, 0x61, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0C, 0x00, 0x10, 0xFA, 0x0F,
208 0x3D, 0xF2, 0xBC, 0x88, 0x00, 0x50, 0xD5, 0xB1, 0xC1, 0x91, 0xBD, 0x88, 0x00, 0x68, 0xC4, 0x61, 0x08, 0x00, 0x00, 0x00, 0x01, 0x07,
209 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x50, 0x23, 0xFA, 0x07, 0x06, 0xC7, 0x88, 0x00, 0xD0, 0xE2, 0xC4, 0x0C, 0xAB, 0xC7,
210 0x88, 0x00, 0x68, 0xC4, 0x61, 0x08, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0C, 0x0F,
211 0xEF, 0xAB, 0xC3, 0x88, 0x00, 0x90, 0xE7, 0xB0, 0x73, 0x4B, 0xC4, 0x88, 0x00, 0x68, 0xC4, 0x61, 0x08, 0x00, 0x00, 0x00, 0x0B
213 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00,
214 0x1C, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x54,
215 0x69, 0x6D, 0x65, 0x5A, 0x6F, 0x6E, 0x65, 0x04, 0x00, 0x00, 0x00, 0x17, 0x6D, 0x5F, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x44, 0x61,
216 0x79, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x73, 0x0D, 0x6D, 0x5F, 0x74, 0x69, 0x63, 0x6B, 0x73, 0x4F,
217 0x66, 0x66, 0x73, 0x65, 0x74, 0x0E, 0x6D, 0x5F, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x4E, 0x61, 0x6D, 0x65, 0x0E, 0x6D,
218 0x5F, 0x64, 0x61, 0x79, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x03, 0x00, 0x01, 0x01, 0x1C, 0x53, 0x79, 0x73, 0x74,
219 0x65, 0x6D, 0x2E, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x62,
220 0x6C, 0x65, 0x09, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x29, 0x17, 0xD6, 0xFF, 0xFF, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x00, 0x15,
221 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x0A,
222 0x04, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F,
223 0x6E, 0x73, 0x2E, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x07, 0x00, 0x00, 0x00, 0x0A, 0x4C, 0x6F, 0x61, 0x64, 0x46,
224 0x61, 0x63, 0x74, 0x6F, 0x72, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x08, 0x43, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x72,
225 0x10, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6F, 0x64, 0x65, 0x50, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x72, 0x08, 0x48, 0x61, 0x73, 0x68,
226 0x53, 0x69, 0x7A, 0x65, 0x04, 0x4B, 0x65, 0x79, 0x73, 0x06, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x00, 0x00, 0x03, 0x03, 0x00, 0x05,
227 0x05, 0x0B, 0x08, 0x1C, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73,
228 0x2E, 0x49, 0x43, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x72, 0x24, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x43, 0x6F, 0x6C, 0x6C,
229 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x49, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6F, 0x64, 0x65, 0x50, 0x72, 0x6F, 0x76, 0x69,
230 0x64, 0x65, 0x72, 0x08, 0xEC, 0x51, 0x38, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x0B, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00,
231 0x00, 0x09, 0x05, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x08, 0xCC, 0x07, 0x00, 0x00, 0x08,
232 0x08, 0xD2, 0x07, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x09, 0x07, 0x00,
233 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x21, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x69,
234 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x44, 0x61, 0x79, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x03, 0x00, 0x00,
235 0x00, 0x07, 0x6D, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x05, 0x6D, 0x5F, 0x65, 0x6E, 0x64, 0x07, 0x6D, 0x5F, 0x64, 0x65, 0x6C, 0x74,
236 0x61, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0C, 0x00, 0x10, 0xFA, 0x0F, 0x3D, 0xF2, 0xBC, 0x08, 0x00, 0x50, 0xD5, 0xB1, 0xC1, 0x91, 0xBD,
237 0x08, 0x00, 0x68, 0xC4, 0x61, 0x08, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0C, 0x0F,
238 0xEF, 0xAB, 0xC3, 0x08, 0x00, 0x90, 0xE7, 0xB0, 0x73, 0x4B, 0xC4, 0x08, 0x00, 0x68, 0xC4, 0x61, 0x08, 0x00, 0x00, 0x00, 0x0B
243 [Category ("NotWorking")]
244 // 1.x - deserialize but strings are null
245 // 2.x - eexception when creating a datetime with a negative value
246 public void DeserializeKnownValue ()
248 MemoryStream ms = new MemoryStream (serialized_timezone);
249 BinaryFormatter bf = new BinaryFormatter ();
250 TimeZone tz = (TimeZone) bf.Deserialize (ms);
251 Assert.AreEqual ("Eastern Daylight Time", tz.DaylightName, "DaylightName");
252 Assert.AreEqual ("Eastern Standard Time", tz.StandardName, "StandardName");
256 public void ToLocalTimeAtDSTBoundaries ()
258 TimeZone tz = TimeZone.CurrentTimeZone;
259 DateTime dst_start_utc = tz.GetDaylightChanges(2007).Start.ToUniversalTime ();
261 if (dst_start_utc == DateTime.MinValue)
263 Assert.IsTrue (tz.ToLocalTime (dst_start_utc.Subtract (new TimeSpan (0, 1, 0))) < tz.ToLocalTime (dst_start_utc), "0:1:59 < 0:3:00");
264 Assert.IsTrue (tz.ToLocalTime (dst_start_utc) < tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (0, 1, 0))), "0:3:00 < 0:3:01");
265 Assert.IsTrue (tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (0, 1, 0))) < tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (0, 59, 0))), "0:3:01 < 0:3:59");
266 Assert.IsTrue (tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (0, 59, 0))) < tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (1, 0, 0))), "0:3:59 < 0:4:00");
267 Assert.IsTrue (tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (1, 0, 0))) < tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (1, 1, 0))), "0:4:00 < 0:4:01");