Increse test coverage.
[Sone.git] / src / test / java / net / pterodactylus / sone / core / SoneModificationDetectorTest.java
index 90f2935..cd0133f 100644 (file)
@@ -32,7 +32,11 @@ public class SoneModificationDetectorTest {
        }
 
        private void modifySone() {
-               when(sone.getFingerprint()).thenReturn("modified");
+               modifySone("");
+       }
+
+       private void modifySone(String uniqueValue) {
+               when(sone.getFingerprint()).thenReturn("modified" + uniqueValue);
        }
 
        private void passTime(int seconds) {
@@ -43,18 +47,55 @@ public class SoneModificationDetectorTest {
                when(core.isLocked(sone)).thenReturn(true);
        }
 
+       private void unlockSone() {
+               when(core.isLocked(sone)).thenReturn(false);
+       }
+
        @Test
-       public void modifiedSoneIsEligibleAfter60Seconds() {
+       public void normalConstructorCanBeCalled() {
+               new SoneModificationDetector(core, sone, insertionDelay);
+       }
+
+       @Test
+       public void sonesStartOutAsNotEligible() {
+               assertThat(soneModificationDetector.isModified(), is(false));
                assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+       }
+
+       @Test
+       public void originalFingerprintIsRetained() {
+               assertThat(soneModificationDetector.getOriginalFingerprint(), is("original"));
+       }
+
+       @Test
+       public void modifiedSoneIsEligibleAfter60Seconds() {
                modifySone();
+               assertThat(soneModificationDetector.isModified(), is(true));
                assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
                passTime(100);
+               assertThat(soneModificationDetector.isModified(), is(true));
                assertThat(soneModificationDetector.isEligibleForInsert(), is(true));
        }
 
        @Test
-       public void modifiedSoneIsNotEligibleAfter30Seconds() {
+       public void modifiedAndRemodifiedSoneIsEligibleAfter90Seconds() {
+               modifySone();
+               assertThat(soneModificationDetector.isModified(), is(true));
+               assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+               passTime(30);
+               modifySone("2");
+               assertThat(soneModificationDetector.isModified(), is(true));
                assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+               passTime(61);
+               assertThat(soneModificationDetector.isModified(), is(true));
+               assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+               passTime(91);
+               assertThat(soneModificationDetector.isModified(), is(true));
+               assertThat(soneModificationDetector.isEligibleForInsert(), is(true));
+       }
+
+       @Test
+       public void modifiedSoneIsNotEligibleAfter30Seconds() {
                modifySone();
                passTime(30);
                assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
@@ -71,8 +112,21 @@ public class SoneModificationDetectorTest {
        }
 
        @Test
-       public void settingFingerprintWillResetTheEligibility() {
+       public void lockingAndUnlockingASoneRestartsTheWaitPeriod() {
+               modifySone();
+               lockSone();
+               passTime(30);
+               assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+               unlockSone();
+               assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+               passTime(60);
                assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
+               passTime(90);
+               assertThat(soneModificationDetector.isEligibleForInsert(), is(true));
+       }
+
+       @Test
+       public void settingFingerprintWillResetTheEligibility() {
                modifySone();
                assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
                passTime(100);
@@ -83,7 +137,6 @@ public class SoneModificationDetectorTest {
 
        @Test
        public void changingInsertionDelayWillInfluenceEligibility() {
-               assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
                modifySone();
                assertThat(soneModificationDetector.isEligibleForInsert(), is(false));
                passTime(100);