public void CaptureStream_Instances_Are_Played_Back_In_Chronological_Order() { var resetEvent = new SlimResetEvent(20); var expectedStates = long.MaxValue; var executedStates = 0; var stateController = new WeatherStateController(new WeatherSimulator()); var stateResolver = new StateResolver(); stateResolver.Add(stateController); stateController.StateExecuted += delegate { executedStates++; if (executedStates == expectedStates) { resetEvent.Set(); } }; var playbackService = new PlaybackService(stateResolver); var ms = VastPark.FrameworkBase.IO.EmbeddedResource.GetMemoryStream("Continuum.Test.Samples.weather-simulation.continuum", Assembly.GetExecutingAssembly()); var stream1 = new ConcurrentStream(new MemoryStream(ms.ToArray())); var captureStream1 = new CaptureStream(stream1, System.IO.FileAccess.Read, stateResolver); var stream2 = new ConcurrentStream(new MemoryStream(ms.ToArray())); var captureStream2 = new CaptureStream(stream2, System.IO.FileAccess.Read, stateResolver); expectedStates = captureStream1.Count + captureStream2.Count; playbackService.Add(captureStream1); playbackService.Add(captureStream2); playbackService.Start(); resetEvent.Wait(); }
public void When_A_Filter_Is_Applied_That_Returns_True_The_State_Is_Not_Scheduled_For_Playback() { var stateController = new WeatherStateController(new WeatherSimulator()); var stateResolver = new StateResolver(); stateResolver.Add(stateController); var scheduler = new Mock<IScheduler>(); var taskFactory = new Mock<ITaskFactory>(); var playbackService = new PlaybackService(stateResolver, scheduler.Object, taskFactory.Object); var ms = VastPark.FrameworkBase.IO.EmbeddedResource.GetMemoryStream("Continuum.Test.Samples.weather-simulation.continuum", Assembly.GetExecutingAssembly()); var stream = new ConcurrentStream(new MemoryStream(ms.ToArray())); var captureStream = new CaptureStream(stream, System.IO.FileAccess.Read, stateResolver); playbackService.Add(captureStream); //add in a filter that will always return true to filter out the states playbackService.Add(new StreamFilter(f => true)); playbackService.Start(); //task factory should not have built any tasks taskFactory.Verify(t => t.Create(It.IsAny<ICaptureState>()), Times.Never()); scheduler.Verify(s => s.Add(It.IsAny<ITask>()), Times.Never()); }