package com.supaham.commons;
import com.supaham.commons.utils.ExpiringSet;
import com.supaham.commons.utils.ExpiringSet.RemovalListener;
import org.junit.Assert;
import org.junit.Test;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
public class ExpiringSetTest {
@Test
public void testExpiration() throws Exception {
ExpiringSet<String> strings = new ExpiringSet<>(1, TimeUnit.SECONDS);
String string = "Hi! :)";
strings.add(string);
Thread.sleep(1001);
Assert.assertTrue(!strings.contains(string));
}
@Test
public void testListener() throws Exception {
final Set<String> removed = new HashSet<>();
ExpiringSet<String> strings = new ExpiringSet<>(1, TimeUnit.SECONDS,
new RemovalListener<String>() {
@Override
public void onRemoval(@Nonnull String s) {
removed.add(s);
}
});
String string = "Hi! :)";
strings.add(string);
Thread.sleep(1001);
strings.cleanUp(); // required to update the set, alternatively you would read/write to update.
Assert.assertTrue(removed.contains(string));
}
}