Skip to content

Commit 7c26805

Browse files
committed
[Tests] Fix DateStringsTest on non-UTC environments
1 parent 778a9f2 commit 7c26805

File tree

1 file changed

+75
-27
lines changed

1 file changed

+75
-27
lines changed

lib/javatests/com/google/android/material/datepicker/DateStringsTest.java

Lines changed: 75 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import java.text.SimpleDateFormat;
2525
import java.util.Calendar;
2626
import java.util.Locale;
27+
import java.util.TimeZone;
28+
2729
import org.junit.Test;
2830
import org.junit.runner.RunWith;
2931
import org.robolectric.RobolectricTestRunner;
@@ -35,21 +37,27 @@
3537
@DoNotInstrument
3638
public class DateStringsTest {
3739

38-
private static final int CURRENT_YEAR = Calendar.getInstance().get(Calendar.YEAR);
40+
private static final TimeZone UTC = TimeZone.getTimeZone("UTC");
41+
private static final int CURRENT_YEAR = Calendar.getInstance(UTC).get(Calendar.YEAR);
3942

4043
private Calendar startDate;
4144
private Calendar endDate;
4245

4346
private static Calendar setupLocalizedCalendar(Locale locale, int year, int month, int day) {
44-
Locale.setDefault(locale);
45-
Calendar calendar = Calendar.getInstance();
47+
Calendar calendar = Calendar.getInstance(UTC, locale);
4648
calendar.clear();
4749
calendar.set(Calendar.YEAR, year);
4850
calendar.set(Calendar.MONTH, month);
4951
calendar.set(Calendar.DAY_OF_MONTH, day);
5052
return calendar;
5153
}
5254

55+
private static SimpleDateFormat setupUtcDateFormat(String pattern, Locale locale) {
56+
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, locale);
57+
dateFormat.setTimeZone(UTC);
58+
return dateFormat;
59+
}
60+
5361
@Test
5462
public void frYearMonthDayString() {
5563
Locale locale = Locale.FRANCE;
@@ -217,10 +225,12 @@ public void getDateStringCurrentYear() {
217225

218226
@Test
219227
public void getDateStringCurrentYearWithUserDefinedDateFormat() {
220-
startDate = setupLocalizedCalendar(Locale.US, CURRENT_YEAR, 10, 30);
221-
String dateString =
222-
DateStrings.getDateString(
223-
startDate.getTimeInMillis(), new SimpleDateFormat("MMMM dd, yyyy", Locale.US));
228+
Locale locale = Locale.US;
229+
SimpleDateFormat dateFormat = setupUtcDateFormat("MMMM dd, yyyy", locale);
230+
231+
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
232+
233+
String dateString = DateStrings.getDateString(startDate.getTimeInMillis(), dateFormat);
224234
assertThat(dateString, is("November 30, " + CURRENT_YEAR));
225235
}
226236

@@ -233,10 +243,12 @@ public void getDateStringNextYear() {
233243

234244
@Test
235245
public void getDateStringNextYearWithUserDefinedDateFormat() {
236-
startDate = setupLocalizedCalendar(Locale.US, CURRENT_YEAR + 1, 10, 3);
237-
String dateString =
238-
DateStrings.getDateString(
239-
startDate.getTimeInMillis(), new SimpleDateFormat("MMMM dd", Locale.US));
246+
Locale locale = Locale.US;
247+
SimpleDateFormat dateFormat = setupUtcDateFormat("MMMM dd", locale);
248+
249+
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 10, 3);
250+
251+
String dateString = DateStrings.getDateString(startDate.getTimeInMillis(), dateFormat);
240252
assertThat(dateString, is("November 03"));
241253
}
242254

@@ -275,33 +287,44 @@ public void getDateRangeStringMultipleYears() {
275287

276288
@Test
277289
public void getDateRangeStringCurrentYearWithUserDefinedDateFormat() {
278-
startDate = setupLocalizedCalendar(Locale.US, CURRENT_YEAR, 4, 30);
279-
endDate = setupLocalizedCalendar(Locale.US, CURRENT_YEAR, 11, 5);
290+
Locale locale = Locale.US;
291+
SimpleDateFormat dateFormat = setupUtcDateFormat("MMM dd, yyyy", locale);
292+
293+
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 4, 30);
294+
endDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 11, 5);
295+
280296
Pair<String, String> dateRangeString =
281297
DateStrings.getDateRangeString(
282298
startDate.getTimeInMillis(),
283299
endDate.getTimeInMillis(),
284-
new SimpleDateFormat("MMM dd, yyyy", Locale.US));
300+
dateFormat);
285301
assertThat(dateRangeString.first, is("May 30, " + CURRENT_YEAR));
286302
assertThat(dateRangeString.second, is("Dec 05, " + CURRENT_YEAR));
287303
}
288304

289305
@Test
290306
public void getDateRangeStringMultipleYearsWithUserDefinedDateFormat() {
291-
startDate = setupLocalizedCalendar(Locale.US, CURRENT_YEAR, 4, 30);
292-
endDate = setupLocalizedCalendar(Locale.US, CURRENT_YEAR + 1, 11, 5);
307+
Locale locale = Locale.US;
308+
SimpleDateFormat dateFormat = setupUtcDateFormat("MMM dd", locale);
309+
310+
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 4, 30);
311+
endDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 11, 5);
312+
293313
Pair<String, String> dateRangeString =
294314
DateStrings.getDateRangeString(
295315
startDate.getTimeInMillis(),
296316
endDate.getTimeInMillis(),
297-
new SimpleDateFormat("MMM dd", Locale.US));
317+
dateFormat);
298318
assertThat(dateRangeString.first, is("May 30"));
299319
assertThat(dateRangeString.second, is("Dec 05"));
300320
}
301321

