blob: 6063e1a6921d7b6d8b918edc8b47837c389f98b2 [file] [log] [blame]
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -08001/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.text.format;
18
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010019import static org.junit.Assert.assertEquals;
20
Roozbeh Pournader4262e942016-06-30 16:07:01 -070021import android.content.res.Configuration;
22import android.content.res.Resources;
23import android.os.LocaleList;
Siyamed Sinir68089c82016-06-29 16:55:35 -070024import android.support.test.filters.SmallTest;
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010025import android.support.test.runner.AndroidJUnit4;
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -080026
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010027import org.junit.After;
28import org.junit.Before;
29import org.junit.Test;
30import org.junit.runner.RunWith;
Roozbeh Pournader4262e942016-06-30 16:07:01 -070031
Roozbeh Pournader02f167c2017-06-06 11:31:33 -070032import java.text.DateFormat;
33import java.util.Calendar;
34import java.util.Date;
35import java.util.Locale;
36
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010037@SmallTest
38@RunWith(AndroidJUnit4.class)
39public class DateUtilsTest {
Roozbeh Pournader4262e942016-06-30 16:07:01 -070040
41 private static final LocaleList LOCALE_LIST_US = new LocaleList(Locale.US);
42 private LocaleList mOriginalLocales;
43
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010044 @Before
45 public void setup() {
Roozbeh Pournader4262e942016-06-30 16:07:01 -070046 mOriginalLocales = Resources.getSystem().getConfiguration().getLocales();
47 setLocales(LOCALE_LIST_US);
48 }
49
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010050 @After
51 public void teardown() {
Roozbeh Pournader4262e942016-06-30 16:07:01 -070052 setLocales(mOriginalLocales);
Roozbeh Pournader4262e942016-06-30 16:07:01 -070053 }
54
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010055 @Test
56 public void test_formatDuration_seconds() {
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -080057 assertEquals("0 seconds", DateUtils.formatDuration(0));
58 assertEquals("0 seconds", DateUtils.formatDuration(1));
59 assertEquals("0 seconds", DateUtils.formatDuration(499));
60 assertEquals("1 second", DateUtils.formatDuration(500));
61 assertEquals("1 second", DateUtils.formatDuration(1000));
62 assertEquals("2 seconds", DateUtils.formatDuration(1500));
Roozbeh Pournaderc6bffbf2016-12-13 13:58:56 -080063
64 assertEquals("0 seconds", DateUtils.formatDuration(0, DateUtils.LENGTH_LONG));
65 assertEquals("1 second", DateUtils.formatDuration(1000, DateUtils.LENGTH_LONG));
66 assertEquals("2 seconds", DateUtils.formatDuration(1500, DateUtils.LENGTH_LONG));
67
68 assertEquals("0 sec", DateUtils.formatDuration(0, DateUtils.LENGTH_SHORT));
69 assertEquals("1 sec", DateUtils.formatDuration(1000, DateUtils.LENGTH_SHORT));
70 assertEquals("2 sec", DateUtils.formatDuration(1500, DateUtils.LENGTH_SHORT));
71
72 assertEquals("0s", DateUtils.formatDuration(0, DateUtils.LENGTH_SHORTEST));
73 assertEquals("1s", DateUtils.formatDuration(1000, DateUtils.LENGTH_SHORTEST));
74 assertEquals("2s", DateUtils.formatDuration(1500, DateUtils.LENGTH_SHORTEST));
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -080075 }
76
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010077 @Test
78 public void test_formatDuration_Minutes() {
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -080079 assertEquals("59 seconds", DateUtils.formatDuration(59000));
80 assertEquals("60 seconds", DateUtils.formatDuration(59500));
81 assertEquals("1 minute", DateUtils.formatDuration(60000));
82 assertEquals("2 minutes", DateUtils.formatDuration(120000));
Roozbeh Pournaderc6bffbf2016-12-13 13:58:56 -080083
84 assertEquals("1 minute", DateUtils.formatDuration(60000, DateUtils.LENGTH_LONG));
85 assertEquals("2 minutes", DateUtils.formatDuration(120000, DateUtils.LENGTH_LONG));
86
87 assertEquals("1 min", DateUtils.formatDuration(60000, DateUtils.LENGTH_SHORT));
88 assertEquals("2 min", DateUtils.formatDuration(120000, DateUtils.LENGTH_SHORT));
89
90 assertEquals("1m", DateUtils.formatDuration(60000, DateUtils.LENGTH_SHORTEST));
91 assertEquals("2m", DateUtils.formatDuration(120000, DateUtils.LENGTH_SHORTEST));
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -080092 }
93
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +010094 @Test
95 public void test_formatDuration_Hours() {
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -080096 assertEquals("59 minutes", DateUtils.formatDuration(3540000));
97 assertEquals("1 hour", DateUtils.formatDuration(3600000));
98 assertEquals("48 hours", DateUtils.formatDuration(172800000));
Roozbeh Pournaderc6bffbf2016-12-13 13:58:56 -080099
100 assertEquals("1 hour", DateUtils.formatDuration(3600000, DateUtils.LENGTH_LONG));
101 assertEquals("48 hours", DateUtils.formatDuration(172800000, DateUtils.LENGTH_LONG));
102
103 assertEquals("1 hr", DateUtils.formatDuration(3600000, DateUtils.LENGTH_SHORT));
104 assertEquals("48 hr", DateUtils.formatDuration(172800000, DateUtils.LENGTH_SHORT));
105
106 assertEquals("1h", DateUtils.formatDuration(3600000, DateUtils.LENGTH_SHORTEST));
107 assertEquals("48h", DateUtils.formatDuration(172800000, DateUtils.LENGTH_SHORTEST));
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -0800108 }
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +0100109
Roozbeh Pournader02f167c2017-06-06 11:31:33 -0700110 @Test
111 public void testFormatSameDayTime() {
112 // This test assumes a default DateFormat.is24Hour setting.
113 DateFormat.is24Hour = null;
114 Date date = new Date(109, 0, 19, 3, 30, 15);
115 long fixedTime = date.getTime();
116
117 int currentYear = Calendar.getInstance().get(Calendar.YEAR);
118 Date dateWithCurrentYear = new Date(currentYear - 1900, 0, 19, 3, 30, 15);
119
120 final long dayDuration = 5 * 24 * 60 * 60 * 1000;
121 assertEquals("Saturday, January 24, 2009", DateUtils.formatSameDayTime(
122 fixedTime + dayDuration, fixedTime, java.text.DateFormat.FULL,
123 java.text.DateFormat.FULL));
124 assertEquals("Jan 24, 2009", DateUtils.formatSameDayTime(fixedTime + dayDuration,
125 fixedTime, java.text.DateFormat.DEFAULT, java.text.DateFormat.FULL));
126 assertEquals("January 24, 2009", DateUtils.formatSameDayTime(fixedTime + dayDuration,
127 fixedTime, java.text.DateFormat.LONG, java.text.DateFormat.FULL));
128 assertEquals("Jan 24, 2009", DateUtils.formatSameDayTime(fixedTime + dayDuration,
129 fixedTime, java.text.DateFormat.MEDIUM, java.text.DateFormat.FULL));
130 assertEquals("1/24/09", DateUtils.formatSameDayTime(fixedTime + dayDuration,
131 fixedTime, java.text.DateFormat.SHORT, java.text.DateFormat.FULL));
132
133 final long hourDuration = 2 * 60 * 60 * 1000;
134 assertEquals("5:30:15 AM GMT+00:00", DateUtils.formatSameDayTime(fixedTime + hourDuration,
135 fixedTime, java.text.DateFormat.FULL, java.text.DateFormat.FULL));
136 assertEquals("5:30:15 AM", DateUtils.formatSameDayTime(fixedTime + hourDuration,
137 fixedTime, java.text.DateFormat.FULL, java.text.DateFormat.DEFAULT));
138 assertEquals("5:30:15 AM GMT+00:00", DateUtils.formatSameDayTime(fixedTime + hourDuration,
139 fixedTime, java.text.DateFormat.FULL, java.text.DateFormat.LONG));
140 assertEquals("5:30:15 AM", DateUtils.formatSameDayTime(fixedTime + hourDuration,
141 fixedTime, java.text.DateFormat.FULL, java.text.DateFormat.MEDIUM));
142 assertEquals("5:30 AM", DateUtils.formatSameDayTime(fixedTime + hourDuration,
143 fixedTime, java.text.DateFormat.FULL, java.text.DateFormat.SHORT));
144 }
145
Andrei Stingaceanubbe51f82017-04-28 14:48:17 +0100146 private void setLocales(LocaleList locales) {
147 final Resources systemResources = Resources.getSystem();
148 final Configuration config = new Configuration(systemResources.getConfiguration());
149 config.setLocales(locales);
150 // This is not very safe to call, but since DateUtils.formatDuration() is a static method
151 // (it gets its format strings from the system resources), we can't pass a modified Context
152 // to it.
153 systemResources.updateConfiguration(config, null);
154 }
155
Jeff Sharkey53f6e8a2012-11-13 16:23:59 -0800156}