diff --git a/Source/aweXpect.Core/Core/ExpectationBuilder.cs b/Source/aweXpect.Core/Core/ExpectationBuilder.cs
index 326811739..06ebfe457 100644
--- a/Source/aweXpect.Core/Core/ExpectationBuilder.cs
+++ b/Source/aweXpect.Core/Core/ExpectationBuilder.cs
@@ -21,8 +21,6 @@ public abstract class ExpectationBuilder
{
private const string DefaultCurrentSubject = "it";
- private CancellationToken? _cancellationToken;
-
private ResultContexts? _contexts;
///
@@ -31,7 +29,6 @@ public abstract class ExpectationBuilder
private string _it = DefaultCurrentSubject;
private Node _node = new ExpectationNode();
- private TimeSpan? _timeout;
private ITimeSystem? _timeSystem;
@@ -59,6 +56,20 @@ private protected ExpectationBuilder()
ExpectationGrammars = ExpectationGrammars.None;
}
+ ///
+ /// The explicit cancellation token to be used for the expectation.
+ ///
+ ///
+ /// When not set, the expectation will still use the cancellation token from
+ ///
+ ///
+ public CancellationToken? CancellationToken { get; private set; }
+
+ ///
+ /// The explicit timeout to be applied to the expectation.
+ ///
+ public TimeSpan? Timeout { get; private set; }
+
///
/// The expected grammatical form of the expectation text.
///
@@ -278,13 +289,13 @@ public MemberExpectationBuilder ForAsyncMember to be used by the constraints.
///
public void WithCancellation(CancellationToken cancellationToken)
- => _cancellationToken = cancellationToken;
+ => CancellationToken = cancellationToken;
///
/// Adds a to be used by the constraints.
///
public void WithTimeout(TimeSpan timeout)
- => _timeout = timeout;
+ => Timeout = timeout;
///
/// Adds a to the current expectation constraint.
@@ -388,7 +399,7 @@ public virtual ExpectationBuilder UpdateContexts(Action callback
}
///
- /// Adds the to the context that is included in the failure message.
+ /// Adds the to the context that is included in the failure message.
///
public virtual ExpectationBuilder AddContext(ResultContext resultContext)
{
@@ -406,7 +417,7 @@ public virtual ExpectationBuilder AddContext(ResultContext resultContext)
/// Creates the exception message from the .
///
internal Task FromFailure(ConstraintResult failure)
- => FromFailure(Subject, failure, _contexts, _cancellationToken ?? CancellationToken.None);
+ => FromFailure(Subject, failure, _contexts, CancellationToken ?? System.Threading.CancellationToken.None);
///
/// Creates the exception message from the .
@@ -463,9 +474,11 @@ internal Task IsMet()
EvaluationContext.EvaluationContext context = new();
ITimeSystem timeSystem = _timeSystem ?? RealTimeSystem.Instance;
TestCancellation? testCancellation = Customize.aweXpect.Settings().TestCancellation.Get();
- _cancellationToken ??= testCancellation?.CancellationTokenFactory?.Invoke() ?? CancellationToken.None;
- return IsMet(GetRootNode(), context, timeSystem, _timeout ?? testCancellation?.Timeout,
- _cancellationToken.Value);
+ CancellationToken cancellationToken = CancellationToken ??
+ testCancellation?.CancellationTokenFactory?.Invoke() ??
+ System.Threading.CancellationToken.None;
+ return IsMet(GetRootNode(), context, timeSystem, Timeout ?? testCancellation?.Timeout,
+ cancellationToken);
}
internal abstract Task IsMet(Node rootNode,
diff --git a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net10.0.txt b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net10.0.txt
index 9b8d76871..d3d93a5c8 100644
--- a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net10.0.txt
+++ b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net10.0.txt
@@ -146,7 +146,9 @@ namespace aweXpect.Core
public abstract class ExpectationBuilder
{
protected ExpectationBuilder(string subjectExpression, aweXpect.Core.ExpectationGrammars grammars = 0) { }
+ public System.Threading.CancellationToken? CancellationToken { get; }
public aweXpect.Core.ExpectationGrammars ExpectationGrammars { get; }
+ public System.TimeSpan? Timeout { get; }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
@@ -1179,6 +1181,7 @@ namespace aweXpect.Results
public class ExpectationResult : aweXpect.Results.Expectation, aweXpect.Core.IOptionsProvider
{
public ExpectationResult(aweXpect.Core.ExpectationBuilder expectationBuilder) { }
+ public aweXpect.Results.ExpectationResult Because(System.Threading.Tasks.Task reason) { }
public aweXpect.Results.ExpectationResult Because(string reason) { }
public System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() { }
public override string? ToString() { }
@@ -1194,6 +1197,7 @@ namespace aweXpect.Results
where TSelf : aweXpect.Results.ExpectationResult
{
public ExpectationResult(aweXpect.Core.ExpectationBuilder expectationBuilder) { }
+ public TSelf Because(System.Threading.Tasks.Task reason) { }
public TSelf Because(string reason) { }
[System.Diagnostics.StackTraceHidden]
public System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() { }
diff --git a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net8.0.txt b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net8.0.txt
index 58b2a6a04..ac080cf80 100644
--- a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net8.0.txt
+++ b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_net8.0.txt
@@ -146,7 +146,9 @@ namespace aweXpect.Core
public abstract class ExpectationBuilder
{
protected ExpectationBuilder(string subjectExpression, aweXpect.Core.ExpectationGrammars grammars = 0) { }
+ public System.Threading.CancellationToken? CancellationToken { get; }
public aweXpect.Core.ExpectationGrammars ExpectationGrammars { get; }
+ public System.TimeSpan? Timeout { get; }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
@@ -1179,6 +1181,7 @@ namespace aweXpect.Results
public class ExpectationResult : aweXpect.Results.Expectation, aweXpect.Core.IOptionsProvider
{
public ExpectationResult(aweXpect.Core.ExpectationBuilder expectationBuilder) { }
+ public aweXpect.Results.ExpectationResult Because(System.Threading.Tasks.Task reason) { }
public aweXpect.Results.ExpectationResult Because(string reason) { }
public System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() { }
public override string? ToString() { }
@@ -1194,6 +1197,7 @@ namespace aweXpect.Results
where TSelf : aweXpect.Results.ExpectationResult
{
public ExpectationResult(aweXpect.Core.ExpectationBuilder expectationBuilder) { }
+ public TSelf Because(System.Threading.Tasks.Task reason) { }
public TSelf Because(string reason) { }
[System.Diagnostics.StackTraceHidden]
public System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() { }
diff --git a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_netstandard2.0.txt b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_netstandard2.0.txt
index 79d2dd06c..b0d684596 100644
--- a/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_netstandard2.0.txt
+++ b/Tests/aweXpect.Core.Api.Tests/Expected/aweXpect.Core_netstandard2.0.txt
@@ -146,7 +146,9 @@ namespace aweXpect.Core
public abstract class ExpectationBuilder
{
protected ExpectationBuilder(string subjectExpression, aweXpect.Core.ExpectationGrammars grammars = 0) { }
+ public System.Threading.CancellationToken? CancellationToken { get; }
public aweXpect.Core.ExpectationGrammars ExpectationGrammars { get; }
+ public System.TimeSpan? Timeout { get; }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
public aweXpect.Core.ExpectationBuilder AddConstraint(System.Func> constraintBuilder) { }
@@ -1142,6 +1144,7 @@ namespace aweXpect.Results
public class ExpectationResult : aweXpect.Results.Expectation, aweXpect.Core.IOptionsProvider
{
public ExpectationResult(aweXpect.Core.ExpectationBuilder expectationBuilder) { }
+ public aweXpect.Results.ExpectationResult Because(System.Threading.Tasks.Task reason) { }
public aweXpect.Results.ExpectationResult Because(string reason) { }
public System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() { }
public override string? ToString() { }
@@ -1156,6 +1159,7 @@ namespace aweXpect.Results
where TSelf : aweXpect.Results.ExpectationResult
{
public ExpectationResult(aweXpect.Core.ExpectationBuilder expectationBuilder) { }
+ public TSelf Because(System.Threading.Tasks.Task reason) { }
public TSelf Because(string reason) { }
public System.Runtime.CompilerServices.TaskAwaiter GetAwaiter() { }
public override string? ToString() { }