public void TestCompletesAfterSupplier()
        {
            var completes = new BasicCompletes <int>(0);

            completes.After(() => completes.Outcome * 2);

            completes.With(5);

            Assert.Equal(10, completes.Outcome);
        }
        public void TestCompletesAfterConsumer()
        {
            int andThenValue = 0;
            var completes    = new BasicCompletes <int>(0);

            completes.After(x => andThenValue = x);

            completes.With(5);

            Assert.Equal(5, andThenValue);
        }
        public void TestOutcomeBeforeTimeout()
        {
            int andThenValue = 0;
            var completes    = new BasicCompletes <int>(new Scheduler());

            completes
            .After(() => completes.Outcome * 2, 1000)
            .AndThen(x => andThenValue = x);

            completes.With(5);

            Assert.Equal(10, andThenValue);
        }
        public void TestCompletesAfterAndThen()
        {
            int andThenValue = 0;
            var completes    = new BasicCompletes <int>(0);

            completes
            .After(() => completes.Outcome * 2)
            .AndThen(x => andThenValue = x);

            completes.With(5);

            Assert.Equal(10, andThenValue);
        }
        public void TestCompletesAfterAndThenMessageOut()
        {
            int andThenValue = 0;
            var completes    = new BasicCompletes <int>(0);
            var sender       = new Sender(x => andThenValue = x);

            completes
            .After(() => completes.Outcome * 2)
            .AndThen(x => sender.Send(x));

            completes.With(5);

            Assert.Equal(10, andThenValue);
        }
        public void TestTimeoutBeforeOutcome()
        {
            int andThenValue = 0;
            var completes    = new BasicCompletes <int>(new Scheduler());

            completes
            .After(() => completes.Outcome * 2, 1, 0)
            .AndThen(x => andThenValue = x);

            Thread.Sleep(1000);
            completes.With(5);

            Assert.NotEqual(10, andThenValue);
            Assert.Equal(0, andThenValue);
        }