public void TestFastExitEntryRefusal() { var timeProvider = new ExternalTimeProvider(); var detector = new EntryDetector(Background, timeProvider); var enterRaised = false; var exitRaised = false; detector.Enter += (sender, args) => enterRaised = true; detector.Exit += (sender, args) => exitRaised = true; detector.Abort += (sender, args) => Assert.Fail("Abort not expected"); timeProvider.CurrentTime = Year2000; detector.Tick(EntryImages); Assert.AreEqual(DetectorState.Entry, detector.CurrentState); Assert.IsTrue(enterRaised); Assert.IsFalse(exitRaised); timeProvider.CurrentTime = timeProvider.CurrentTime.AddSeconds(EntryDetector.MinTimeAfterEntry + 1); for (var i = 0; i <= EntryDetector.ExitThreshold; i++) { detector.Tick(EmptyImages); } Assert.AreEqual(DetectorState.Exit, detector.CurrentState); Assert.IsTrue(exitRaised); enterRaised = false; timeProvider.CurrentTime = timeProvider.CurrentTime.AddSeconds(EntryDetector.MinTimeAfterExit - 1); detector.Tick(EntryImages); Assert.AreEqual(DetectorState.Exit, detector.CurrentState); Assert.IsFalse(enterRaised); }
public void TestFull() { var timeProvider = new ExternalTimeProvider { CurrentTime = Year2000 }; var detector = new EntryDetector(Background, timeProvider); for (var k = 0; k < 2; k++) { var enterRaised = false; var exitRaised = false; detector.Enter += (sender, args) => enterRaised = true; detector.Exit += (sender, args) => exitRaised = true; detector.Abort += (sender, args) => Assert.Fail("Abort not expected"); // entry timeProvider.CurrentTime = timeProvider.CurrentTime.AddSeconds(5); detector.Tick(EntryImages); Assert.AreEqual(DetectorState.Entry, detector.CurrentState); Assert.IsTrue(enterRaised); // exit timeProvider.CurrentTime = timeProvider.CurrentTime.AddSeconds(5); for (var i = 0; i <= EntryDetector.ExitThreshold; i++) { detector.Tick(EmptyImages); } Assert.AreEqual(DetectorState.Exit, detector.CurrentState); Assert.IsTrue(exitRaised); } }
public void TestStopTooLong() { var timeProvider = new ExternalTimeProvider(); var detector = new EntryDetector(Background, timeProvider); var enterRaised = false; var exitRaised = false; detector.Enter += (sender, args) => enterRaised = true; detector.Exit += (sender, args) => exitRaised = true; detector.Abort += (sender, args) => Assert.Fail("Abort not expected"); timeProvider.CurrentTime = Year2000; detector.Tick(EntryImages); Assert.AreEqual(DetectorState.Entry, detector.CurrentState); Assert.IsTrue(enterRaised); Assert.IsFalse(exitRaised); timeProvider.CurrentTime = timeProvider.CurrentTime.AddSeconds(EntryDetector.MaxRecordingDuration + 1); detector.Tick(SlowlyMovingTrain); Assert.AreEqual(DetectorState.Exit, detector.CurrentState); Assert.IsTrue(exitRaised); }