1f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project/* 2f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 3f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 4f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * you may not use this file except in compliance with the License. 6f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * You may obtain a copy of the License at 7f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 8f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * 10f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * See the License for the specific language governing permissions and 14f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project * limitations under the License. 15f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project */ 16f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.text.format; 18f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 19f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport android.test.suitebuilder.annotation.SmallTest; 20f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport android.test.suitebuilder.annotation.Suppress; 21f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport android.text.format.Time; 22f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport android.util.Log; 236c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Rootimport android.util.TimeFormatException; 24f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 25f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport junit.framework.TestCase; 26f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 27f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectpublic class TimeTest extends TestCase { 28f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 29f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 30f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testNormalize0() throws Exception { 31f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 32f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.parse("20060432T010203"); 33f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.normalize(false /* use isDst */); 34f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project// System.out.println("got: " + t.year + '-' 35f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project// + t.month + '-' + t.monthDay 36f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project// + ' ' + t.hour + ':' + t.minute 37f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project// + ':' + t.second 38f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project// + "( " + t.isDst + ',' + t.gmtoff 39f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project// + ',' + t.weekDay 40f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project// + ',' + t.yearDay + ')'); 41f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 42f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 43f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static class DateTest { 44f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int year1; 45f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int month1; 46f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int day1; 47f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int hour1; 48f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int minute1; 49f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int dst1; 50f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 51f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int offset; 52f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 53f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int year2; 54f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int month2; 55f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int day2; 56f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int hour2; 57f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int minute2; 58f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public int dst2; 59f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 60f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public DateTest(int year1, int month1, int day1, int hour1, int minute1, int dst1, 61f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int offset, int year2, int month2, int day2, int hour2, int minute2, 62f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int dst2) { 63f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.year1 = year1; 64f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.month1 = month1; 65f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.day1 = day1; 66f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.hour1 = hour1; 67f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.minute1 = minute1; 68f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.dst1 = dst1; 69f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.offset = offset; 70f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.year2 = year2; 71f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.month2 = month2; 72f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.day2 = day2; 73f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.hour2 = hour2; 74f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.minute2 = minute2; 75f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.dst2 = dst2; 76f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 77f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 78f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public DateTest(int year1, int month1, int day1, int hour1, int minute1, 79f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int offset, int year2, int month2, int day2, int hour2, int minute2) { 80f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.year1 = year1; 81f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.month1 = month1; 82f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.day1 = day1; 83f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.hour1 = hour1; 84f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.minute1 = minute1; 85f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.dst1 = -1; 86f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.offset = offset; 87f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.year2 = year2; 88f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.month2 = month2; 89f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.day2 = day2; 90f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.hour2 = hour2; 91f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.minute2 = minute2; 92f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project this.dst2 = -1; 93f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 94f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 95f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 96f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // These tests assume that DST changes on Nov 4, 2007 at 2am (to 1am). 97f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 98f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // The "offset" field in "dayTests" represents days. 99f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Use normalize(true) with these tests to change the date by 1 day. 100f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private DateTest[] dayTests = { 101f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // The month numbers are 0-relative, so Jan=0, Feb=1,...Dec=11 102f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 103f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 12am + 0 day = Nov 4, 12am 104f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 5, 12am + 0 day = Nov 5, 12am 105f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 0, 0, 0, 2007, 10, 4, 0, 0), 106f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 5, 0, 0, 0, 2007, 10, 5, 0, 0), 107f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 108f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 3, 12am + 1 day = Nov 4, 12am 109f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 12am + 1 day = Nov 5, 12am 110f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 5, 12am + 1 day = Nov 6, 12am 111f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 3, 0, 0, 1, 2007, 10, 4, 0, 0), 112f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 0, 0, 1, 2007, 10, 5, 0, 0), 113f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 5, 0, 0, 1, 2007, 10, 6, 0, 0), 114f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 115f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 3, 1am + 1 day = Nov 4, 1am 116f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 1am + 1 day = Nov 5, 1am 117f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 5, 1am + 1 day = Nov 6, 1am 118f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 3, 1, 0, 1, 2007, 10, 4, 1, 0), 119f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 1, 0, 1, 2007, 10, 5, 1, 0), 120f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 5, 1, 0, 1, 2007, 10, 6, 1, 0), 121f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 122f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 3, 2am + 1 day = Nov 4, 2am 123f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 2am + 1 day = Nov 5, 2am 124f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 5, 2am + 1 day = Nov 6, 2am 125f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 3, 2, 0, 1, 2007, 10, 4, 2, 0), 126f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 2, 0, 1, 2007, 10, 5, 2, 0), 127f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 5, 2, 0, 1, 2007, 10, 6, 2, 0), 128f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project }; 129f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 130f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // The "offset" field in "minuteTests" represents minutes. 131f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Use normalize(false) with these tests. 132f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private DateTest[] minuteTests = { 133f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // The month numbers are 0-relative, so Jan=0, Feb=1,...Dec=11 134f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 135f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 12am + 0 minutes = Nov 4, 12am 136f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 5, 12am + 0 minutes = Nov 5, 12am 137f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 0, 0, 0, 2007, 10, 4, 0, 0), 138f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 5, 0, 0, 0, 2007, 10, 5, 0, 0), 139f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 140f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 3, 12am + 60 minutes = Nov 3, 1am 141f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 12am + 60 minutes = Nov 4, 1am 142f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 5, 12am + 60 minutes = Nov 5, 1am 143f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 3, 0, 0, 60, 2007, 10, 3, 1, 0), 144f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 0, 0, 60, 2007, 10, 4, 1, 0), 145f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 5, 0, 0, 60, 2007, 10, 5, 1, 0), 146f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 147f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 3, 1am + 60 minutes = Nov 3, 2am 148f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 1am (PDT) + 30 minutes = Nov 4, 1:30am (PDT) 149f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 1am (PDT) + 60 minutes = Nov 4, 1am (PST) 150f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 3, 1, 0, 60, 2007, 10, 3, 2, 0), 151f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 1, 0, 1, 30, 2007, 10, 4, 1, 30, 1), 152f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 1, 0, 1, 60, 2007, 10, 4, 1, 0, 0), 153f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 154f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 1:30am (PDT) + 15 minutes = Nov 4, 1:45am (PDT) 155f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 1:30am (PDT) + 30 minutes = Nov 4, 1:00am (PST) 156f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 1:30am (PDT) + 60 minutes = Nov 4, 1:30am (PST) 157f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 1, 30, 1, 15, 2007, 10, 4, 1, 45, 1), 158f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 1, 30, 1, 30, 2007, 10, 4, 1, 0, 0), 159f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 1, 30, 1, 60, 2007, 10, 4, 1, 30, 0), 160f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 161f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 1:30am (PST) + 15 minutes = Nov 4, 1:45am (PST) 162f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 1:30am (PST) + 30 minutes = Nov 4, 2:00am (PST) 163f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 5, 1am + 60 minutes = Nov 5, 2am 164f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 1, 30, 0, 15, 2007, 10, 4, 1, 45, 0), 165f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 1, 30, 0, 30, 2007, 10, 4, 2, 0, 0), 166f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 5, 1, 0, 60, 2007, 10, 5, 2, 0), 167f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 168f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 3, 2am + 60 minutes = Nov 3, 3am 169f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 2am + 30 minutes = Nov 4, 2:30am 170f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 4, 2am + 60 minutes = Nov 4, 3am 171f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Nov 5, 2am + 60 minutes = Nov 5, 3am 172f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 3, 2, 0, 60, 2007, 10, 3, 3, 0), 173f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 2, 0, 30, 2007, 10, 4, 2, 30), 174f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 4, 2, 0, 60, 2007, 10, 4, 3, 0), 175f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project new DateTest(2007, 10, 5, 2, 0, 60, 2007, 10, 5, 3, 0), 176f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project }; 177f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 178f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 179f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testNormalize1() throws Exception { 180f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time local = new Time("America/Los_Angeles"); 181f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 182f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int len = dayTests.length; 183f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project for (int index = 0; index < len; index++) { 184f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project DateTest test = dayTests[index]; 185f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.set(0, test.minute1, test.hour1, test.day1, test.month1, test.year1); 186f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // call normalize() to make sure that isDst is set 187f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.normalize(false /* use isDst */); 188f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.monthDay += test.offset; 189f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.normalize(true /* ignore isDst */); 190f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (local.year != test.year2 || local.month != test.month2 191f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project || local.monthDay != test.day2 || local.hour != test.hour2 192f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project || local.minute != test.minute2) { 193f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String expectedTime = String.format("%d-%02d-%02d %02d:%02d", 194f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project test.year2, test.month2, test.day2, test.hour2, test.minute2); 195f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String actualTime = String.format("%d-%02d-%02d %02d:%02d", 196f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.year, local.month, local.monthDay, local.hour, local.minute); 197f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project throw new RuntimeException( 198f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "day test index " + index + ", normalize(): expected local " + expectedTime 199f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " got: " + actualTime); 200f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 201f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 202f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.set(0, test.minute1, test.hour1, test.day1, test.month1, test.year1); 203f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // call normalize() to make sure that isDst is set 204f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.normalize(false /* use isDst */); 205f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.monthDay += test.offset; 206f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project long millis = local.toMillis(true /* ignore isDst */); 207f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.set(millis); 208f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (local.year != test.year2 || local.month != test.month2 209f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project || local.monthDay != test.day2 || local.hour != test.hour2 210f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project || local.minute != test.minute2) { 211f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String expectedTime = String.format("%d-%02d-%02d %02d:%02d", 212f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project test.year2, test.month2, test.day2, test.hour2, test.minute2); 213f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String actualTime = String.format("%d-%02d-%02d %02d:%02d", 214f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.year, local.month, local.monthDay, local.hour, local.minute); 215f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project throw new RuntimeException( 216f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "day test index " + index + ", toMillis(): expected local " + expectedTime 217f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " got: " + actualTime); 218f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 219f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 220f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 221f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project len = minuteTests.length; 222f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project for (int index = 0; index < len; index++) { 223f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project DateTest test = minuteTests[index]; 224f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.set(0, test.minute1, test.hour1, test.day1, test.month1, test.year1); 225f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.isDst = test.dst1; 226f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // call normalize() to make sure that isDst is set 227f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.normalize(false /* use isDst */); 228f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (test.dst2 == -1) test.dst2 = local.isDst; 229f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.minute += test.offset; 230f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.normalize(false /* use isDst */); 231f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (local.year != test.year2 || local.month != test.month2 232f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project || local.monthDay != test.day2 || local.hour != test.hour2 233f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project || local.minute != test.minute2 || local.isDst != test.dst2) { 234f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String expectedTime = String.format("%d-%02d-%02d %02d:%02d isDst: %d", 235f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project test.year2, test.month2, test.day2, test.hour2, test.minute2, 236f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project test.dst2); 237f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String actualTime = String.format("%d-%02d-%02d %02d:%02d isDst: %d", 238f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.year, local.month, local.monthDay, local.hour, local.minute, 239f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.isDst); 240f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project throw new RuntimeException( 241f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "minute test index " + index + ", normalize(): expected local " + expectedTime 242f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " got: " + actualTime); 243f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 244f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 245f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.set(0, test.minute1, test.hour1, test.day1, test.month1, test.year1); 246f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.isDst = test.dst1; 247f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // call normalize() to make sure that isDst is set 248f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.normalize(false /* use isDst */); 249f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (test.dst2 == -1) test.dst2 = local.isDst; 250f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.minute += test.offset; 251f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project long millis = local.toMillis(false /* use isDst */); 252f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.set(millis); 253f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (local.year != test.year2 || local.month != test.month2 254f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project || local.monthDay != test.day2 || local.hour != test.hour2 255f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project || local.minute != test.minute2 || local.isDst != test.dst2) { 256f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String expectedTime = String.format("%d-%02d-%02d %02d:%02d isDst: %d", 257f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project test.year2, test.month2, test.day2, test.hour2, test.minute2, 258f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project test.dst2); 259f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String actualTime = String.format("%d-%02d-%02d %02d:%02d isDst: %d", 260f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.year, local.month, local.monthDay, local.hour, local.minute, 261f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project local.isDst); 262f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project throw new RuntimeException( 263f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "minute test index " + index + ", toMillis(): expected local " + expectedTime 264f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " got: " + actualTime); 265f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 266f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 267f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 268f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 269f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 270f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testSwitchTimezone0() throws Exception { 271f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 272f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.parse("20061005T120000"); 273f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.switchTimezone("America/Los_Angeles"); 274f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("got: " + t); 275f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 276f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 277f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 278f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testCtor0() throws Exception { 279f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 280f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project assertEquals(Time.TIMEZONE_UTC, t.timezone); 281f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 282f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 283f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 284f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testGetActualMaximum0() throws Exception { 285f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 286f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int r = t.getActualMaximum(Time.SECOND); 287f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("r=" + r); 288f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 289f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 290f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 291f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testClear0() throws Exception { 292f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 293f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.clear(Time.TIMEZONE_UTC); 294f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 295f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 296f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 297f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testCompare0() throws Exception { 298f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time a = new Time(Time.TIMEZONE_UTC); 299f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time b = new Time("America/Los_Angeles"); 300f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int r = Time.compare(a, b); 301f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("r=" + r); 302f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 303f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 304f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 305f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testFormat0() throws Exception { 306f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 307f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String r = t.format("%Y%m%dT%H%M%S"); 308f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("r='" + r + "'"); 309f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 310f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 311f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 312f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testToString0() throws Exception { 313f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 314f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String r = t.toString(); 315f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("r='" + r + "'"); 316f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 317f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 318f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 319f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testGetCurrentTimezone0() throws Exception { 320f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project String r = Time.getCurrentTimezone(); 321f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("r='" + r + "'"); 322f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 323f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 324f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 325f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testSetToNow0() throws Exception { 326f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 327f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.setToNow(); 328f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("t=" + t); 329f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 330f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 331f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 332f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testMillis0() throws Exception { 333f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 334f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.set(0, 0, 0, 1, 1, 2006); 335f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project long r = t.toMillis(true /* ignore isDst */); 336f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("r=" + r); 337f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.set(1, 0, 0, 1, 1, 2006); 338f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project r = t.toMillis(true /* ignore isDst */); 339f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("r=" + r); 340f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 341f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 342f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 343f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testMillis1() throws Exception { 344f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 345f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.set(1, 0, 0, 1, 0, 1970); 346f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project long r = t.toMillis(true /* ignore isDst */); 347f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("r=" + r); 348f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 349f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 350f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 351f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testParse0() throws Exception { 352f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 353f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.parse("12345678T901234"); 354f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("t=" + t); 355f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 356f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 357f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 3586c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root public void testParse33390() throws Exception { 3596c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root Time t = new Time(Time.TIMEZONE_UTC); 3606c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 3616c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980-05-23"); 362de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root if (!t.allDay || t.year != 1980 || t.month != 04 || t.monthDay != 23) { 3636c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not parse all-day date correctly"); 3646c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 3656c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 3666c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980-05-23T09:50:50"); 367de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root if (t.allDay || t.year != 1980 || t.month != 04 || t.monthDay != 23 || 3686c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.hour != 9 || t.minute != 50 || t.second != 50 || 3696c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.gmtoff != 0) { 3706c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not parse timezone-offset-less date correctly"); 3716c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 3726c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 3736c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980-05-23T09:50:50Z"); 374de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root if (t.allDay || t.year != 1980 || t.month != 04 || t.monthDay != 23 || 3756c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.hour != 9 || t.minute != 50 || t.second != 50 || 3766c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.gmtoff != 0) { 3776c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not parse UTC date correctly"); 3786c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 3796c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 3806c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980-05-23T09:50:50.0Z"); 381de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root if (t.allDay || t.year != 1980 || t.month != 04 || t.monthDay != 23 || 3826c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.hour != 9 || t.minute != 50 || t.second != 50 || 3836c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.gmtoff != 0) { 3846c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not parse UTC date correctly"); 3856c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 3866c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 3876c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980-05-23T09:50:50.12Z"); 388de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root if (t.allDay || t.year != 1980 || t.month != 04 || t.monthDay != 23 || 3896c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.hour != 9 || t.minute != 50 || t.second != 50 || 3906c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.gmtoff != 0) { 3916c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not parse UTC date correctly"); 3926c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 3936c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 3946c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980-05-23T09:50:50.123Z"); 395de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root if (t.allDay || t.year != 1980 || t.month != 04 || t.monthDay != 23 || 3966c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.hour != 9 || t.minute != 50 || t.second != 50 || 3976c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.gmtoff != 0) { 3986c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not parse UTC date correctly"); 3996c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 4006c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 401de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root // The time should be normalized to UTC 402de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root t.parse3339("1980-05-23T09:50:50-01:05"); 403de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root if (t.allDay || t.year != 1980 || t.month != 04 || t.monthDay != 23 || 404de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root t.hour != 10 || t.minute != 55 || t.second != 50 || 405de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root t.gmtoff != 0) { 4066c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not parse timezone-offset date correctly"); 4076c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 4086c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 409de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root // The time should be normalized to UTC 410de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root t.parse3339("1980-05-23T09:50:50.123-01:05"); 411de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root if (t.allDay || t.year != 1980 || t.month != 04 || t.monthDay != 23 || 412de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root t.hour != 10 || t.minute != 55 || t.second != 50 || 413de8aa87016a8dc2c252002ec60f6285b7a839336Kenny Root t.gmtoff != 0) { 4146c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not parse timezone-offset date correctly"); 4156c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 4166c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 4176c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root try { 4186c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980"); 4196c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not throw error on truncated input length"); 4206c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } catch (TimeFormatException e) { 4216c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root // Successful 4226c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 4236c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 4246c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root try { 4256c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980-05-23T09:50:50.123+"); 4266c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not throw error on truncated timezone offset"); 4276c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } catch (TimeFormatException e1) { 4286c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root // Successful 4296c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 4306c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 4316c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root try { 4326c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root t.parse3339("1980-05-23T09:50:50.123+05:0"); 4336c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root fail("Did not throw error on truncated timezone offset"); 4346c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } catch (TimeFormatException e1) { 4356c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root // Successful 4366c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 4376c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root } 4386c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root 4396c2d4029f1fecb51e0b002e652fd18e18d059fe0Kenny Root @SmallTest 440f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testSet0() throws Exception { 441f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 442f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.set(1000L); 443f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("t.year=" + t.year); 444f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("t=" + t); 445f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.set(2000L); 446f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("t=" + t); 447f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.set(1000L * 60); 448f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("t=" + t); 449f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.set((1000L * 60 * 60 * 24) + 1000L); 450f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("t=" + t); 451f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 452f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 453f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @SmallTest 454f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void testSet1() throws Exception { 455f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time t = new Time(Time.TIMEZONE_UTC); 456f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project t.set(1, 2, 3, 4, 5, 6); 457f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // System.out.println("t=" + t); 458f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 459f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 460f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Timezones that cover the world. Some GMT offsets occur more than 461f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // once in case some cities decide to change their GMT offset. 462f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private static final String[] mTimeZones = { 463f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Pacific/Kiritimati", 464f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Pacific/Enderbury", 465f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Pacific/Fiji", 466f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Antarctica/South_Pole", 467f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Pacific/Norfolk", 468f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Pacific/Ponape", 469f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Magadan", 470f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Australia/Lord_Howe", 471f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Australia/Sydney", 472f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Australia/Adelaide", 473f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Tokyo", 474f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Seoul", 475f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Taipei", 476f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Singapore", 477f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Hong_Kong", 478f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Saigon", 479f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Bangkok", 480f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Indian/Cocos", 481f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Rangoon", 482f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Omsk", 483f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Antarctica/Mawson", 484f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Colombo", 485f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Calcutta", 486f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Oral", 487f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Kabul", 488f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Dubai", 489f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Tehran", 490f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Europe/Moscow", 491f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Asia/Baghdad", 492f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Africa/Mogadishu", 493f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Europe/Athens", 494f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Africa/Cairo", 495f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Europe/Rome", 496f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Europe/Berlin", 497f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Europe/Amsterdam", 498f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Africa/Tunis", 499f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Europe/London", 500f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Europe/Dublin", 501f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Atlantic/St_Helena", 502f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Africa/Monrovia", 503f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Africa/Accra", 504f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Atlantic/Azores", 505f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Atlantic/South_Georgia", 506f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Noronha", 507f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Sao_Paulo", 508f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Cayenne", 509f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/St_Johns", 510f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Puerto_Rico", 511f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Aruba", 512f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/New_York", 513f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Chicago", 514f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Denver", 515f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Los_Angeles", 516f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Anchorage", 517f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Pacific/Marquesas", 518f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "America/Adak", 519f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Pacific/Honolulu", 520f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "Pacific/Midway", 521f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project }; 522f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 523f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Suppress 524f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void disableTestGetJulianDay() throws Exception { 525f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time time = new Time(); 526f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 527f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // For each day of the year, and for each timezone, get the Julian 528f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // day for 12am and then check that if we change the time we get the 529f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // same Julian day. 530f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project for (int monthDay = 1; monthDay <= 366; monthDay++) { 531f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project for (int zoneIndex = 0; zoneIndex < mTimeZones.length; zoneIndex++) { 532f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // We leave the "month" as zero because we are changing the 533f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // "monthDay" from 1 to 366. The call to normalize() will 534f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // then change the "month" (but we don't really care). 535f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project time.set(0, 0, 0, monthDay, 0, 2008); 536f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project time.timezone = mTimeZones[zoneIndex]; 537f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project long millis = time.normalize(true); 538f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (zoneIndex == 0) { 539f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Log.i("TimeTest", time.format("%B %d, %Y")); 540f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 541f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 542f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // This is the Julian day for 12am for this day of the year 543f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int julianDay = Time.getJulianDay(millis, time.gmtoff); 544f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 545f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Change the time during the day and check that we get the same 546f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Julian day. 547f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project for (int hour = 0; hour < 24; hour++) { 548f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project for (int minute = 0; minute < 60; minute += 15) { 549f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project time.set(0, minute, hour, monthDay, 0, 2008); 550f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project millis = time.normalize(true); 551f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int day = Time.getJulianDay(millis, time.gmtoff); 552f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (day != julianDay) { 553f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Log.e("TimeTest", "Julian day: " + day + " at time " 554f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + time.hour + ":" + time.minute 555f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " != today's Julian day: " + julianDay 556f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " timezone: " + time.timezone); 557f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 558f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project assertEquals(day, julianDay); 559f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 560f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 561f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 562f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 563f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 564f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 565f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project @Suppress 566f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project public void disableTestSetJulianDay() throws Exception { 567f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Time time = new Time(); 568f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 569f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // For each day of the year in 2008, and for each timezone, 570f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // test that we can set the Julian day correctly. 571f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project for (int monthDay = 1; monthDay <= 366; monthDay++) { 572f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project for (int zoneIndex = 0; zoneIndex < mTimeZones.length; zoneIndex++) { 573f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // We leave the "month" as zero because we are changing the 574f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // "monthDay" from 1 to 366. The call to normalize() will 575f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // then change the "month" (but we don't really care). 576f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project time.set(0, 0, 0, monthDay, 0, 2008); 577f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project time.timezone = mTimeZones[zoneIndex]; 578f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project long millis = time.normalize(true); 579f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (zoneIndex == 0) { 580f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Log.i("TimeTest", time.format("%B %d, %Y")); 581f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 582f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int julianDay = Time.getJulianDay(millis, time.gmtoff); 583f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 584f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project time.setJulianDay(julianDay); 585f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 586f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Some places change daylight saving time at 12am and so there 587f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // is no 12am on some days in some timezones. In those cases, 588f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // the time is set to 1am. 589f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Examples: Africa/Cairo on April 25, 2008 590f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // America/Sao_Paulo on October 12, 2008 591f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Atlantic/Azores on March 30, 2008 592f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project assertTrue(time.hour == 0 || time.hour == 1); 593f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project assertEquals(0, time.minute); 594f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project assertEquals(0, time.second); 595f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 596f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project millis = time.toMillis(false); 597f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int day = Time.getJulianDay(millis, time.gmtoff); 598f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (day != julianDay) { 599f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Log.i("TimeTest", "Error: gmtoff " + (time.gmtoff / 3600.0) 600f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " day " + julianDay 601f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " millis " + millis 602f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + " " + time.format("%B %d, %Y") + " " + time.timezone); 603f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 604f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project assertEquals(day, julianDay); 605f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 606f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 607f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 608f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project} 609