Exemple #1
0
        public void PreventParallelAttemptsToStart()
        {
            var camera = new Camera(cameraLogger.Object, streamLogger.Object, CaptureSettings.Default, Camera.CreateVideoCapture);
            var logger = new PropertyChangedLogger();

            camera.PropertyChanged += logger.OnPropertyChanged;

            Task.WaitAll(Enumerable.Repeat(Task.Run(() => camera.Start()), Environment.ProcessorCount).ToArray());

            Assert.Equal(1, logger.Notifications[camera].Count(x => x.Value == nameof(Camera.Stream)));
        }
Exemple #2
0
        public void RemainStoppedIfAttemptCreateNewVideoCaptureFailed()
        {
            var camera = new Camera(cameraLogger.Object, streamLogger.Object, CaptureSettings.Default, _ => throw new TestException());
            var logger = new PropertyChangedLogger();

            camera.PropertyChanged += logger.OnPropertyChanged;

            Assert.Throws <TestException>(() => camera.Start());
            Assert.False(camera.IsRunning);
            Assert.Empty(logger.Notifications);
        }
Exemple #3
0
        public void ProvideNewStreamWhenStarted()
        {
            var camera = new Camera(cameraLogger.Object, streamLogger.Object, CaptureSettings.Default, Camera.CreateVideoCapture);
            var logger = new PropertyChangedLogger();

            camera.PropertyChanged += logger.OnPropertyChanged;

            camera.Start();

            Assert.NotNull(camera.Stream);
            Assert.Equal(1, logger.Notifications[camera].Count(x => x.Value == nameof(Camera.Stream)));
        }
Exemple #4
0
        public void NotifyWhenItWasStarted()
        {
            var camera = new Camera(cameraLogger.Object, streamLogger.Object, CaptureSettings.Default, Camera.CreateVideoCapture);
            var logger = new PropertyChangedLogger();

            camera.PropertyChanged += logger.OnPropertyChanged;

            camera.Start();

            Assert.True(camera.IsRunning);
            Assert.Equal(1, logger.Notifications[camera].Count(x => x.Value == nameof(Camera.IsRunning)));
        }
Exemple #5
0
        public void CompleteStreamWhenStopped()
        {
            var camera   = new Camera(cameraLogger.Object, streamLogger.Object, CaptureSettings.Default, Camera.CreateVideoCapture);
            var logger   = new PropertyChangedLogger();
            var observer = new TestImageObserver <Rgb>();

            camera.PropertyChanged += logger.OnPropertyChanged;

            camera.Start();
            using (camera.Stream.Subscribe(observer))
            {
                camera.Stop();
            }

            Assert.Null(camera.Stream);
            Assert.Equal(2, logger.Notifications[camera].Count(x => x.Value == nameof(Camera.Stream)));

            Assert.True(observer.StreamCompleted);
        }