Skip to content

Commit 436a97c

Browse files
committed
Refactor Docopt argument parsing
1 parent 3624d79 commit 436a97c

12 files changed

+26
-32
lines changed

DocoptPlusDLL/DocoptPlus.dll

0 Bytes
Binary file not shown.

QuickVsix/Components/Args/InstallVsixArgsParser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
public class InstallVsixArgsParser : ProgramModeSpecificArgsParser
55
{
6-
public override QuickVsixArgs ParseDocoptDictionary(ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary, ProgramMode programMode)
6+
public override QuickVsixArgs ParseDocoptDictionary(ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary)
77
{
88
var args = new QuickVsixArgs();
9-
args.programMode = programMode;
9+
args.programMode = ProgramMode.InstallVsix;
1010
args.vsixFilePath = p_docoptParser.GetRequiredFilePathWhichMustExist(docoptDictionary, "--vsix-file");
1111
args.waitForAnyKey = p_docoptParser.GetOptionalBool(docoptDictionary, "--wait-for-any-key");
1212
return args;

QuickVsix/Components/Args/ProgramModeSpecificArgsParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class ProgramModeSpecificArgsParser
99
protected readonly DocoptParser p_docoptParser = new DocoptParser();
1010
protected readonly FileSystem p_fileSystem = new FileSystem();
1111

12-
public virtual QuickVsixArgs ParseDocoptDictionary(ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary, ProgramMode programMode)
12+
public virtual QuickVsixArgs ParseDocoptDictionary(ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary)
1313
{
1414
throw new NotSupportedException();
1515
}

QuickVsix/Components/Args/QuickVsixArgsParser.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
using CSharpUtils;
1+
using System.Collections.ObjectModel;
2+
using CSharpUtils;
23
using DocoptPlus;
3-
using System.Collections.Generic;
4-
using System.Collections.ObjectModel;
54

65
public class QuickVsixArgsParser
76
{
@@ -20,7 +19,7 @@ public virtual QuickVsixArgs ParseStringArgs(string[] stringArgs)
2019
ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary = _docoptParser.ParseStringArgsForDocoptDictionary<QuickVsixArgs>(stringArgs);
2120
ProgramMode programMode = _docoptParser.GetProgramMode(docoptDictionary, QuickVsixArgs.programModesDictionary);
2221
ProgramModeSpecificArgsParser programModeSpecificArgsParser = _programModeSpecificArgsParserFactory.New(programMode);
23-
QuickVsixArgs args = programModeSpecificArgsParser.ParseDocoptDictionary(docoptDictionary, programMode);
22+
QuickVsixArgs args = programModeSpecificArgsParser.ParseDocoptDictionary(docoptDictionary);
2423
return args;
2524
}
2625
}

QuickVsix/Components/Args/ReinstallVsixArgsParser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
public class ReinstallVsixArgsParser : ProgramModeSpecificArgsParser
55
{
6-
public override QuickVsixArgs ParseDocoptDictionary(ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary, ProgramMode programMode)
6+
public override QuickVsixArgs ParseDocoptDictionary(ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary)
77
{
88
var args = new QuickVsixArgs();
9-
args.programMode = programMode;
9+
args.programMode = ProgramMode.ReinstallVsix;
1010
args.vsixFilePath = p_docoptParser.GetRequiredString(docoptDictionary, "--vsix-file");
1111
args.waitForAnyKey = p_docoptParser.GetOptionalBool(docoptDictionary, "--wait-for-any-key");
1212
return args;

QuickVsix/Components/Args/UninstallVsixArgsParser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
public class UninstallVsixArgsParser : ProgramModeSpecificArgsParser
55
{
6-
public override QuickVsixArgs ParseDocoptDictionary(ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary, ProgramMode programMode)
6+
public override QuickVsixArgs ParseDocoptDictionary(ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary)
77
{
88
var args = new QuickVsixArgs();
9-
args.programMode = programMode;
9+
args.programMode = ProgramMode.UninstallVsix;
1010
args.vsixFilePath = p_docoptParser.GetRequiredString(docoptDictionary, "--vsix-file");
1111
args.waitForAnyKey = p_docoptParser.GetOptionalBool(docoptDictionary, "--wait-for-any-key");
1212
return args;

QuickVsixTests/Components/Args/InstallVsixArgsParserTests.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,15 @@ public void ParseDocoptDictionary_ParsesArgs_ReturnsQuickVsixArgs()
2222

2323
bool waitForAnyKey = Mock.ReturnRandomBool(() => p_docoptParserMock.GetOptionalBool(null, null));
2424

25-
var docoptDictionary = new Dictionary<string, DocoptValueObject>().ToReadOnlyDictionary();
26-
ProgramMode programMode = TestRandom.Enum<ProgramMode>();
25+
var docoptDictionary = DocoptPlusTestRandom.DocoptDictionary();
2726
//
28-
QuickVsixArgs args = _installVsixArgsParser.ParseDocoptDictionary(docoptDictionary, programMode);
27+
QuickVsixArgs args = _installVsixArgsParser.ParseDocoptDictionary(docoptDictionary);
2928
//
3029
Called.Once(() => p_docoptParserMock.GetRequiredFilePathWhichMustExist(docoptDictionary, "--vsix-file")).Then(
3130
Called.Once(() => p_docoptParserMock.GetOptionalBool(docoptDictionary, "--wait-for-any-key")));
3231
var expectedArgs = new QuickVsixArgs
3332
{
34-
programMode = programMode,
33+
programMode = ProgramMode.InstallVsix,
3534
vsixFilePath = vsixFilePath,
3635
waitForAnyKey = waitForAnyKey
3736
};

QuickVsixTests/Components/Args/ProgramModeSpecificArgsParserTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ public static void DefaultConstructor_NewsDocoptParser()
1919
public static void ParseStringArgs_ThrowsNotSupportedException()
2020
{
2121
var programModeSpecificArgsParser = new ProgramModeSpecificArgsParser();
22-
Assert2.ThrowsNotSupportedException(() => programModeSpecificArgsParser.ParseDocoptDictionary(null, ProgramMode.Unset));
22+
Assert2.ThrowsNotSupportedException(() => programModeSpecificArgsParser.ParseDocoptDictionary(null));
2323
}
2424
}

QuickVsixTests/Components/Args/QuickVsixArgsParserTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public static void ProgramModesDictionary_IsExpectedReadOnlyDictionary()
3131
}
3232

3333
[Test]
34-
public void ParseStringArgs_ParsesStringArgsForDocoptDictionary_GetsProgramMode_NewsProgramModeSpecificArgsParser_ParsesArgs_ReturnsArg()
34+
public void ParseStringArgs_DoesSo()
3535
{
36-
ReadOnlyDictionary<string, DocoptValueObject> docoptDictionary = new Dictionary<string, DocoptValueObject>().ToReadOnlyDictionary();
36+
var docoptDictionary = DocoptPlusTestRandom.DocoptDictionary();
3737
Mock.Return(() => _docoptParserMock.ParseStringArgsForDocoptDictionary<QuickVsixArgs>(null), docoptDictionary);
3838

3939
ProgramMode programMode = Mock.ReturnRandomEnum(() => _docoptParserMock.GetProgramMode<ProgramMode>(null, null));
@@ -42,7 +42,7 @@ public void ParseStringArgs_ParsesStringArgsForDocoptDictionary_GetsProgramMode_
4242
Mock.Return(() => _programModeSpecificArgsParserFactoryMock.New(default), programModeSpecificArgsParserMock);
4343

4444
QuickVsixArgs args = QuickVsixTestRandom.Args();
45-
Mock.Return(() => programModeSpecificArgsParserMock.ParseDocoptDictionary(null, default), args);
45+
Mock.Return(() => programModeSpecificArgsParserMock.ParseDocoptDictionary(null), args);
4646

4747
string[] stringArgs = TestRandom.StringArray();
4848
//
@@ -51,7 +51,7 @@ public void ParseStringArgs_ParsesStringArgsForDocoptDictionary_GetsProgramMode_
5151
Called.Once(() => _docoptParserMock.ParseStringArgsForDocoptDictionary<QuickVsixArgs>(stringArgs)).Then(
5252
Called.Once(() => _docoptParserMock.GetProgramMode(docoptDictionary, QuickVsixArgs.programModesDictionary))).Then(
5353
Called.Once(() => _programModeSpecificArgsParserFactoryMock.New(programMode))).Then(
54-
Called.Once(() => programModeSpecificArgsParserMock.ParseDocoptDictionary(docoptDictionary, programMode)));
54+
Called.Once(() => programModeSpecificArgsParserMock.ParseDocoptDictionary(docoptDictionary)));
5555
Assert.AreEqual(args, returnedArgs);
5656
}
5757
}

QuickVsixTests/Components/Args/ReinstallVsixArgsParserTests.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,16 @@ public void SetUp()
1919
public void ParseDocoptDictionary_ParsesArgs_ReturnsQuickVsixArgs()
2020
{
2121
string vsixFilePath = Mock.ReturnRandomString(() => p_docoptParserMock.GetRequiredString(null, null));
22-
2322
bool waitForAnyKey = Mock.ReturnRandomBool(() => p_docoptParserMock.GetOptionalBool(null, null));
24-
25-
var docoptDictionary = new Dictionary<string, DocoptValueObject>().ToReadOnlyDictionary();
26-
ProgramMode programMode = TestRandom.Enum<ProgramMode>();
23+
var docoptDictionary = DocoptPlusTestRandom.DocoptDictionary();
2724
//
28-
QuickVsixArgs args = _reinstallVsixArgsParser.ParseDocoptDictionary(docoptDictionary, programMode);
25+
QuickVsixArgs args = _reinstallVsixArgsParser.ParseDocoptDictionary(docoptDictionary);
2926
//
3027
Called.Once(() => p_docoptParserMock.GetRequiredString(docoptDictionary, "--vsix-file")).Then(
3128
Called.Once(() => p_docoptParserMock.GetOptionalBool(docoptDictionary, "--wait-for-any-key")));
3229
var expectedArgs = new QuickVsixArgs
3330
{
34-
programMode = programMode,
31+
programMode = ProgramMode.ReinstallVsix,
3532
vsixFilePath = vsixFilePath,
3633
waitForAnyKey = waitForAnyKey
3734
};

0 commit comments

Comments
 (0)