19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 Google Inc. 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.util; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestCase; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Calendar; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.TimeZone; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * TimeUtilsTest tests the time zone guesser. 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class TimeUtilsTest extends TestCase { 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testMainstream() throws Exception { 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] mainstream = new String[] { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "America/New_York", // Eastern 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "America/Chicago", // Central 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "America/Denver", // Mountain 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "America/Los_Angeles", // Pacific 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "America/Anchorage", // Alaska 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Pacific/Honolulu", // Hawaii, no DST 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (String name : mainstream) { 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone tz = TimeZone.getTimeZone(name); 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Calendar c = Calendar.getInstance(tz); 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone guess; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.set(2008, Calendar.OCTOBER, 20, 12, 00, 00); 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project guess = guess(c, "us"); 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(name, guess.getID()); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.set(2009, Calendar.JANUARY, 20, 12, 00, 00); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project guess = guess(c, "us"); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(name, guess.getID()); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testWeird() throws Exception { 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] weird = new String[] { 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "America/Phoenix", // Mountain, no DST 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "America/Adak", // Same as Hawaii, but with DST 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (String name : weird) { 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone tz = TimeZone.getTimeZone(name); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Calendar c = Calendar.getInstance(tz); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone guess; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.set(2008, Calendar.OCTOBER, 20, 12, 00, 00); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project guess = guess(c, "us"); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(name, guess.getID()); 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testOld() throws Exception { 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] old = new String[] { 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "America/Indiana/Indianapolis", // Eastern, formerly no DST 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (String name : old) { 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone tz = TimeZone.getTimeZone(name); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Calendar c = Calendar.getInstance(tz); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone guess; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.set(2005, Calendar.OCTOBER, 20, 12, 00, 00); 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project guess = guess(c, "us"); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(name, guess.getID()); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testWorld() throws Exception { 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] world = new String[] { 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ad", "Europe/Andorra", 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ae", "Asia/Dubai", 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "af", "Asia/Kabul", 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ag", "America/Antigua", 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ai", "America/Anguilla", 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "al", "Europe/Tirane", 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "am", "Asia/Yerevan", 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "an", "America/Curacao", 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ao", "Africa/Luanda", 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aq", "Antarctica/McMurdo", 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aq", "Antarctica/DumontDUrville", 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aq", "Antarctica/Casey", 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aq", "Antarctica/Davis", 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aq", "Antarctica/Mawson", 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aq", "Antarctica/Syowa", 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aq", "Antarctica/Rothera", 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aq", "Antarctica/Palmer", 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ar", "America/Argentina/Buenos_Aires", 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "as", "Pacific/Pago_Pago", 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "at", "Europe/Vienna", 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "au", "Australia/Sydney", 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "au", "Australia/Adelaide", 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "au", "Australia/Perth", 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "au", "Australia/Eucla", 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "aw", "America/Aruba", 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ax", "Europe/Mariehamn", 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "az", "Asia/Baku", 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ba", "Europe/Sarajevo", 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bb", "America/Barbados", 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bd", "Asia/Dhaka", 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "be", "Europe/Brussels", 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bf", "Africa/Ouagadougou", 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bg", "Europe/Sofia", 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bh", "Asia/Bahrain", 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bi", "Africa/Bujumbura", 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bj", "Africa/Porto-Novo", 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bm", "Atlantic/Bermuda", 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bn", "Asia/Brunei", 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bo", "America/La_Paz", 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "br", "America/Noronha", 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "br", "America/Sao_Paulo", 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "br", "America/Manaus", 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bs", "America/Nassau", 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bt", "Asia/Thimphu", 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bw", "Africa/Gaborone", 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "by", "Europe/Minsk", 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "bz", "America/Belize", 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ca", "America/St_Johns", 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ca", "America/Halifax", 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ca", "America/Toronto", 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ca", "America/Winnipeg", 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ca", "America/Edmonton", 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ca", "America/Vancouver", 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cc", "Indian/Cocos", 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cd", "Africa/Lubumbashi", 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cd", "Africa/Kinshasa", 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cf", "Africa/Bangui", 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cg", "Africa/Brazzaville", 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ch", "Europe/Zurich", 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ci", "Africa/Abidjan", 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ck", "Pacific/Rarotonga", 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cl", "America/Santiago", 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cl", "Pacific/Easter", 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cm", "Africa/Douala", 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cn", "Asia/Shanghai", 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "co", "America/Bogota", 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cr", "America/Costa_Rica", 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cu", "America/Havana", 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cv", "Atlantic/Cape_Verde", 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cx", "Indian/Christmas", 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cy", "Asia/Nicosia", 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "cz", "Europe/Prague", 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "de", "Europe/Berlin", 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "dj", "Africa/Djibouti", 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "dk", "Europe/Copenhagen", 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "dm", "America/Dominica", 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "do", "America/Santo_Domingo", 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "dz", "Africa/Algiers", 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ec", "America/Guayaquil", 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ec", "Pacific/Galapagos", 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ee", "Europe/Tallinn", 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "eg", "Africa/Cairo", 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "eh", "Africa/El_Aaiun", 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "er", "Africa/Asmara", 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "es", "Europe/Madrid", 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "es", "Atlantic/Canary", 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "et", "Africa/Addis_Ababa", 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "fi", "Europe/Helsinki", 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "fj", "Pacific/Fiji", 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "fk", "Atlantic/Stanley", 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "fm", "Pacific/Ponape", 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "fm", "Pacific/Truk", 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "fo", "Atlantic/Faroe", 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "fr", "Europe/Paris", 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ga", "Africa/Libreville", 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gb", "Europe/London", 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gd", "America/Grenada", 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ge", "Asia/Tbilisi", 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gf", "America/Cayenne", 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gg", "Europe/Guernsey", 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gh", "Africa/Accra", 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gi", "Europe/Gibraltar", 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gl", "America/Danmarkshavn", 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gl", "America/Scoresbysund", 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gl", "America/Godthab", 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gl", "America/Thule", 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gm", "Africa/Banjul", 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gn", "Africa/Conakry", 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gp", "America/Guadeloupe", 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gq", "Africa/Malabo", 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gr", "Europe/Athens", 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gs", "Atlantic/South_Georgia", 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gt", "America/Guatemala", 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gu", "Pacific/Guam", 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gw", "Africa/Bissau", 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "gy", "America/Guyana", 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "hk", "Asia/Hong_Kong", 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "hn", "America/Tegucigalpa", 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "hr", "Europe/Zagreb", 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ht", "America/Port-au-Prince", 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "hu", "Europe/Budapest", 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "id", "Asia/Jayapura", 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "id", "Asia/Makassar", 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "id", "Asia/Jakarta", 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ie", "Europe/Dublin", 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "il", "Asia/Jerusalem", 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "im", "Europe/Isle_of_Man", 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "in", "Asia/Calcutta", 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "io", "Indian/Chagos", 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "iq", "Asia/Baghdad", 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ir", "Asia/Tehran", 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "is", "Atlantic/Reykjavik", 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "it", "Europe/Rome", 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "je", "Europe/Jersey", 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "jm", "America/Jamaica", 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "jo", "Asia/Amman", 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "jp", "Asia/Tokyo", 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ke", "Africa/Nairobi", 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "kg", "Asia/Bishkek", 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "kh", "Asia/Phnom_Penh", 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ki", "Pacific/Kiritimati", 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ki", "Pacific/Enderbury", 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ki", "Pacific/Tarawa", 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "km", "Indian/Comoro", 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "kn", "America/St_Kitts", 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "kp", "Asia/Pyongyang", 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "kr", "Asia/Seoul", 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "kw", "Asia/Kuwait", 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ky", "America/Cayman", 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "kz", "Asia/Almaty", 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "kz", "Asia/Aqtau", 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "la", "Asia/Vientiane", 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "lb", "Asia/Beirut", 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "lc", "America/St_Lucia", 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "li", "Europe/Vaduz", 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "lk", "Asia/Colombo", 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "lr", "Africa/Monrovia", 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ls", "Africa/Maseru", 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "lt", "Europe/Vilnius", 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "lu", "Europe/Luxembourg", 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "lv", "Europe/Riga", 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ly", "Africa/Tripoli", 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ma", "Africa/Casablanca", 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mc", "Europe/Monaco", 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "md", "Europe/Chisinau", 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "me", "Europe/Podgorica", 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mg", "Indian/Antananarivo", 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mh", "Pacific/Majuro", 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mk", "Europe/Skopje", 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ml", "Africa/Bamako", 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mm", "Asia/Rangoon", 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mn", "Asia/Choibalsan", 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mn", "Asia/Hovd", 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mo", "Asia/Macau", 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mp", "Pacific/Saipan", 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mq", "America/Martinique", 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mr", "Africa/Nouakchott", 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ms", "America/Montserrat", 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mt", "Europe/Malta", 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mu", "Indian/Mauritius", 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mv", "Indian/Maldives", 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mw", "Africa/Blantyre", 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mx", "America/Mexico_City", 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mx", "America/Chihuahua", 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mx", "America/Tijuana", 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "my", "Asia/Kuala_Lumpur", 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "mz", "Africa/Maputo", 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "na", "Africa/Windhoek", 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "nc", "Pacific/Noumea", 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ne", "Africa/Niamey", 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "nf", "Pacific/Norfolk", 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ng", "Africa/Lagos", 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ni", "America/Managua", 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "nl", "Europe/Amsterdam", 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "no", "Europe/Oslo", 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "np", "Asia/Katmandu", 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "nr", "Pacific/Nauru", 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "nu", "Pacific/Niue", 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "nz", "Pacific/Auckland", 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "nz", "Pacific/Chatham", 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "om", "Asia/Muscat", 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pa", "America/Panama", 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pe", "America/Lima", 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pf", "Pacific/Gambier", 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pf", "Pacific/Marquesas", 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pf", "Pacific/Tahiti", 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pg", "Pacific/Port_Moresby", 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ph", "Asia/Manila", 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pk", "Asia/Karachi", 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pl", "Europe/Warsaw", 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pm", "America/Miquelon", 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pn", "Pacific/Pitcairn", 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pr", "America/Puerto_Rico", 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ps", "Asia/Gaza", 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pt", "Europe/Lisbon", 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pt", "Atlantic/Azores", 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "pw", "Pacific/Palau", 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "py", "America/Asuncion", 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "qa", "Asia/Qatar", 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "re", "Indian/Reunion", 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ro", "Europe/Bucharest", 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "rs", "Europe/Belgrade", 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Asia/Kamchatka", 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Asia/Magadan", 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Asia/Vladivostok", 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Asia/Yakutsk", 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Asia/Irkutsk", 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Asia/Krasnoyarsk", 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Asia/Novosibirsk", 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Asia/Yekaterinburg", 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Europe/Samara", 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Europe/Moscow", 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ru", "Europe/Kaliningrad", 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "rw", "Africa/Kigali", 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sa", "Asia/Riyadh", 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sb", "Pacific/Guadalcanal", 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sc", "Indian/Mahe", 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sd", "Africa/Khartoum", 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "se", "Europe/Stockholm", 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sg", "Asia/Singapore", 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sh", "Atlantic/St_Helena", 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "si", "Europe/Ljubljana", 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sj", "Arctic/Longyearbyen", 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sk", "Europe/Bratislava", 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sl", "Africa/Freetown", 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sm", "Europe/San_Marino", 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sn", "Africa/Dakar", 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "so", "Africa/Mogadishu", 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sr", "America/Paramaribo", 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "st", "Africa/Sao_Tome", 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sv", "America/El_Salvador", 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sy", "Asia/Damascus", 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "sz", "Africa/Mbabane", 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tc", "America/Grand_Turk", 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "td", "Africa/Ndjamena", 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tf", "Indian/Kerguelen", 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tg", "Africa/Lome", 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "th", "Asia/Bangkok", 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tj", "Asia/Dushanbe", 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tk", "Pacific/Fakaofo", 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tl", "Asia/Dili", 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tm", "Asia/Ashgabat", 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tn", "Africa/Tunis", 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "to", "Pacific/Tongatapu", 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tr", "Europe/Istanbul", 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tt", "America/Port_of_Spain", 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tv", "Pacific/Funafuti", 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tw", "Asia/Taipei", 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "tz", "Africa/Dar_es_Salaam", 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ua", "Europe/Kiev", 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ug", "Africa/Kampala", 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "um", "Pacific/Wake", 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "um", "Pacific/Johnston", 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "um", "Pacific/Midway", 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "us", "America/New_York", 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "us", "America/Chicago", 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "us", "America/Denver", 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "us", "America/Los_Angeles", 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "us", "America/Anchorage", 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "us", "Pacific/Honolulu", 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "uy", "America/Montevideo", 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "uz", "Asia/Tashkent", 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "va", "Europe/Vatican", 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "vc", "America/St_Vincent", 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ve", "America/Caracas", 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "vg", "America/Tortola", 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "vi", "America/St_Thomas", 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "vn", "Asia/Saigon", 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "vu", "Pacific/Efate", 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "wf", "Pacific/Wallis", 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ws", "Pacific/Apia", 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ye", "Asia/Aden", 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "yt", "Indian/Mayotte", 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "za", "Africa/Johannesburg", 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "zm", "Africa/Lusaka", 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "zw", "Africa/Harare", 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < world.length; i += 2) { 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String country = world[i]; 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String name = world[i + 1]; 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone tz = TimeZone.getTimeZone(name); 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Calendar c = Calendar.getInstance(tz); 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone guess; 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.set(2009, Calendar.JULY, 20, 12, 00, 00); 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project guess = guess(c, country); 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(name, guess.getID()); 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.set(2009, Calendar.JANUARY, 20, 12, 00, 00); 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project guess = guess(c, country); 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(name, guess.getID()); 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testWorldWeird() throws Exception { 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] world = new String[] { 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Distinguisable from Sydney only when DST not in effect 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "au", "Australia/Lord_Howe", 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < world.length; i += 2) { 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String country = world[i]; 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String name = world[i + 1]; 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone tz = TimeZone.getTimeZone(name); 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Calendar c = Calendar.getInstance(tz); 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TimeZone guess; 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.set(2009, Calendar.JULY, 20, 12, 00, 00); 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project guess = guess(c, country); 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(name, guess.getID()); 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static TimeZone guess(Calendar c, String country) { 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return TimeUtils.getTimeZone(c.get(c.ZONE_OFFSET) + c.get(c.DST_OFFSET), 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.get(c.DST_OFFSET) != 0, 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.getTimeInMillis(), 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project country); 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 430901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert 431901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert public void testFormatDuration() { 432901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("0", 0); 433901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("-1ms", -1); 434901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("+1ms", 1); 435901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("+10ms", 10); 436901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("+100ms", 100); 437901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("+101ms", 101); 438901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("+330ms", 330); 439901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("+1s330ms", 1330); 440901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertFormatDuration("+10s24ms", 10024); 441901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert } 442901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert 443eaaf396169abdbd213565cacb37dc0c9c391b365Jeff Sharkey public void testFormatHugeDuration() { 444eaaf396169abdbd213565cacb37dc0c9c391b365Jeff Sharkey //assertFormatDuration("+15542d1h11m11s555ms", 1342833071555L); 445eaaf396169abdbd213565cacb37dc0c9c391b365Jeff Sharkey // TODO: improve formatDuration() API 446eaaf396169abdbd213565cacb37dc0c9c391b365Jeff Sharkey assertFormatDuration("+999d23h59m59s999ms", 1342833071555L); 447eaaf396169abdbd213565cacb37dc0c9c391b365Jeff Sharkey assertFormatDuration("-999d23h59m59s999ms", -1342833071555L); 448eaaf396169abdbd213565cacb37dc0c9c391b365Jeff Sharkey } 449eaaf396169abdbd213565cacb37dc0c9c391b365Jeff Sharkey 450901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert private void assertFormatDuration(String expected, long duration) { 451901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert StringBuilder sb = new StringBuilder(); 452901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert TimeUtils.formatDuration(duration, sb); 453901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert assertEquals("formatDuration(" + duration + ")", expected, sb.toString()); 454901b3796fd0954cc4b01bf95dbcbd88d87414e84Bjorn Bringert } 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 456