@@ -9,24 +9,47 @@ public class PredicateBuilderTests
9
9
{
10
10
public static TheoryData < Action < PredicateBuilder < string > > , Outcome < string > , bool > HandleResultData = new ( )
11
11
{
12
- { builder => builder . HandleResult ( "val" ) , Outcome . FromResult ( "val" ) , true } ,
13
- { builder => builder . HandleResult ( "val" ) , Outcome . FromResult ( "val2" ) , false } ,
14
- { builder => builder . HandleResult ( "val" ) , Outcome . FromException < string > ( new InvalidOperationException ( ) ) , false } ,
15
- { builder => builder . HandleResult ( "val" , StringComparer . OrdinalIgnoreCase ) , Outcome . FromResult ( "VAL" ) , true } ,
16
- { builder => builder . HandleResult ( r => r == "val" ) , Outcome . FromResult ( "val" ) , true } ,
17
- { builder => builder . HandleResult ( r => r == "val2" ) , Outcome . FromResult ( "val" ) , false } ,
18
- { builder => builder . Handle < InvalidOperationException > ( ) , Outcome . FromException < string > ( new InvalidOperationException ( ) ) , true } ,
19
- { builder => builder . Handle < InvalidOperationException > ( ) , Outcome . FromException < string > ( new FormatException ( ) ) , false } ,
20
- { builder => builder . Handle < InvalidOperationException > ( e => false ) , Outcome . FromException < string > ( new InvalidOperationException ( ) ) , false } ,
21
- { builder => builder . HandleInner < InvalidOperationException > ( e => false ) , Outcome . FromException < string > ( new InvalidOperationException ( ) ) , false } ,
22
- { builder => builder . HandleInner < InvalidOperationException > ( ) , Outcome . FromResult ( "value" ) , false } ,
23
- { builder => builder . Handle < InvalidOperationException > ( ) , Outcome . FromResult ( "value" ) , false } ,
24
- { builder => builder . Handle < InvalidOperationException > ( ) . HandleResult ( "value" ) , Outcome . FromResult ( "value" ) , true } ,
25
- { builder => builder . Handle < InvalidOperationException > ( ) . HandleResult ( "value" ) , Outcome . FromResult ( "value2" ) , false } ,
26
- { builder => builder . HandleInner < FormatException > ( ) , Outcome . FromException < string > ( new InvalidOperationException ( "dummy" , new FormatException ( ) ) ) , true } ,
27
- { builder => builder . HandleInner < ArgumentNullException > ( e => false ) , Outcome . FromException < string > ( new InvalidOperationException ( "dummy" , new FormatException ( ) ) ) , false } ,
28
- { builder => builder . HandleInner < FormatException > ( e => e . Message == "m" ) , Outcome . FromException < string > ( new InvalidOperationException ( "dummy" , new FormatException ( "m" ) ) ) , true } ,
29
- { builder => builder . HandleInner < FormatException > ( e => e . Message == "x" ) , Outcome . FromException < string > ( new InvalidOperationException ( "dummy" , new FormatException ( "m" ) ) ) , false } ,
12
+ { builder => builder . HandleResult ( "val" ) , CreateOutcome ( "val" ) , true } ,
13
+ { builder => builder . HandleResult ( "val" ) , CreateOutcome ( "val2" ) , false } ,
14
+ { builder => builder . HandleResult ( "val" ) , CreateOutcome ( new InvalidOperationException ( ) ) , false } ,
15
+ { builder => builder . HandleResult ( "val" , StringComparer . OrdinalIgnoreCase ) , CreateOutcome ( "VAL" ) , true } ,
16
+ { builder => builder . HandleResult ( r => r == "val" ) , CreateOutcome ( "val" ) , true } ,
17
+ { builder => builder . HandleResult ( r => r == "val2" ) , CreateOutcome ( "val" ) , false } ,
18
+ { builder => builder . Handle < InvalidOperationException > ( ) , CreateOutcome ( new InvalidOperationException ( ) ) , true } ,
19
+ { builder => builder . Handle < InvalidOperationException > ( ) , CreateOutcome ( new FormatException ( ) ) , false } ,
20
+ { builder => builder . Handle < InvalidOperationException > ( e => false ) , CreateOutcome ( new InvalidOperationException ( ) ) , false } ,
21
+ { builder => builder . HandleInner < InvalidOperationException > ( e => false ) , CreateOutcome ( new InvalidOperationException ( ) ) , false } ,
22
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( "value" ) , false } ,
23
+ { builder => builder . Handle < InvalidOperationException > ( ) , CreateOutcome ( "value" ) , false } ,
24
+ { builder => builder . Handle < InvalidOperationException > ( ) . HandleResult ( "value" ) , CreateOutcome ( "value" ) , true } ,
25
+ { builder => builder . Handle < InvalidOperationException > ( ) . HandleResult ( "value" ) , CreateOutcome ( "value2" ) , false } ,
26
+ { builder => builder . HandleInner < FormatException > ( ) , CreateOutcome ( new InvalidOperationException ( "dummy" , new FormatException ( ) ) ) , true } ,
27
+ { builder => builder . HandleInner < ArgumentNullException > ( e => false ) , CreateOutcome ( new InvalidOperationException ( "dummy" , new FormatException ( ) ) ) , false } ,
28
+ { builder => builder . HandleInner < FormatException > ( e => e . Message == "m" ) , CreateOutcome ( new InvalidOperationException ( "dummy" , new FormatException ( "m" ) ) ) , true } ,
29
+ { builder => builder . HandleInner < FormatException > ( e => e . Message == "x" ) , CreateOutcome ( new InvalidOperationException ( "dummy" , new FormatException ( "m" ) ) ) , false } ,
30
+ #pragma warning disable CA2201
31
+ //// See https://github.com/App-vNext/Polly/issues/2161
32
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( new InvalidOperationException ( "1" ) ) , true } ,
33
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( new Exception ( "1" , new InvalidOperationException ( "2" ) ) ) , true } ,
34
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( new FormatException ( "1" , new InvalidOperationException ( "2" ) ) ) , true } ,
35
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( new Exception ( "1" , new Exception ( "2" , new InvalidOperationException ( "3" ) ) ) ) , true } ,
36
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( new AggregateException ( "1" , new Exception ( "2a" ) , new InvalidOperationException ( "2b" ) ) ) , true } ,
37
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( new AggregateException ( "1" , new Exception ( "2" , new InvalidOperationException ( "3" ) ) ) ) , true } ,
38
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( new AggregateException ( "1" , new FormatException ( "2" , new NotSupportedException ( "3" ) ) ) ) , false } ,
39
+ { builder => builder . HandleInner < InvalidOperationException > ( ) , CreateOutcome ( new AggregateException ( "1" ) ) , false } ,
40
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "3" ) , CreateOutcome ( new AggregateException ( "1" , new FormatException ( "2" , new NotSupportedException ( "3" ) ) ) ) , false } ,
41
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "unreachable" ) , CreateOutcome ( new AggregateException ( "1" , new FormatException ( "2" , new NotSupportedException ( "3" ) ) ) ) , false } ,
42
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "1" ) , CreateOutcome ( new InvalidOperationException ( "1" ) ) , true } ,
43
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "2" ) , CreateOutcome ( new Exception ( "1" , new InvalidOperationException ( "2" ) ) ) , true } ,
44
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "3" ) , CreateOutcome ( new Exception ( "1" , new Exception ( "2" , new InvalidOperationException ( "3" ) ) ) ) , true } ,
45
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "2b" ) , CreateOutcome ( new AggregateException ( "1" , new Exception ( "2a" ) , new InvalidOperationException ( "2b" ) ) ) , true } ,
46
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "3" ) , CreateOutcome ( new AggregateException ( "1" , new Exception ( "2" , new InvalidOperationException ( "3" ) ) ) ) , true } ,
47
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "unreachable" ) , CreateOutcome ( new InvalidOperationException ( "1" ) ) , false } ,
48
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "unreachable" ) , CreateOutcome ( new Exception ( "1" , new InvalidOperationException ( "2" ) ) ) , false } ,
49
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "unreachable" ) , CreateOutcome ( new Exception ( "1" , new Exception ( "2" , new InvalidOperationException ( "3" ) ) ) ) , false } ,
50
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "unreachable" ) , CreateOutcome ( new AggregateException ( "1" , new Exception ( "2a" ) , new InvalidOperationException ( "2b" ) ) ) , false } ,
51
+ { builder => builder . HandleInner < InvalidOperationException > ( ex => ex . Message is "unreachable" ) , CreateOutcome ( new AggregateException ( "1" , new Exception ( "2" , new InvalidOperationException ( "3" ) ) ) ) , false } ,
52
+ #pragma warning restore CA2201
30
53
} ;
31
54
32
55
[ Fact ]
@@ -66,7 +89,7 @@ public async Task Operator_RetryStrategyOptions_Ok()
66
89
ShouldHandle = new PredicateBuilder < string > ( ) . HandleResult ( "error" )
67
90
} ;
68
91
69
- var handled = await options . ShouldHandle ( new RetryPredicateArguments < string > ( ResilienceContextPool . Shared . Get ( ) , Outcome . FromResult ( "error" ) , 0 ) ) ;
92
+ var handled = await options . ShouldHandle ( new RetryPredicateArguments < string > ( ResilienceContextPool . Shared . Get ( ) , CreateOutcome ( "error" ) , 0 ) ) ;
70
93
71
94
handled . Should ( ) . BeTrue ( ) ;
72
95
}
@@ -79,7 +102,7 @@ public async Task Operator_FallbackStrategyOptions_Ok()
79
102
ShouldHandle = new PredicateBuilder < string > ( ) . HandleResult ( "error" )
80
103
} ;
81
104
82
- var handled = await options . ShouldHandle ( new ( ResilienceContextPool . Shared . Get ( ) , Outcome . FromResult ( "error" ) ) ) ;
105
+ var handled = await options . ShouldHandle ( new ( ResilienceContextPool . Shared . Get ( ) , CreateOutcome ( "error" ) ) ) ;
83
106
84
107
handled . Should ( ) . BeTrue ( ) ;
85
108
}
@@ -92,7 +115,7 @@ public async Task Operator_HedgingStrategyOptions_Ok()
92
115
ShouldHandle = new PredicateBuilder < string > ( ) . HandleResult ( "error" )
93
116
} ;
94
117
95
- var handled = await options . ShouldHandle ( new ( ResilienceContextPool . Shared . Get ( ) , Outcome . FromResult ( "error" ) ) ) ;
118
+ var handled = await options . ShouldHandle ( new ( ResilienceContextPool . Shared . Get ( ) , CreateOutcome ( "error" ) ) ) ;
96
119
97
120
handled . Should ( ) . BeTrue ( ) ;
98
121
}
@@ -105,8 +128,14 @@ public async Task Operator_AdvancedCircuitBreakerStrategyOptions_Ok()
105
128
ShouldHandle = new PredicateBuilder < string > ( ) . HandleResult ( "error" )
106
129
} ;
107
130
108
- var handled = await options . ShouldHandle ( new ( ResilienceContextPool . Shared . Get ( ) , Outcome . FromResult ( "error" ) ) ) ;
131
+ var handled = await options . ShouldHandle ( new ( ResilienceContextPool . Shared . Get ( ) , CreateOutcome ( "error" ) ) ) ;
109
132
110
133
handled . Should ( ) . BeTrue ( ) ;
111
134
}
135
+
136
+ private static Outcome < string > CreateOutcome ( Exception exception )
137
+ => Outcome . FromException < string > ( exception ) ;
138
+
139
+ private static Outcome < string > CreateOutcome ( string result )
140
+ => Outcome . FromResult ( result ) ;
112
141
}
0 commit comments