mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Automatically fix invalid timestamps, instead of crashing
This commit is contained in:
@@ -30,7 +30,6 @@ import static org.isoron.uhabits.core.utils.StringUtils.*;
|
||||
|
||||
public final class Timestamp
|
||||
{
|
||||
|
||||
public static final long DAY_LENGTH = 86400000;
|
||||
|
||||
public static final Timestamp ZERO = new Timestamp(0);
|
||||
@@ -39,10 +38,13 @@ public final class Timestamp
|
||||
|
||||
public Timestamp(long unixTime)
|
||||
{
|
||||
if (unixTime < 0 || unixTime % DAY_LENGTH != 0)
|
||||
if (unixTime < 0)
|
||||
throw new IllegalArgumentException(
|
||||
"Invalid unix time: " + unixTime);
|
||||
|
||||
if (unixTime % DAY_LENGTH != 0)
|
||||
unixTime = (unixTime / DAY_LENGTH) * DAY_LENGTH;
|
||||
|
||||
this.unixTime = unixTime;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ package org.isoron.uhabits.core.models;
|
||||
import org.isoron.uhabits.core.*;
|
||||
import org.isoron.uhabits.core.utils.*;
|
||||
import org.junit.*;
|
||||
import org.mockito.internal.verification.*;
|
||||
|
||||
import static junit.framework.TestCase.assertFalse;
|
||||
import static org.hamcrest.MatcherAssert.*;
|
||||
@@ -64,5 +65,10 @@ public class TimestampTest extends BaseUnitTest
|
||||
assertThat(t.daysUntil(t.minus(300)), equalTo(-300));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testInexact() throws Exception
|
||||
{
|
||||
Timestamp t = new Timestamp(1578054764000L);
|
||||
assertThat(t.getUnixTime(), equalTo(1578009600000L));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user