Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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();
        }
Пример #4
0
        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();
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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();
        }