Ejemplo n.º 1
0
        public async Task ExecuteAsync_WithCancellationWithoutTransitions_CompletesImmediatellyAndRunsCanceledActionAndThrowsOperationCanceledException()
        {
            using (var cts = new CancellationTokenSource())
            {
                var tcs = new TaskCompletionSource <object>();

                var tracker = new TestTracker();

                var state = new SimpleRuntimeState(
                    "test",
                    tracker.StateEnterAction,
                    async s =>
                {
                    await tracker.StateExecutionAction(s);
                    await tcs.Task;
                },
                    tracker.StateExitAction,
                    tracker.StateCanceledAction);

                var task = state.ExecuteAsync(cts.Token);

                cts.Cancel();
                tcs.SetResult(null);

                await Assert.ThrowsAsync <OperationCanceledException>(async() => await task);

                Assert.Equal(">test;*test;!test;", tracker.ToString());
            }
        }
Ejemplo n.º 2
0
        public async Task ExecuteAsync_WithoutTransitions_CompletesImmediatelly()
        {
            var tracker = new TestTracker();

            var state = new SimpleRuntimeState(
                "test",
                tracker.StateEnterAction,
                tracker.StateExecutionAction,
                tracker.StateExitAction,
                tracker.StateCanceledAction);

            await state.ExecuteAsync(CancellationToken.None);

            Assert.Equal(">test;*test;<test;", tracker.ToString());
        }