1: %% 2: %% %CopyrightBegin% 3: %% 4: %% Copyright Ericsson AB 1998-2011. All Rights Reserved. 5: %% 6: %% The contents of this file are subject to the Erlang Public License, 7: %% Version 1.1, (the "License"); you may not use this file except in 8: %% compliance with the License. You should have received a copy of the 9: %% Erlang Public License along with this software. If not, it can be 10: %% retrieved online at http://www.erlang.org/. 11: %% 12: %% Software distributed under the License is distributed on an "AS IS" 13: %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 14: %% the License for the specific language governing rights and limitations 15: %% under the License. 16: %% 17: %% %CopyrightEnd% 18: %% 19: %% File: y2k_SUITE.erl 20: %% Purpose: Year 2000 tests. 21: 22: -module(y2k_SUITE). 23: 24: -include_lib("test_server/include/test_server.hrl"). 25: 26: -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, 27: init_per_group/2,end_per_group/2, 28: date_1999_01_01/1, date_1999_02_28/1, 29: date_1999_09_09/1, date_2000_01_01/1, 30: date_2000_02_29/1, date_2001_01_01/1, 31: date_2001_02_29/1, date_2004_02_29/1 32: ]). 33: 34: suite() -> [{ct_hooks,[ts_install_cth]}]. 35: 36: all() -> 37: [date_1999_01_01, date_1999_02_28, date_1999_09_09, 38: date_2000_01_01, date_2000_02_29, date_2001_01_01, 39: date_2001_02_29, date_2004_02_29]. 40: 41: groups() -> 42: []. 43: 44: init_per_suite(Config) -> 45: Config. 46: 47: end_per_suite(_Config) -> 48: ok. 49: 50: init_per_group(_GroupName, Config) -> 51: Config. 52: 53: end_per_group(_GroupName, Config) -> 54: Config. 55: 56: 57: date_1999_01_01(doc) -> 58: "#1 : 1999-01-01: test roll-over from 1998-12-31 to 1999-01-01."; 59: date_1999_01_01(suite) -> 60: []; 61: date_1999_01_01(Config) when is_list(Config) -> 62: ?line Date = {1998, 12, 31}, NextDate = {1999, 1, 1}, 63: ?line match(next_date(Date), NextDate), 64: TZD = tzd(Date), 65: if 66: TZD > 0 -> 67: ?line Time = {24 - TZD, 0, 0}, 68: ?line {NDate, _NTime} = 69: erlang:localtime_to_universaltime({Date, Time}), 70: ?line match(NDate, NextDate); 71: TZD < 0 -> 72: ?line Time = {24 + TZD, 0, 0}, 73: ?line {NDate, _NTime} = 74: erlang:universaltime_to_localtime({Date, Time}), 75: ?line match(NDate, NextDate); 76: true -> 77: ok 78: end. 79: 80: date_1999_02_28(doc) -> 81: "#2 : 1999-02-28: test roll-over from 1999-02-28 to 1999-03-01."; 82: date_1999_02_28(suite) -> 83: []; 84: date_1999_02_28(Config) when is_list(Config) -> 85: ?line Date = {1999, 2, 28}, NextDate = {1999, 3, 1}, 86: ?line match(next_date(Date), NextDate), 87: ?line match(tz_next_date(Date), NextDate). 88: 89: date_1999_09_09(doc) -> 90: "#3 : 1999-09-09: test roll-over from 1999-09-08 to 1999-09-09."; 91: date_1999_09_09(suite) -> 92: []; 93: date_1999_09_09(Config) when is_list(Config) -> 94: ?line Date = {1999, 9, 8}, NextDate = {1999, 9, 9}, 95: ?line match(next_date(Date), NextDate), 96: ?line match(tz_next_date(Date), NextDate). 97: 98: date_2000_01_01(doc) -> 99: "#4 : 2000-01-01: test roll-over from 1999-12-31 to 2000-01-01 to " 100: "2000-01-02."; 101: date_2000_01_01(suite) -> 102: []; 103: date_2000_01_01(Config) when is_list(Config) -> 104: ?line Date = {1999, 12, 31}, NextDate = {2000, 1, 1}, 105: ?line match(next_date(Date), NextDate), 106: ?line match(tz_next_date(Date), NextDate), 107: ?line NextDate1 = {2000, 1, 2}, 108: ?line match(next_date(NextDate), NextDate1), 109: ?line match(tz_next_date(NextDate), NextDate1). 110: 111: date_2000_02_29(doc) -> 112: "#5 : 2000-02-29: test roll-over from 2000-02-28 to 2000-02-29 to " 113: "2000-03-01."; 114: date_2000_02_29(suite) -> 115: []; 116: date_2000_02_29(Config) when is_list(Config) -> 117: ?line Date = {2000, 2, 28}, NextDate = {2000, 2, 29}, 118: ?line match(next_date(Date), NextDate), 119: ?line match(tz_next_date(Date), NextDate), 120: ?line NextDate1 = {2000, 3, 1}, 121: ?line match(next_date(NextDate), NextDate1), 122: ?line match(tz_next_date(NextDate), NextDate1). 123: 124: date_2001_01_01(doc) -> 125: "#6 : 2001-01-01: test roll-over from 2000-12-31 to 2001-01-01."; 126: date_2001_01_01(suite) -> 127: []; 128: date_2001_01_01(Config) when is_list(Config) -> 129: ?line Date = {2000, 12, 31}, NextDate = {2001, 1, 1}, 130: ?line match(next_date(Date), NextDate), 131: ?line match(tz_next_date(Date), NextDate). 132: 133: date_2001_02_29(doc) -> 134: "#7 : 2001-02-29: test roll-over from 2001-02-28 to 2001-03-01."; 135: date_2001_02_29(suite) -> 136: []; 137: date_2001_02_29(Config) when is_list(Config) -> 138: ?line Date = {2001, 2, 28}, NextDate = {2001, 3, 1}, 139: ?line match(next_date(Date), NextDate), 140: ?line match(tz_next_date(Date), NextDate). 141: 142: date_2004_02_29(doc) -> 143: "#8 : 2004-02-29: test roll-over from 2004-02-28 to 2004-02-29 to " 144: "2004-03-01."; 145: date_2004_02_29(suite) -> 146: []; 147: date_2004_02_29(Config) when is_list(Config) -> 148: ?line Date = {2004, 2, 28}, NextDate = {2004, 2, 29}, 149: ?line match(next_date(Date), NextDate), 150: ?line match(tz_next_date(Date), NextDate), 151: ?line NextDate1 = {2004, 3, 1}, 152: ?line match(next_date(NextDate), NextDate1), 153: ?line match(tz_next_date(NextDate), NextDate1). 154: 155: %% 156: %% Local functions 157: %% 158: next_date(Date) -> 159: calendar:gregorian_days_to_date(calendar:date_to_gregorian_days(Date) + 1). 160: %% 161: %% timezonediff 162: %% 163: tzd(Date) -> 164: ?line {_LDate, {LH, _LM, _LS}} = 165: erlang:universaltime_to_localtime({Date, {12, 0, 0}}), 166: 12 - LH. 167: 168: tz_next_date(Date) -> 169: TZD = tzd(Date), 170: if 171: TZD > 0 -> 172: ?line Time = {24 - TZD, 0, 0}, 173: ?line {NDate, _NTime} = 174: erlang:localtime_to_universaltime({Date, Time}), 175: ?line NDate; 176: TZD < 0 -> 177: ?line Time = {24 + TZD, 0, 0}, 178: ?line {NDate, _NTime} = 179: erlang:universaltime_to_localtime({Date, Time}), 180: ?line NDate; 181: true -> 182: Date 183: end. 184: 185: %% 186: %% match({X, X}) -> 187: %% ok. 188: 189: match(X, X) -> 190: ok. 191: 192: 193: