102 lines
3.6 KiB
Java
102 lines
3.6 KiB
Java
![]() |
package com.google.gson.internal.bind.util;
|
||
|
|
||
|
import org.junit.Rule;
|
||
|
import org.junit.Test;
|
||
|
import org.junit.rules.ExpectedException;
|
||
|
|
||
|
import java.text.ParseException;
|
||
|
import java.text.ParsePosition;
|
||
|
import java.util.*;
|
||
|
|
||
|
import static org.junit.Assert.assertEquals;
|
||
|
|
||
|
public class ISO8601UtilsTest {
|
||
|
|
||
|
@Rule
|
||
|
public final ExpectedException exception = ExpectedException.none();
|
||
|
|
||
|
@Test
|
||
|
public void testDateFormatString() {
|
||
|
Date date = new GregorianCalendar(2018, Calendar.JUNE, 25).getTime();
|
||
|
String dateStr = ISO8601Utils.format(date);
|
||
|
String expectedDate = "2018-06-25";
|
||
|
assertEquals(expectedDate, dateStr.substring(0, expectedDate.length()));
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void testDateFormatWithMilliseconds() {
|
||
|
long time = 1530209176870L;
|
||
|
Date date = new Date(time);
|
||
|
String dateStr = ISO8601Utils.format(date, true);
|
||
|
String expectedDate = "2018-06-28T18:06:16.870Z";
|
||
|
assertEquals(expectedDate, dateStr);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void testDateFormatWithTimezone() {
|
||
|
long time = 1530209176870L;
|
||
|
Date date = new Date(time);
|
||
|
String dateStr = ISO8601Utils.format(date, true, TimeZone.getTimeZone("Brazil/East"));
|
||
|
String expectedDate = "2018-06-28T15:06:16.870-03:00";
|
||
|
assertEquals(expectedDate, dateStr);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void testDateParseWithDefaultTimezone() throws ParseException {
|
||
|
String dateStr = "2018-06-25";
|
||
|
Date date = ISO8601Utils.parse(dateStr, new ParsePosition(0));
|
||
|
Date expectedDate = new GregorianCalendar(2018, Calendar.JUNE, 25).getTime();
|
||
|
assertEquals(expectedDate, date);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void testDateParseWithTimezone() throws ParseException {
|
||
|
TimeZone defaultTimeZone = TimeZone.getDefault();
|
||
|
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
|
||
|
Locale defaultLocale = Locale.getDefault();
|
||
|
Locale.setDefault(Locale.US);
|
||
|
try {
|
||
|
String dateStr = "2018-06-25T00:00:00-03:00";
|
||
|
Date date = ISO8601Utils.parse(dateStr, new ParsePosition(0));
|
||
|
Date expectedDate = new GregorianCalendar(2018, Calendar.JUNE, 25, 3, 0).getTime();
|
||
|
assertEquals(expectedDate, date);
|
||
|
} finally {
|
||
|
TimeZone.setDefault(defaultTimeZone);
|
||
|
Locale.setDefault(defaultLocale);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void testDateParseSpecialTimezone() throws ParseException {
|
||
|
TimeZone defaultTimeZone = TimeZone.getDefault();
|
||
|
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
|
||
|
Locale defaultLocale = Locale.getDefault();
|
||
|
Locale.setDefault(Locale.US);
|
||
|
try {
|
||
|
String dateStr = "2018-06-25T00:02:00-02:58";
|
||
|
Date date = ISO8601Utils.parse(dateStr, new ParsePosition(0));
|
||
|
Date expectedDate = new GregorianCalendar(2018, Calendar.JUNE, 25, 3, 0).getTime();
|
||
|
assertEquals(expectedDate, date);
|
||
|
} finally {
|
||
|
TimeZone.setDefault(defaultTimeZone);
|
||
|
Locale.setDefault(defaultLocale);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void testDateParseInvalidTime() throws ParseException {
|
||
|
TimeZone defaultTimeZone = TimeZone.getDefault();
|
||
|
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
|
||
|
Locale defaultLocale = Locale.getDefault();
|
||
|
Locale.setDefault(Locale.US);
|
||
|
try {
|
||
|
String dateStr = "2018-06-25T61:60:62-03:00";
|
||
|
exception.expect(ParseException.class);
|
||
|
ISO8601Utils.parse(dateStr, new ParsePosition(0));
|
||
|
} finally {
|
||
|
TimeZone.setDefault(defaultTimeZone);
|
||
|
Locale.setDefault(defaultLocale);
|
||
|
}
|
||
|
}
|
||
|
}
|