-
Notifications
You must be signed in to change notification settings - Fork 231
Expand file tree
/
Copy pathWorkflowApplicationTestSamples.cs
More file actions
54 lines (50 loc) · 1.78 KB
/
WorkflowApplicationTestSamples.cs
File metadata and controls
54 lines (50 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using Shouldly;
using System;
using System.Activities;
using System.Activities.Statements;
using System.Threading.Tasks;
using Xunit;
namespace WorkflowApplicationTestExtensions
{
public class WorkflowApplicationTestSamples
{
[Fact]
public void RunUntilCompletion_Outputs()
{
var app = new WorkflowApplication(new DynamicActivity
{
Properties = { new DynamicActivityProperty { Name = "result", Type = typeof(OutArgument<string>) } },
Implementation = () => new Assign<string> { To = new Reference<string>("result"), Value = "value" }
});
app.RunUntilCompletion().Outputs["result"].ShouldBe("value");
}
[Fact]
public void RunUntilCompletion_Faulted()
{
var app = new WorkflowApplication(new Throw { Exception = new InArgument<Exception>(_ => new ArgumentException()) });
Should.Throw<ArgumentException>(app.RunUntilCompletion);
}
[Fact]
public void RunUntilCompletion_Aborted()
{
var app = new WorkflowApplication(new Delay { Duration = TimeSpan.MaxValue });
Task.Delay(10).ContinueWith(_ => app.Abort());
Should.Throw<WorkflowApplicationAbortedException>(app.RunUntilCompletion);
}
[Fact]
public void RunUntilCompletion_AutomaticPersistence()
{
var app = new WorkflowApplication(new SuspendingWrapper
{
Activities =
{
new WriteLine(),
new NoPersistAsyncActivity(),
new WriteLine()
}
});
var result = app.RunUntilCompletion();
result.PersistenceCount.ShouldBe(4);
}
}
}