public void AddFrame_WhenFrameHeightIsIncorrect_Throws() { var flashScreenVideo = new FlashScreenVideo(new FlashScreenVideoParameters(32, 16, 30)); var ex = Assert.Throws <ArgumentException>(() => flashScreenVideo.AddFrame(new BitmapVideoFrame(new Bitmap(32, 20)))); Assert.Contains(ex.Message, "The frame dimensions must exactly equal those of the video."); }
public void Video_ReturnsVideo() { var grabber = new ScreenGrabber(new CaptureParameters()); var video = new FlashScreenVideo(new FlashScreenVideoParameters(grabber.ScreenshotWidth, grabber.ScreenshotHeight, 5)); using (var recorder = new ScreenRecorder(grabber, video)) { Assert.AreSame(video, recorder.Video); } }
public void Stop_WhenDisposed_Throws() { var grabber = new ScreenGrabber(new CaptureParameters()); var video = new FlashScreenVideo(new FlashScreenVideoParameters(grabber.ScreenshotWidth, grabber.ScreenshotHeight, 5)); var recorder = new ScreenRecorder(grabber, video); recorder.Dispose(); Assert.Throws <ObjectDisposedException>(() => recorder.Stop()); }
public void AddFrame_WhenFrameIsValid_IncreasesFrameCount() { var flashScreenVideo = new FlashScreenVideo(new FlashScreenVideoParameters(32, 32, 30)); flashScreenVideo.AddFrame(new BitmapVideoFrame(new Bitmap(32, 32))); Assert.AreEqual(1, flashScreenVideo.FrameCount); flashScreenVideo.AddFrame(new BitmapVideoFrame(new Bitmap(32, 32))); Assert.AreEqual(2, flashScreenVideo.FrameCount); }
public void Constructor_WhenVideoSizeDoesNotMatchGrabberScreenshotsSize_Throws() { var grabber = new ScreenGrabber(new CaptureParameters()); var video = new FlashScreenVideo(new FlashScreenVideoParameters(1, grabber.ScreenshotHeight, 5)); var ex = Assert.Throws <ArgumentException>(() => new ScreenRecorder(grabber, video)); Assert.Contains(ex.Message, "The video dimensions must be exactly the same as the screenshots obtained by the grabber."); video = new FlashScreenVideo(new FlashScreenVideoParameters(grabber.ScreenshotWidth, 1, 5)); ex = Assert.Throws <ArgumentException>(() => new ScreenRecorder(grabber, video)); Assert.Contains(ex.Message, "The video dimensions must be exactly the same as the screenshots obtained by the grabber."); }
public void Start_CapturesVideoUntilStopped() { var grabber = new ScreenGrabber(new CaptureParameters() { Zoom = 0.25 }); var video = new FlashScreenVideo(new FlashScreenVideoParameters(grabber.ScreenshotWidth, grabber.ScreenshotHeight, 5)); using (var recorder = new ScreenRecorder(grabber, video)) { recorder.Start(); Thread.Sleep(2000); recorder.Stop(); TestLog.EmbedVideo("Video", recorder.Video); } }
/// <summary> /// Starts recording a screen capture video of the entire desktop. /// </summary> /// <remarks> /// <para> /// Recording a screen capture video can be very CPU and space intensive particularly /// when running tests on a single-core CPU. We recommend calling /// <see cref="StartRecording(CaptureParameters, double)" /> with /// a <see cref="CaptureParameters.Zoom" /> factor of 0.25 or less and a frame rate /// of no more than 5 to 10 frames per second. /// </para> /// </remarks> /// <param name="parameters">The capture parameters.</param> /// <param name="framesPerSecond">The number of frames per second to capture.</param> /// <returns>The recorder.</returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="parameters"/> is null.</exception> /// <exception cref="ScreenshotNotAvailableException">Thrown if a screenshot cannot be captured at this time.</exception> public static ScreenRecorder StartRecording(CaptureParameters parameters, double framesPerSecond) { if (parameters == null) { throw new ArgumentNullException("parameters"); } ScreenGrabber.ThrowIfScreenshotNotAvailable(); ScreenGrabber grabber = new ScreenGrabber(parameters); try { FlashScreenVideo video = new FlashScreenVideo(new FlashScreenVideoParameters( grabber.ScreenshotWidth, grabber.ScreenshotHeight, framesPerSecond)); ScreenRecorder recorder = new ScreenRecorder(grabber, video); try { recorder.OverlayManager.AddOverlay(GetOverlayManager().ToOverlay()); recorder.Start(); return(recorder); } catch { recorder.Dispose(); throw; } } catch { grabber.Dispose(); throw; } }
public void Constructor_WhenScreenGrabberIsNull_Throws() { var video = new FlashScreenVideo(new FlashScreenVideoParameters(100, 100, 5)); Assert.Throws <ArgumentNullException>(() => new ScreenRecorder(null, video)); }
public void Save_WhenStreamIsNull_Throws() { var flashScreenVideo = new FlashScreenVideo(new FlashScreenVideoParameters(32, 16, 30)); Assert.Throws <ArgumentNullException>(() => flashScreenVideo.Save(null)); }
public void FrameCount_WhenInitiallyCreated_IsZero() { var flashScreenVideo = new FlashScreenVideo(new FlashScreenVideoParameters(32, 32, 30)); Assert.AreEqual(0, flashScreenVideo.FrameCount); }
public void MimeType_ReturnsFlashVideoMimeType() { var flashScreenVideo = new FlashScreenVideo(new FlashScreenVideoParameters(32, 16, 30)); Assert.AreEqual(MimeTypes.FlashVideo, flashScreenVideo.MimeType); }