Skip to content

Commit 80e595a

Browse files
committed
simplify tests
1 parent 67f321b commit 80e595a

File tree

3 files changed

+38
-153
lines changed

3 files changed

+38
-153
lines changed

src/System.CommandLine.Tests/SuggestDirectiveTests.cs

Lines changed: 0 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -277,157 +277,5 @@ public async Task It_does_not_repeat_suggestion_for_already_specified_bool_optio
277277
.Should()
278278
.NotContain("--bool-option");
279279
}
280-
281-
[Fact]
282-
public async Task Deafault_Enum_suggestions_match_Enum_member_Names_Even_with_custom_parser()
283-
{
284-
var command = new RootCommand
285-
{
286-
new Option<LogLevel?>(new[] { "--verbosity", "-v" })
287-
{
288-
Argument = new Argument<LogLevel?>(parse: ParseLogLevel)
289-
}
290-
};
291-
292-
var console = new TestConsole();
293-
var parser = new CommandLineBuilder(command)
294-
.UseDefaults()
295-
.Build();
296-
297-
var result = parser.Parse($"[suggest:13] \"--verbosity\"");
298-
await result.InvokeAsync(console);
299-
300-
console.Out
301-
.ToString()
302-
.Should()
303-
.Be($"Critical{NewLine}Debug{NewLine}Error{NewLine}Information{NewLine}None{NewLine}Trace{NewLine}Warning{NewLine}");
304-
305-
static LogLevel? ParseLogLevel(ArgumentResult result)
306-
=> result.Tokens.Single().Value.ToLowerInvariant() switch
307-
{
308-
"q" or "quiet" => LogLevel.Error,
309-
"m" or "minimal" => LogLevel.Warning,
310-
"n" or "normal" => LogLevel.Information,
311-
"d" or "detailed" => LogLevel.Debug,
312-
"diag" or "diagnostic" => LogLevel.Trace,
313-
_ => null
314-
};
315-
}
316-
317-
[Fact]
318-
public async Task Deafault_Enum_suggestions_are_mixed_in_with_custom_suggestions()
319-
{
320-
var command = new RootCommand
321-
{
322-
new Option<LogLevel?>(new[] { "--verbosity", "-v" })
323-
{
324-
Argument = new Argument<LogLevel?>(parse: ParseLogLevel)
325-
{
326-
SuggestionSources = { "q", "quiet", "m", "minimal", "n", "normal", "d", "detailed", "diag", "diagnostic" }
327-
}
328-
}
329-
};
330-
331-
var console = new TestConsole();
332-
var parser = new CommandLineBuilder(command)
333-
.UseDefaults()
334-
.Build();
335-
336-
var result = parser.Parse($"[suggest:13] \"--verbosity\"");
337-
await result.InvokeAsync(console);
338-
339-
console.Out
340-
.ToString()
341-
.Should()
342-
.Be($"Critical{NewLine}d{NewLine}Debug{NewLine}detailed{NewLine}diag{NewLine}diagnostic{NewLine}Error{NewLine}Information{NewLine}m{NewLine}minimal{NewLine}n{NewLine}None{NewLine}normal{NewLine}q{NewLine}quiet{NewLine}Trace{NewLine}Warning{NewLine}");
343-
344-
static LogLevel? ParseLogLevel(ArgumentResult result)
345-
=> result.Tokens.Single().Value.ToLowerInvariant() switch
346-
{
347-
"q" or "quiet" => LogLevel.Error,
348-
"m" or "minimal" => LogLevel.Warning,
349-
"n" or "normal" => LogLevel.Information,
350-
"d" or "detailed" => LogLevel.Debug,
351-
"diag" or "diagnostic" => LogLevel.Trace,
352-
_ => null
353-
};
354-
}
355-
356-
[Fact]
357-
public async Task No_Enum_suggestions_WithAutomaticallyGenerateSuggestionsBasedOnTypee_set_to_false()
358-
{
359-
var argument = new Argument<LogLevel?>(parse: ParseLogLevel);
360-
argument.SuggestionSources.Clear();
361-
var command = new RootCommand
362-
{
363-
new Option<LogLevel?>(new[] { "--verbosity", "-v" })
364-
{
365-
Argument = argument
366-
}
367-
};
368-
369-
var console = new TestConsole();
370-
var parser = new CommandLineBuilder(command)
371-
.UseDefaults()
372-
.Build();
373-
374-
var result = parser.Parse($"[suggest:13] \"--verbosity\"");
375-
await result.InvokeAsync(console);
376-
377-
console.Out
378-
.ToString()
379-
.Should()
380-
.Be($"{NewLine}");
381-
382-
static LogLevel? ParseLogLevel(ArgumentResult result)
383-
=> result.Tokens.Single().Value.ToLowerInvariant() switch
384-
{
385-
"q" or "quiet" => LogLevel.Error,
386-
"m" or "minimal" => LogLevel.Warning,
387-
"n" or "normal" => LogLevel.Information,
388-
"d" or "detailed" => LogLevel.Debug,
389-
"diag" or "diagnostic" => LogLevel.Trace,
390-
_ => null
391-
};
392-
}
393-
394-
[Fact]
395-
public async Task Enum_suggestions_can_be_configured()
396-
{
397-
var argument = new Argument<LogLevel?>(parse: ParseLogLevel);
398-
argument.SuggestionSources.Clear();
399-
argument.SuggestionSources.Add(new[] { "q", "quiet", "m", "minimal", "n", "normal", "d", "detailed", "diag", "diagnostic" });
400-
var command = new RootCommand
401-
{
402-
new Option<LogLevel?>(new[] { "--verbosity", "-v" })
403-
{
404-
Argument = argument
405-
}
406-
};
407-
408-
var console = new TestConsole();
409-
var parser = new CommandLineBuilder(command)
410-
.UseDefaults()
411-
.Build();
412-
413-
var result = parser.Parse($"[suggest:13] \"--verbosity\"");
414-
await result.InvokeAsync(console);
415-
416-
console.Out
417-
.ToString()
418-
.Should()
419-
.Be($"d{NewLine}detailed{NewLine}diag{NewLine}diagnostic{NewLine}m{NewLine}minimal{NewLine}n{NewLine}normal{NewLine}q{NewLine}quiet{NewLine}");
420-
421-
static LogLevel? ParseLogLevel(ArgumentResult result)
422-
=> result.Tokens.Single().Value.ToLowerInvariant() switch
423-
{
424-
"q" or "quiet" => LogLevel.Error,
425-
"m" or "minimal" => LogLevel.Warning,
426-
"n" or "normal" => LogLevel.Information,
427-
"d" or "detailed" => LogLevel.Debug,
428-
"diag" or "diagnostic" => LogLevel.Trace,
429-
_ => null
430-
};
431-
}
432280
}
433281
}

