Beispiel #1
0
        public async Task TestCleanUp()
        {
            var f = new MyDataflow <int>();
            await f.SignalAndWaitForCompletionAsync();

            Assert.AreEqual(1, f.cleanUpSignal);
        }
    public void TestPipeline()
    {
        var data   = Enumerable.Range(0, 30).Select(x => new Message(x, x)).ToList();
        var target = new MyDataflow();

        target.PostData(data).Wait();
        Assert.IsTrue(data.SequenceEqual(target.OutputMessages));
    }
Beispiel #3
0
        public async Task TestCleanUpOnFault()
        {
            var f = new MyDataflow <int>()
            {
                Name = "dataflow1"
            };

            f.m_block2.RegisterChild(new BufferBlock <int>());

            Task.Run(
                async() =>
            {
                await Task.Delay(200);
                (f.m_block2.InputBlock).Fault(new InvalidOperationException());
            });

            var f2 = new Dataflow(DataflowOptions.Default)
            {
                Name = "dataflow2"
            };

            f2.RegisterChild(f.m_block1);
            f2.RegisterChild(f.m_block2);

            var f3 = new Dataflow(DataflowOptions.Default)
            {
                Name = "dataflow3"
            };

            f3.RegisterChild(f);
            f3.RegisterChild(f2);

            await this.AssertFlowError <InvalidOperationException>(f);

            Assert.AreEqual(-1, f.cleanUpSignal);

            await this.AssertFlowError <InvalidOperationException>(f2);

            await this.AssertFlowError <InvalidOperationException>(f3);
        }