import java.util.concurrent.atomic.AtomicInteger;
import net.pterodactylus.sone.core.SoneModificationDetector.LockableFingerprintProvider;
-import net.pterodactylus.sone.data.Sone;
import com.google.common.base.Ticker;
+import org.junit.Before;
import org.junit.Test;
/**
* Unit test for {@link SoneModificationDetector}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneModificationDetectorTest {
when(lockableFingerprintProvider.isLocked()).thenReturn(false);
}
+ @Before
+ public void setupOriginalFingerprint() {
+ soneModificationDetector.setFingerprint("original");
+ }
+
@Test
public void normalConstructorCanBeCalled() {
new SoneModificationDetector(lockableFingerprintProvider, insertionDelay);
@Test
public void originalFingerprintIsRetained() {
- assertThat(soneModificationDetector.getOriginalFingerprint(), is("original"));
+ assertThat(soneModificationDetector.getLastInsertFingerprint(), is("original"));
}
@Test
assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
}
+ @Test
+ public void soneWithoutOriginalFingerprintIsNotEligibleAfter59Seconds() {
+ SoneModificationDetector soneModificationDetector = createDetectorWithoutOriginalFingerprint();
+ assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+ passTime(59);
+ assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+ }
+
+ private SoneModificationDetector createDetectorWithoutOriginalFingerprint() {
+ return new SoneModificationDetector(ticker, new LockableFingerprintProvider() {
+ @Override
+ public boolean isLocked() {
+ return false;
+ }
+
+ @Override
+ public String getFingerprint() {
+ return "changed";
+ }
+ }, insertionDelay);
+ }
+
+ @Test
+ public void soneWithoutOriginalFingerprintIsEligibleAfter60Seconds() {
+ SoneModificationDetector soneModificationDetector = createDetectorWithoutOriginalFingerprint();
+ assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+ passTime(60);
+ assertThat(soneModificationDetector.isEligibleForInsert(), is(true));
+ }
+
}