public void Should_be_able_to_register_basic_and_raise_event() { var pipeline = CorePipeline.Create(c => c .Name("TestPipeline") .UseData(new PipelineData()) .Stages() .RegisterStage("Stage 1") .ForEvent(new OnParseEvent { Text = "Please parse me" }) .Observers() .RegisterObserver <ParserObserver>() .RegisterObserver <DebugObserver>()); var debugObserver = (DebugObserver)(pipeline.Configuration as IPipelineConfigAccess).Observers[1]; debugObserver.OnDebugEvent += e => { Assert.AreEqual(e.GetType(), typeof(OnParseEvent)); Assert.AreEqual(((OnParseEvent)e).Text, "Please parse me"); }; pipeline.Run(); Assert.AreEqual(pipeline.Name, "TestPipeline"); }
public void Should_be_able_to_connect_pipelines() { var pipelineA = CorePipeline.Create(c => c .Name("Pipeline A") .AutoRaiseEvents(false) .Stages() .RegisterStage("Stage 1") .ForEvent <OnParseEvent>()); var observer = new ReverseParserObserver(); var pipelineB = CorePipeline.Create(c => c .Name("Pipeline B") .Observers() .RegisterObserver(observer)); pipelineA.Connect(pipelineB) .ForStages("Stage 1") .ForEvent <OnParseEvent>(); pipelineA.RunAsync(); pipelineA.RaiseEvent <OnParseEvent>("Stage 1"); while (pipelineA.State == PipelineState.Running) { Thread.Sleep(1000); Assert.True(observer.IsSyncParseCompleted, "The second sync event was not observed after async event."); pipelineA.Abort(); } }
public void Should_be_able_to_register_basic_and_raise_async_event() { // expected fist event to fire async, and immediate the next one // a 1sec wait is put in async to see if 2nd event is raised, async will be on its own thread var observer = new ParserObserver(); var pipeline = CorePipeline.Create(c => c .Name("TestPipeline") .UseData(new PipelineData()) .Stages() .RegisterStage("Stage 1") .ForEvent(new OnParseAsyncEvent { Text = "Please parse me async" }) .ForEvent(new OnParseEvent { Text = "Please parse me" }) .Observers() .RegisterObserver(observer) .RegisterObserver <DebugObserver>()); pipeline.RunAsync(); while (pipeline.State == PipelineState.Running) { Thread.Sleep(1000); if (observer.IsAsyncParseReceived && !observer.IsAsyncParseCompleted) { Assert.True(observer.IsSyncParseCompleted, "The second sync event was not observed after async event."); pipeline.Abort(); } } }
public void Should_be_able_to_connect_pipelines_for_one_stage() { var pipelineA = CorePipeline.Create(c => c .Name("Pipeline A") .AutoRaiseEvents(true) .Stages() .RegisterStage("Stage 1") .ForEvent <OnParseEvent>() .RegisterStage("Stage 2") .ForEvent <OnSomeEvent>()); var observer = new ReverseParserObserver(); var pipelineB = CorePipeline.Create(c => c .Name("Pipeline B") .Observers() .RegisterObserver(observer)); pipelineA.Connect(pipelineB) .ForStages("Stage 2") .ForEvent <OnSomeEvent>(); pipelineA.Run(); }