302322
@Test
303323
public void getDayContentDescription_notToday() {
304-
startDate = setupLocalizedCalendar(Locale.US, 2020, 10, 30);
324+
Locale locale = Locale.US;
325+
Locale.setDefault(locale);
326+
327+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
305328
String contentDescription =
306329
DateStrings.getDayContentDescription(
307330
ApplicationProvider.getApplicationContext(),
@@ -315,7 +338,10 @@ public void getDayContentDescription_notToday() {
315338

316339
@Test
317340
public void getDayContentDescription_notToday_startOfRange() {
318-
startDate = setupLocalizedCalendar(Locale.US, 2020, 10, 30);
341+
Locale locale = Locale.US;
342+
Locale.setDefault(locale);
343+
344+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
319345
String contentDescription =
320346
DateStrings.getDayContentDescription(
321347
ApplicationProvider.getApplicationContext(),
@@ -329,7 +355,10 @@ public void getDayContentDescription_notToday_startOfRange() {
329355

330356
@Test
331357
public void getDayContentDescription_notToday_endOfRange() {
332-
startDate = setupLocalizedCalendar(Locale.US, 2020, 10, 30);
358+
Locale locale = Locale.US;
359+
Locale.setDefault(locale);
360+
361+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
333362
String contentDescription =
334363
DateStrings.getDayContentDescription(
335364
ApplicationProvider.getApplicationContext(),
@@ -343,7 +372,10 @@ public void getDayContentDescription_notToday_endOfRange() {
343372

344373
@Test
345374
public void getDayContentDescription_notToday_startAndEndOfRange() {
346-
startDate = setupLocalizedCalendar(Locale.US, 2020, 10, 30);
375+
Locale locale = Locale.US;
376+
Locale.setDefault(locale);
377+
378+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
347379
String contentDescription =
348380
DateStrings.getDayContentDescription(
349381
ApplicationProvider.getApplicationContext(),
@@ -357,7 +389,10 @@ public void getDayContentDescription_notToday_startAndEndOfRange() {
357389

358390
@Test
359391
public void getDayContentDescription_today() {
360-
startDate = setupLocalizedCalendar(Locale.US, 2020, 10, 30);
392+
Locale locale = Locale.US;
393+
Locale.setDefault(locale);
394+
395+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
361396
String contentDescription =
362397
DateStrings.getDayContentDescription(
363398
ApplicationProvider.getApplicationContext(),
@@ -371,7 +406,10 @@ public void getDayContentDescription_today() {
371406

372407
@Test
373408
public void getDayContentDescription_today_startOfRange() {
374-
startDate = setupLocalizedCalendar(Locale.US, 2020, 10, 30);
409+
Locale locale = Locale.US;
410+
Locale.setDefault(locale);
411+
412+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
375413
String contentDescription =
376414
DateStrings.getDayContentDescription(
377415
ApplicationProvider.getApplicationContext(),
@@ -385,7 +423,10 @@ public void getDayContentDescription_today_startOfRange() {
385423

386424
@Test
387425
public void getDayContentDescription_today_endOfRange() {
388-
startDate = setupLocalizedCalendar(Locale.US, 2020, 10, 30);
426+
Locale locale = Locale.US;
427+
Locale.setDefault(locale);
428+
429+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
389430
String contentDescription =
390431
DateStrings.getDayContentDescription(
391432
ApplicationProvider.getApplicationContext(),
@@ -399,7 +440,10 @@ public void getDayContentDescription_today_endOfRange() {
399440

400441
@Test
401442
public void getDayContentDescription_today_startAndEndOfRange() {
402-
startDate = setupLocalizedCalendar(Locale.US, 2020, 10, 30);
443+
Locale locale = Locale.US;
444+
Locale.setDefault(locale);
445+
446+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
403447
String contentDescription =
404448
DateStrings.getDayContentDescription(
405449
ApplicationProvider.getApplicationContext(),
@@ -413,7 +457,10 @@ public void getDayContentDescription_today_startAndEndOfRange() {
413457

414458
@Test
415459
public void getLocalizedDayContentDescription_german() {
416-
startDate = setupLocalizedCalendar(Locale.GERMAN, 2020, 10, 30);
460+
Locale locale = Locale.GERMAN;
461+
Locale.setDefault(locale);
462+
463+
startDate = setupLocalizedCalendar(locale, 2020, 10, 30);
417464
String contentDescription =
418465
DateStrings.getDayContentDescription(
419466
ApplicationProvider.getApplicationContext(),
@@ -428,7 +475,8 @@ public void getLocalizedDayContentDescription_german() {
428475
@Test
429476
public void getYearContentDescription_notCurrent() {
430477
String contentDescription =
431-
DateStrings.getYearContentDescription(ApplicationProvider.getApplicationContext(), 2020);
478+
DateStrings.getYearContentDescription(
479+
ApplicationProvider.getApplicationContext(), 2020);
432480

433481
assertThat(contentDescription, is("Navigate to year 2020"));
434482
}

0 commit comments

Comments
 (0)