public void ReturnSameValueAsCameraFromIsRunning(bool expected) { camera.SetupGet(c => c.IsRunning).Returns(expected); var sensor = new Sense.OccupancySensor(camera.Object, denoiser.Object, subtractor.Object, corrector.Object, detector.Object, logger.Object); Assert.Equal(expected, sensor.IsRunning); }
public void ReturnSameValueAsPeopleDetectorFromPresenceDetected(bool?expected) { detector.SetupGet(d => d.PeopleDetected).Returns(expected); var sensor = new Sense.OccupancySensor(camera.Object, denoiser.Object, subtractor.Object, corrector.Object, detector.Object, logger.Object); Assert.Equal(expected, sensor.PresenceDetected); }
public void StopCameraOnStop() { camera.Setup(c => c.Stop()).Verifiable("Stop was not requested"); var sensor = new Sense.OccupancySensor(camera.Object, denoiser.Object, subtractor.Object, corrector.Object, detector.Object, logger.Object); sensor.Stop(); camera.Verify(); }
public void CallDenoiserResetWhenCameraStopped() { camera.SetupGet(c => c.IsRunning).Returns(false); denoiser.Setup(d => d.Reset()).Verifiable("Reset was not called!"); var sensor = new Sense.OccupancySensor(camera.Object, denoiser.Object, subtractor.Object, corrector.Object, detector.Object, logger.Object); camera.Raise(c => c.PropertyChanged += null, new PropertyChangedEventArgs(nameof(ICamera.IsRunning))); denoiser.Verify(); }
public void RaiseIsRunningPropertyChangedWhenCameraRaisesCorrespondingPropertyChanged() { var propertyName = string.Empty; var sensor = new Sense.OccupancySensor(camera.Object, denoiser.Object, subtractor.Object, corrector.Object, detector.Object, logger.Object); sensor.PropertyChanged += (_, e) => propertyName = e.PropertyName; camera.Raise(c => c.PropertyChanged += null, new PropertyChangedEventArgs(nameof(ICamera.IsRunning))); Assert.Equal(nameof(Sense.OccupancySensor.IsRunning), propertyName); }
public void RaisePresenceDetectedPropertyChangedWhenDetectorRaisesCorrespondingPropertyChanged() { var propertyName = string.Empty; var sensor = new Sense.OccupancySensor(camera.Object, denoiser.Object, subtractor.Object, corrector.Object, detector.Object, logger.Object); sensor.PropertyChanged += (_, e) => propertyName = e.PropertyName; detector.Raise(d => d.PropertyChanged += null, new PropertyChangedEventArgs(nameof(IPeopleDetector.PeopleDetected))); Assert.Equal(nameof(Sense.OccupancySensor.PresenceDetected), propertyName); }
public void UnsubscribeItselfFromDetectorAfterDispose() { bool propertyChangedRaised = false; var sensor = new Sense.OccupancySensor(camera.Object, denoiser.Object, subtractor.Object, corrector.Object, detector.Object, logger.Object); sensor.PropertyChanged += (_, __) => propertyChangedRaised = true; sensor.Dispose(); detector.Raise(d => d.PropertyChanged += null, new PropertyChangedEventArgs(nameof(IPeopleDetector.PeopleDetected))); Assert.False(propertyChangedRaised); }
public async Task ConnectStreamToDenoiserWhenCameraStarts() { var capture = new Mock <VideoCapture>(MockBehavior.Loose, 0, VideoCapture.API.Any); capture.Setup(c => c.QueryFrame()).Returns(() => new Image <Rgb, byte>(100, 100).Mat); camera.SetupGet(c => c.IsRunning).Returns(true); camera.SetupGet(c => c.Stream).Returns(new CameraStream(capture.Object, CancellationToken.None, new Mock <ILogger <CameraStream> >().Object, TimeSpan.FromMilliseconds(100))); denoiser.SetupGet(d => d.Output).Returns(new CameraStream(capture.Object, CancellationToken.None, new Mock <ILogger <CameraStream> >().Object, TimeSpan.FromMilliseconds(100))); denoiser.Setup(d => d.OnNext(It.IsAny <Image <Rgb, byte> >())).Verifiable("Detect was not called!"); var sensor = new Sense.OccupancySensor(camera.Object, denoiser.Object, subtractor.Object, corrector.Object, detector.Object, logger.Object); camera.Raise(c => c.PropertyChanged += null, new PropertyChangedEventArgs(nameof(ICamera.IsRunning))); await Task.Delay(TimeSpan.FromMilliseconds(200)); denoiser.Verify(); }