4
4
using Xunit ;
5
5
using FluentAssertions ;
6
6
using CommandLine . Tests . Fakes ;
7
+ using System . Threading . Tasks ;
7
8
8
9
namespace CommandLine . Tests . Unit
9
10
{
@@ -19,6 +20,16 @@ public static void Invoke_parsed_lambda_when_parsed()
19
20
"value" . Should ( ) . BeEquivalentTo ( expected ) ;
20
21
}
21
22
23
+ [ Fact ]
24
+ public static async Task Invoke_parsed_lambda_when_parsedAsync ( )
25
+ {
26
+ var expected = string . Empty ;
27
+ await Parser . Default . ParseArguments < Simple_Options > ( new [ ] { "--stringvalue" , "value" } )
28
+ . WithParsedAsync ( opts => Task . Run ( ( ) => expected = opts . StringValue ) ) ;
29
+
30
+ "value" . Should ( ) . BeEquivalentTo ( expected ) ;
31
+ }
32
+
22
33
[ Fact ]
23
34
public static void Invoke_parsed_lambda_when_parsed_for_verbs ( )
24
35
{
@@ -32,6 +43,20 @@ public static void Invoke_parsed_lambda_when_parsed_for_verbs()
32
43
"https://value.org/user/file.git" . Should ( ) . BeEquivalentTo ( expected ) ;
33
44
}
34
45
46
+ [ Fact ]
47
+ public static async Task Invoke_parsed_lambda_when_parsed_for_verbsAsync ( )
48
+ {
49
+ var expected = string . Empty ;
50
+ var parsedArguments = Parser . Default . ParseArguments < Add_Verb , Commit_Verb , Clone_Verb > (
51
+ new [ ] { "clone" , "https://value.org/user/file.git" } ) ;
52
+
53
+ await parsedArguments . WithParsedAsync < Add_Verb > ( opts => Task . Run ( ( ) => expected = "wrong1" ) ) ;
54
+ await parsedArguments . WithParsedAsync < Commit_Verb > ( opts => Task . Run ( ( ) => expected = "wrong2" ) ) ;
55
+ await parsedArguments . WithParsedAsync < Clone_Verb > ( opts => Task . Run ( ( ) => expected = opts . Urls . First ( ) ) ) ;
56
+
57
+ "https://value.org/user/file.git" . Should ( ) . BeEquivalentTo ( expected ) ;
58
+ }
59
+
35
60
[ Fact ]
36
61
public static void Invoke_not_parsed_lambda_when_not_parsed ( )
37
62
{
@@ -42,6 +67,16 @@ public static void Invoke_not_parsed_lambda_when_not_parsed()
42
67
"changed" . Should ( ) . BeEquivalentTo ( expected ) ;
43
68
}
44
69
70
+ [ Fact ]
71
+ public static async Task Invoke_not_parsed_lambda_when_not_parsedAsync ( )
72
+ {
73
+ var expected = "a default" ;
74
+ await Parser . Default . ParseArguments < Simple_Options > ( new [ ] { "-i" , "aaa" } )
75
+ . WithNotParsedAsync ( _ => Task . Run ( ( ) => expected = "changed" ) ) ;
76
+
77
+ "changed" . Should ( ) . BeEquivalentTo ( expected ) ;
78
+ }
79
+
45
80
[ Fact ]
46
81
public static void Invoke_not_parsed_lambda_when_parsed_for_verbs ( )
47
82
{
@@ -55,6 +90,20 @@ public static void Invoke_not_parsed_lambda_when_parsed_for_verbs()
55
90
"changed" . Should ( ) . BeEquivalentTo ( expected ) ;
56
91
}
57
92
93
+ [ Fact ]
94
+ public static async Task Invoke_not_parsed_lambda_when_parsed_for_verbsAsync ( )
95
+ {
96
+ var expected = "a default" ;
97
+ var parsedArguments = Parser . Default . ParseArguments < Add_Verb , Commit_Verb , Clone_Verb > ( new [ ] { "undefined" , "-xyz" } ) ;
98
+
99
+ await parsedArguments . WithParsedAsync < Add_Verb > ( opts => Task . Run ( ( ) => expected = "wrong1" ) ) ;
100
+ await parsedArguments . WithParsedAsync < Commit_Verb > ( opts => Task . Run ( ( ) => expected = "wrong2" ) ) ;
101
+ await parsedArguments . WithParsedAsync < Clone_Verb > ( opts => Task . Run ( ( ) => expected = "wrong3" ) ) ;
102
+ await parsedArguments . WithNotParsedAsync ( _ => Task . Run ( ( ) => expected = "changed" ) ) ;
103
+
104
+ "changed" . Should ( ) . BeEquivalentTo ( expected ) ;
105
+ }
106
+
58
107
[ Fact ]
59
108
public static void Invoke_proper_lambda_when_parsed ( )
60
109
{
@@ -66,6 +115,18 @@ public static void Invoke_proper_lambda_when_parsed()
66
115
"value" . Should ( ) . BeEquivalentTo ( expected ) ;
67
116
}
68
117
118
+ [ Fact ]
119
+ public static async Task Invoke_proper_lambda_when_parsedAsync ( )
120
+ {
121
+ var expected = string . Empty ;
122
+ var parsedArguments = Parser . Default . ParseArguments < Simple_Options > ( new [ ] { "--stringvalue" , "value" } ) ;
123
+
124
+ await parsedArguments . WithParsedAsync ( opts => Task . Run ( ( ) => expected = opts . StringValue ) ) ;
125
+ await parsedArguments . WithNotParsedAsync ( _ => Task . Run ( ( ) => expected = "changed" ) ) ;
126
+
127
+ "value" . Should ( ) . BeEquivalentTo ( expected ) ;
128
+ }
129
+
69
130
[ Fact ]
70
131
public static void Invoke_proper_lambda_when_not_parsed ( )
71
132
{
@@ -77,6 +138,18 @@ public static void Invoke_proper_lambda_when_not_parsed()
77
138
"changed" . Should ( ) . BeEquivalentTo ( expected ) ;
78
139
}
79
140
141
+ [ Fact ]
142
+ public static async Task Invoke_proper_lambda_when_not_parsedAsync ( )
143
+ {
144
+ var expected = "a default" ;
145
+ var parsedArguments = Parser . Default . ParseArguments < Simple_Options > ( new [ ] { "-i" , "aaa" } ) ;
146
+
147
+ await parsedArguments . WithParsedAsync ( opts => Task . Run ( ( ) => expected = opts . StringValue ) ) ;
148
+ await parsedArguments . WithNotParsedAsync ( _ => Task . Run ( ( ) => expected = "changed" ) ) ;
149
+
150
+ "changed" . Should ( ) . BeEquivalentTo ( expected ) ;
151
+ }
152
+
80
153
[ Fact ]
81
154
public static void Turn_sucessful_parsing_into_exit_code ( )
82
155
{
@@ -137,6 +210,21 @@ public static void Invoke_parsed_lambda_when_parsed_for_base_verbs()
137
210
"dummy.bin" . Should ( ) . BeEquivalentTo ( expected ) ;
138
211
}
139
212
213
+ [ Fact ]
214
+ public static async Task Invoke_parsed_lambda_when_parsed_for_base_verbsAsync ( )
215
+ {
216
+ var expected = string . Empty ;
217
+ var parsedArguments = Parser . Default . ParseArguments < Add_Verb , Commit_Verb , Clone_Verb , Derived_Verb > (
218
+ new [ ] { "derivedadd" , "dummy.bin" } ) ;
219
+
220
+ await parsedArguments . WithParsedAsync < Add_Verb > ( opts => Task . Run ( ( ) => expected = "wrong1" ) ) ;
221
+ await parsedArguments . WithParsedAsync < Commit_Verb > ( opts => Task . Run ( ( ) => expected = "wrong2" ) ) ;
222
+ await parsedArguments . WithParsedAsync < Clone_Verb > ( opts => Task . Run ( ( ) => expected = "wrong3" ) ) ;
223
+ await parsedArguments . WithParsedAsync < Base_Class_For_Verb > ( opts => Task . Run ( ( ) => expected = opts . FileName ) ) ;
224
+
225
+ "dummy.bin" . Should ( ) . BeEquivalentTo ( expected ) ;
226
+ }
227
+
140
228
[ Fact ]
141
229
public static void Turn_sucessful_parsing_into_exit_code_for_single_base_verbs ( )
142
230
{
0 commit comments