blob: 40bbe0d8c5b6270dc0c3edd1ed600bab0f2f7a85 [file] [log] [blame]
package org.robolectric.shadows;
import android.os.Build;
import android.text.format.DateUtils;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.TestRunners;
import org.robolectric.annotation.Config;
import java.util.Calendar;
import java.util.TimeZone;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(TestRunners.MultiApiWithDefaults.class)
public class ShadowDateUtilsTest {
@Test
@Config(sdk = {
Build.VERSION_CODES.KITKAT,
Build.VERSION_CODES.LOLLIPOP,
Build.VERSION_CODES.LOLLIPOP_MR1})
public void formatDateTime_withCurrentYear_worksSinceKitKat() {
final long millisAtStartOfYear = getMillisAtStartOfYear();
String actual = DateUtils.formatDateTime(RuntimeEnvironment.application, millisAtStartOfYear, DateUtils.FORMAT_NUMERIC_DATE);
assertThat(actual).isEqualTo("1/1");
}
@Test
@Config(sdk = {Build.VERSION_CODES.M})
public void formatDateTime_withCurrentYear_worksSinceM() {
Calendar calendar = Calendar.getInstance();
final int currentYear = calendar.get(Calendar.YEAR);
final long millisAtStartOfYear = getMillisAtStartOfYear();
String actual = DateUtils.formatDateTime(RuntimeEnvironment.application, millisAtStartOfYear, DateUtils.FORMAT_NUMERIC_DATE);
assertThat(actual).isEqualTo("1/1/" + currentYear);
}
@Test
@Config(sdk = {
Build.VERSION_CODES.JELLY_BEAN,
Build.VERSION_CODES.JELLY_BEAN_MR1,
Build.VERSION_CODES.JELLY_BEAN_MR2})
public void formatDateTime_withCurrentYear_worksPreKitKat() {
Calendar calendar = Calendar.getInstance();
final int currentYear = calendar.get(Calendar.YEAR);
final long millisAtStartOfYear = getMillisAtStartOfYear();
String actual = DateUtils.formatDateTime(RuntimeEnvironment.application, millisAtStartOfYear, DateUtils.FORMAT_NUMERIC_DATE);
assertThat(actual).isEqualTo("1/1/" + currentYear);
}
@Test
@Config(sdk = {
Build.VERSION_CODES.JELLY_BEAN,
Build.VERSION_CODES.JELLY_BEAN_MR1,
Build.VERSION_CODES.JELLY_BEAN_MR2,
Build.VERSION_CODES.KITKAT,
Build.VERSION_CODES.LOLLIPOP,
Build.VERSION_CODES.LOLLIPOP_MR1,
Build.VERSION_CODES.M})
public void formatDateTime_withPastYear() {
String actual = DateUtils.formatDateTime(RuntimeEnvironment.application, 1420099200000L, DateUtils.FORMAT_NUMERIC_DATE);
assertThat(actual).isEqualTo("1/1/2015");
}
@Test
public void isToday_shouldReturnFalseForNotToday() {
long today = java.util.Calendar.getInstance().getTimeInMillis();
ShadowSystemClock.setCurrentTimeMillis(today);
assertThat(DateUtils.isToday(today)).isTrue();
assertThat(DateUtils.isToday(today + (86400 * 1000) /* 24 hours */)).isFalse();
assertThat(DateUtils.isToday(today + (86400 * 10000) /* 240 hours */)).isFalse();
}
private long getMillisAtStartOfYear() {
Calendar calendar = Calendar.getInstance();
final int currentYear = calendar.get(Calendar.YEAR);
calendar.setTimeZone(TimeZone.getTimeZone("GMT-8:00"));
calendar.set(currentYear, Calendar.JANUARY, 1, 0, 0, 0);
return calendar.getTimeInMillis();
}
}