}
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) {
when(core.isLocked(sone)).thenReturn(true);
}
+ private void unlockSone() {
+ when(core.isLocked(sone)).thenReturn(false);
+ }
+
+ @Test
+ public void normalConstructorCanBeCalled() {
+ new SoneModificationDetector(core, sone, insertionDelay);
+ }
+
@Test
public void sonesStartOutAsNotEligible() {
assertThat(soneModificationDetector.isModified(), is(false));
}
@Test
+ public void originalFingerprintIsRetained() {
+ assertThat(soneModificationDetector.getOriginalFingerprint(), is("original"));
+ }
+
+ @Test
public void modifiedSoneIsEligibleAfter60Seconds() {
modifySone();
assertThat(soneModificationDetector.isModified(), 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));
}
@Test
+ 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));