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 // It could be EST though...
64 //AssertEquals("B01", "Eastern Standard Time", t1.StandardName);
65 //AssertEquals("B02", "Eastern Daylight Time", t1.DaylightName);
67 DaylightTime d1 = t1.GetDaylightChanges (2002);
68 AssertEquals("B03", "04/07/2002 02:00:00", d1.Start.ToString ("G"));
69 AssertEquals("B04", "10/27/2002 02:00:00", d1.End.ToString ("G"));
70 AssertEquals("B05", 36000000000L, d1.Delta.Ticks);
72 DaylightTime d2 = t1.GetDaylightChanges (1996);
73 AssertEquals("B06", "04/07/1996 02:00:00", d2.Start.ToString ("G"));
74 AssertEquals("B07", "10/27/1996 02:00:00", d2.End.ToString ("G"));
75 AssertEquals("B08", 36000000000L, d2.Delta.Ticks);
77 DateTime d3 = new DateTime (2002,2,25);
78 AssertEquals("B09", false, t1.IsDaylightSavingTime (d3));
79 DateTime d4 = new DateTime (2002,4,8);
80 AssertEquals("B10", true, t1.IsDaylightSavingTime (d4));
81 DateTime d5 = new DateTime (2002,11,4);
82 AssertEquals("B11", false, t1.IsDaylightSavingTime (d5));
84 AssertEquals("B12", -180000000000L, t1.GetUtcOffset (d3).Ticks);
85 AssertEquals("B13", -144000000000L, t1.GetUtcOffset (d4).Ticks);
86 AssertEquals("B14", -180000000000L, t1.GetUtcOffset (d5).Ticks);
89 private void TST (TimeZone t1)
91 AssertEquals("C01", "Tokyo Standard Time", t1.StandardName);
92 AssertEquals("C02", "Tokyo Standard Time", t1.DaylightName);
94 DateTime d3 = new DateTime (2002,2,25);
95 AssertEquals("C09", false, t1.IsDaylightSavingTime (d3));
96 DateTime d4 = new DateTime (2002,4,8);
97 AssertEquals("C10", false, t1.IsDaylightSavingTime (d4));
98 DateTime d5 = new DateTime (2002,11,4);
99 AssertEquals("C11", false, t1.IsDaylightSavingTime (d5));
101 AssertEquals("C12", 324000000000L, t1.GetUtcOffset (d3).Ticks);
102 AssertEquals("C13", 324000000000L, t1.GetUtcOffset (d4).Ticks);
103 AssertEquals("C14", 324000000000L, t1.GetUtcOffset (d5).Ticks);
106 private void GMT (TimeZone t1) {
107 // Probably wont work on MS.NET, but is better than nothing. Where do
108 // we change our implementation to match theirs?
110 AssertEquals("D01", "GMT", t1.StandardName);
111 AssertEquals("D02", "BST", t1.DaylightName);
113 DaylightTime d1 = t1.GetDaylightChanges (2002);
114 AssertEquals("D03", "03/31/2002 01:00:00", d1.Start.ToString ("G"));
115 AssertEquals("D04", "10/27/2002 01:00:00", d1.End.ToString ("G"));
116 AssertEquals("D05", 36000000000L, d1.Delta.Ticks);
118 DaylightTime d2 = t1.GetDaylightChanges (1996);
119 AssertEquals("D06", "03/31/1996 01:00:00", d2.Start.ToString ("G"));
120 AssertEquals("D07", "10/27/1996 01:00:00", d2.End.ToString ("G"));
121 AssertEquals("D08", 36000000000L, d2.Delta.Ticks);
123 DateTime d3 = new DateTime (2002,2,25);
124 AssertEquals("D09", false, t1.IsDaylightSavingTime (d3));
125 DateTime d4 = new DateTime (2002,4,2);
126 AssertEquals("D10", true, t1.IsDaylightSavingTime (d4));
127 DateTime d5 = new DateTime (2002,11,4);
128 AssertEquals("D11", false, t1.IsDaylightSavingTime (d5));
130 AssertEquals("D12", 0L, t1.GetUtcOffset (d3).Ticks);
131 AssertEquals("D13", 36000000000L, t1.GetUtcOffset (d4).Ticks);
132 AssertEquals("D14", 0L, t1.GetUtcOffset (d5).Ticks);
137 public void TestCtors ()
139 TimeZone t1 = TimeZone.CurrentTimeZone;
140 switch (t1.StandardName) {
144 case "Eastern Standard Time":
148 case "Tokyo Standard Time":
155 NUnit.Framework.Assert.Ignore ("Your time zone (" + t1.StandardName + ") isn't defined in the test case");