src/System.CommandLine.Tests/SuggestionTests.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
using System.CommandLine.Tests.Utility;
99
using System.IO;
1010
using FluentAssertions;
11+
12+
using Microsoft.Extensions.Logging;
13+
1114
using Xunit;
1215
using Xunit.Abstractions;
1316

@@ -992,6 +995,40 @@ public void When_there_are_multiple_arguments_then_suggestions_are_only_offered_
992995
{
993996
Assert.True(false, "Test testname is not written yet.");
994997
}
998+
999+
[Fact]
1000+
public void Enum_suggestions_can_be_configured_with_list_clear()
1001+
{
1002+
var argument = new Argument<LogLevel?>();
1003+
argument.SuggestionSources.Clear();
1004+
argument.SuggestionSources.Add(new[] { "q", "quiet", "m", "minimal", "n", "normal", "d", "detailed", "diag", "diagnostic" });
1005+
var command = new Command("the-command")
1006+
{
1007+
argument
1008+
};
1009+
1010+
var suggestions = command.Parse("the-command d")
1011+
.GetSuggestions();
1012+
1013+
suggestions.Should().BeEquivalentTo("d", "detailed", "diag", "diagnostic");
1014+
}
1015+
1016+
[Fact]
1017+
public void Enum_suggestions_can_be_configured_without_list_clear()
1018+
{
1019+
var command = new Command("the-command")
1020+
{
1021+
new Argument<LogLevel?>()
1022+
{
1023+
SuggestionSources = { "q", "quiet", "m", "minimal", "n", "normal", "d", "detailed", "diag", "diagnostic" }
1024+
}
1025+
};
1026+
1027+
var suggestions = command.Parse("the-command d")
1028+
.GetSuggestions();
1029+
1030+
suggestions.Should().BeEquivalentTo("d", "Debug", "detailed", "diag", "diagnostic");
1031+
}
9951032
}
9961033
}
9971034
}

src/System.CommandLine.Tests/System.CommandLine.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
44
<TargetFrameworks Condition="'$(OS)' == 'Windows_NT'">$(TargetFrameworks);net462</TargetFrameworks>
5-
<LangVersion>preview</LangVersion>
5+
<LangVersion>latest</LangVersion>
66
<GenerateProgramFile>false</GenerateProgramFile>
77
</PropertyGroup>
88
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

0 commit comments

Comments
 (0)