Create Duration class and ExpiringSet#getExpiration (prep for #1073)
- Move expiring collections to util.expiring package - Change ExpiringSet to remove expired entries during normal calls
This commit is contained in:
@@ -3,7 +3,7 @@ package fr.xephi.authme.data;
|
||||
import fr.xephi.authme.ReflectionTestUtils;
|
||||
import fr.xephi.authme.settings.Settings;
|
||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
||||
import fr.xephi.authme.util.TimedCounter;
|
||||
import fr.xephi.authme.util.expiring.TimedCounter;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
||||
@@ -3,7 +3,7 @@ package fr.xephi.authme.data;
|
||||
import fr.xephi.authme.ReflectionTestUtils;
|
||||
import fr.xephi.authme.settings.Settings;
|
||||
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||
import fr.xephi.authme.util.ExpiringSet;
|
||||
import fr.xephi.authme.util.expiring.ExpiringSet;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
@@ -7,7 +7,7 @@ import fr.xephi.authme.message.Messages;
|
||||
import fr.xephi.authme.service.BukkitService;
|
||||
import fr.xephi.authme.settings.Settings;
|
||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
||||
import fr.xephi.authme.util.TimedCounter;
|
||||
import fr.xephi.authme.util.expiring.TimedCounter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -6,7 +6,7 @@ import ch.jalu.injector.testing.InjectDelayed;
|
||||
import fr.xephi.authme.ReflectionTestUtils;
|
||||
import fr.xephi.authme.settings.Settings;
|
||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
||||
import fr.xephi.authme.util.ExpiringMap;
|
||||
import fr.xephi.authme.util.expiring.ExpiringMap;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package fr.xephi.authme.util.expiring;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
/**
|
||||
* Test for {@link Duration}.
|
||||
*/
|
||||
public class DurationTest {
|
||||
|
||||
@Test
|
||||
public void shouldConvertToAppropriateTimeUnit() {
|
||||
check(Duration.createWithSuitableUnit(0, TimeUnit.HOURS),
|
||||
0, TimeUnit.SECONDS);
|
||||
|
||||
check(Duration.createWithSuitableUnit(124, TimeUnit.MINUTES),
|
||||
2, TimeUnit.HOURS);
|
||||
|
||||
check(Duration.createWithSuitableUnit(300, TimeUnit.HOURS),
|
||||
12, TimeUnit.DAYS);
|
||||
|
||||
check(Duration.createWithSuitableUnit(60 * 24 * 50 + 8, TimeUnit.MINUTES),
|
||||
50, TimeUnit.DAYS);
|
||||
|
||||
check(Duration.createWithSuitableUnit(1000L * 60 * 60 * 24 * 7 + 3000, TimeUnit.MILLISECONDS),
|
||||
7, TimeUnit.DAYS);
|
||||
|
||||
check(Duration.createWithSuitableUnit(1000L * 60 * 60 * 3 + 1400, TimeUnit.MILLISECONDS),
|
||||
3, TimeUnit.HOURS);
|
||||
|
||||
check(Duration.createWithSuitableUnit(248, TimeUnit.SECONDS),
|
||||
4, TimeUnit.MINUTES);
|
||||
}
|
||||
|
||||
private static void check(Duration duration, long expectedDuration, TimeUnit expectedUnit) {
|
||||
assertThat(duration.getTimeUnit(), equalTo(expectedUnit));
|
||||
assertThat(duration.getDuration(), equalTo(expectedDuration));
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package fr.xephi.authme.util;
|
||||
package fr.xephi.authme.util.expiring;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
+32
-1
@@ -1,9 +1,10 @@
|
||||
package fr.xephi.authme.util;
|
||||
package fr.xephi.authme.util.expiring;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.hamcrest.Matchers.either;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
@@ -88,4 +89,34 @@ public class ExpiringSetTest {
|
||||
assertThat(set.contains(3), equalTo(false));
|
||||
assertThat(set.contains(6), equalTo(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnExpiration() {
|
||||
// given
|
||||
ExpiringSet<String> set = new ExpiringSet<>(123, TimeUnit.MINUTES);
|
||||
set.add("my entry");
|
||||
|
||||
// when
|
||||
long expiresInHours = set.getExpiration("my entry", TimeUnit.HOURS);
|
||||
long expiresInMinutes = set.getExpiration("my entry", TimeUnit.MINUTES);
|
||||
long unknownExpires = set.getExpiration("bogus", TimeUnit.SECONDS);
|
||||
|
||||
// then
|
||||
assertThat(expiresInHours, equalTo(2L));
|
||||
assertThat(expiresInMinutes, either(equalTo(122L)).or(equalTo(123L)));
|
||||
assertThat(unknownExpires, equalTo(-1L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnMinusOneForExpiredEntry() {
|
||||
// given
|
||||
ExpiringSet<Integer> set = new ExpiringSet<>(-100, TimeUnit.SECONDS);
|
||||
set.add(23);
|
||||
|
||||
// when
|
||||
long expiresInSeconds = set.getExpiration(23, TimeUnit.SECONDS);
|
||||
|
||||
// then
|
||||
assertThat(expiresInSeconds, equalTo(-1L));
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package fr.xephi.authme.util;
|
||||
package fr.xephi.authme.util.expiring;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
Reference in New Issue
Block a user