2 // TimeZoneTest.cs - NUnit Test Cases for the System.TimeZone struct
5 // Martin Baulig (martin@gnome.org)
7 // (C) 2002 Martin Baulig
10 using NUnit
.Framework
;
12 using System
.Threading
;
13 using System
.Globalization
;
15 namespace MonoTests
.System
{
17 public class TimeZoneTest
: TestCase
{
19 private CultureInfo oldcult
;
21 public TimeZoneTest() {}
23 protected override void SetUp ()
25 oldcult
= Thread
.CurrentThread
.CurrentCulture
;
26 Thread
.CurrentThread
.CurrentCulture
= new CultureInfo ("");
29 protected override void TearDown ()
31 Thread
.CurrentThread
.CurrentCulture
= oldcult
;
34 private void CET (TimeZone t1
)
36 AssertEquals("A01", "CET", t1
.StandardName
);
37 AssertEquals("A02", "CEST", t1
.DaylightName
);
39 DaylightTime d1
= t1
.GetDaylightChanges (2002);
40 AssertEquals("A03", "03/31/2002 01:00:00", d1
.Start
.ToString ("G"));
41 AssertEquals("A04", "10/27/2002 01:00:00", d1
.End
.ToString ("G"));
42 AssertEquals("A05", 36000000000L, d1
.Delta
.Ticks
);
44 DaylightTime d2
= t1
.GetDaylightChanges (1996);
45 AssertEquals("A06", "03/31/1996 01:00:00", d2
.Start
.ToString ("G"));
46 AssertEquals("A07", "10/27/1996 01:00:00", d2
.End
.ToString ("G"));
47 AssertEquals("A08", 36000000000L, d2
.Delta
.Ticks
);
49 DateTime d3
= new DateTime (2002,2,25);
50 AssertEquals("A09", false, t1
.IsDaylightSavingTime (d3
));
51 DateTime d4
= new DateTime (2002,4,2);
52 AssertEquals("A10", true, t1
.IsDaylightSavingTime (d4
));
53 DateTime d5
= new DateTime (2002,11,4);
54 AssertEquals("A11", false, t1
.IsDaylightSavingTime (d5
));
56 AssertEquals("A12", 36000000000L, t1
.GetUtcOffset (d3
).Ticks
);
57 AssertEquals("A13", 72000000000L, t1
.GetUtcOffset (d4
).Ticks
);
58 AssertEquals("A14", 36000000000L, t1
.GetUtcOffset (d5
).Ticks
);
61 private void EST (TimeZone t1
)
63 AssertEquals("B01", "Eastern Standard Time", t1
.StandardName
);
64 AssertEquals("B02", "Eastern Daylight Time", t1
.DaylightName
);
66 DaylightTime d1
= t1
.GetDaylightChanges (2002);
67 AssertEquals("B03", "04/07/2002 02:00:00", d1
.Start
.ToString ("G"));
68 AssertEquals("B04", "10/27/2002 02:00:00", d1
.End
.ToString ("G"));
69 AssertEquals("B05", 36000000000L, d1
.Delta
.Ticks
);
71 DaylightTime d2
= t1
.GetDaylightChanges (1996);
72 AssertEquals("B06", "04/07/1996 02:00:00", d2
.Start
.ToString ("G"));
73 AssertEquals("B07", "10/27/1996 02:00:00", d2
.End
.ToString ("G"));
74 AssertEquals("B08", 36000000000L, d2
.Delta
.Ticks
);
76 DateTime d3
= new DateTime (2002,2,25);
77 AssertEquals("B09", false, t1
.IsDaylightSavingTime (d3
));
78 DateTime d4
= new DateTime (2002,4,8);
79 AssertEquals("B10", true, t1
.IsDaylightSavingTime (d4
));
80 DateTime d5
= new DateTime (2002,11,4);
81 AssertEquals("B11", false, t1
.IsDaylightSavingTime (d5
));
83 AssertEquals("B12", -180000000000L, t1
.GetUtcOffset (d3
).Ticks
);
84 AssertEquals("B13", -144000000000L, t1
.GetUtcOffset (d4
).Ticks
);
85 AssertEquals("B14", -180000000000L, t1
.GetUtcOffset (d5
).Ticks
);
88 private void TST (TimeZone t1
)
90 AssertEquals("C01", "Tokyo Standard Time", t1
.StandardName
);
91 AssertEquals("C02", "Tokyo Standard Time", t1
.DaylightName
);
93 DateTime d3
= new DateTime (2002,2,25);
94 AssertEquals("C09", false, t1
.IsDaylightSavingTime (d3
));
95 DateTime d4
= new DateTime (2002,4,8);
96 AssertEquals("C10", false, t1
.IsDaylightSavingTime (d4
));
97 DateTime d5
= new DateTime (2002,11,4);
98 AssertEquals("C11", false, t1
.IsDaylightSavingTime (d5
));
100 AssertEquals("C12", 324000000000L, t1
.GetUtcOffset (d3
).Ticks
);
101 AssertEquals("C13", 324000000000L, t1
.GetUtcOffset (d4
).Ticks
);
102 AssertEquals("C14", 324000000000L, t1
.GetUtcOffset (d5
).Ticks
);
105 private void GMT (TimeZone t1
) {
106 // Probably wont work on MS.NET, but is better than nothing. Where do
107 // we change our implementation to match theirs?
109 AssertEquals("D01", "GMT", t1
.StandardName
);
110 AssertEquals("D02", "BST", t1
.DaylightName
);
112 DaylightTime d1
= t1
.GetDaylightChanges (2002);
113 AssertEquals("D03", "03/31/2002 01:00:00", d1
.Start
.ToString ("G"));
114 AssertEquals("D04", "10/27/2002 01:00:00", d1
.End
.ToString ("G"));
115 AssertEquals("D05", 36000000000L, d1
.Delta
.Ticks
);
117 DaylightTime d2
= t1
.GetDaylightChanges (1996);
118 AssertEquals("D06", "03/31/1996 01:00:00", d2
.Start
.ToString ("G"));
119 AssertEquals("D07", "10/27/1996 01:00:00", d2
.End
.ToString ("G"));
120 AssertEquals("D08", 36000000000L, d2
.Delta
.Ticks
);
122 DateTime d3
= new DateTime (2002,2,25);
123 AssertEquals("D09", false, t1
.IsDaylightSavingTime (d3
));
124 DateTime d4
= new DateTime (2002,4,2);
125 AssertEquals("D10", true, t1
.IsDaylightSavingTime (d4
));
126 DateTime d5
= new DateTime (2002,11,4);
127 AssertEquals("D11", false, t1
.IsDaylightSavingTime (d5
));
129 AssertEquals("D12", 0L, t1
.GetUtcOffset (d3
).Ticks
);
130 AssertEquals("D13", 36000000000L, t1
.GetUtcOffset (d4
).Ticks
);
131 AssertEquals("D14", 0L, t1
.GetUtcOffset (d5
).Ticks
);
136 public void TestCtors ()
138 TimeZone t1
= TimeZone
.CurrentTimeZone
;
139 switch (t1
.StandardName
) {
143 case "Eastern Standard Time":
146 case "Tokyo Standard Time":
153 Fail ("Your time zone (" + t1
.StandardName
+ ") isn't defined in the test case");