**** Merged from MCS ****
[mono-project.git] / mcs / class / corlib / Test / System / TimeZoneTest.cs
blob5fa77111d10c9f434dbb46d8e2d637668bb60550
1 //
2 // TimeZoneTest.cs - NUnit Test Cases for the System.TimeZone struct
3 //
4 // author:
5 // Martin Baulig (martin@gnome.org)
6 //
7 // (C) 2002 Martin Baulig
8 //
10 using NUnit.Framework;
11 using System;
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) {
140 case "CET":
141 CET (t1);
142 break;
143 case "Eastern Standard Time":
144 EST (t1);
145 break;
146 case "Tokyo Standard Time":
147 TST (t1);
148 break;
149 case "GMT":
150 GMT (t1);
151 break;
152 default:
153 Fail ("Your time zone (" + t1.StandardName + ") isn't defined in the test case");
154 break;