Esempio n. 1
0
        public void TestThatCompletesRepeatsAfterTimeout()
        {
            var andThenValue = -1;

            var completes = new RepeatableCompletes <int>(0);

            completes
            .AndThen(1, val => val * 2)
            .AndThen(val => andThenValue = val)
            .Repeat();

            var thread = new Thread(() =>
            {
                Thread.Sleep(10000);
                completes.With(5);
            });

            thread.Start();

            completes.Await(TimeSpan.FromMilliseconds(10));
            Assert.True(completes.HasFailed);

            completes.With(10);
            var outcome20 = completes.Await();

            Assert.Equal(20, outcome20);
            Assert.Equal(20, andThenValue);
        }
Esempio n. 2
0
        public void TestThatCompletesRepeatsAfterFailure()
        {
            var andThenValue = -1;

            var completes = new RepeatableCompletes <int>(0);

            completes
            .AndThen(value =>
            {
                if (value < 10)
                {
                    throw new InvalidOperationException();
                }
                return(value);
            })
            .AndThen(val => val * 2)
            .AndThen(val => andThenValue = val)
            .Repeat();

            completes.With(5);
            completes.Await();
            Assert.True(completes.HasFailed);

            completes.With(10);
            var outcome20 = completes.Await();

            Assert.Equal(20, outcome20);
            Assert.Equal(20, andThenValue);
        }