private static bool ParseSample(DrCmdParser cmd) { try { var res = cmd.Parse(); Console.WriteLine(); Console.Write(res.Name); if (res.HasAttributes) { Console.Write(": "); } foreach (var a in res.Attributes) { Console.Write(a.Key + "='" + a.Value + "', "); } Console.WriteLine(); return(true); } catch (Exception e) { Console.WriteLine(GetExceptionAsString(e)); return(false); } }
public void TestSplitOptionsAndTheirValuesByArgumentsCommnadNameOnlyValidCaseSensetive() { var args = "COMMAND"; var root = GetInitialParametrs(true, false, args); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); ValidateOptionParser(result, GetResultCOMMANDWithoutValue()); }
public void TestSingleValue_SpecifiedMoreThanOne() { var args = new[] { "COMMAND", "-alias", "val1", "val2", "val3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Type, DrCmdOptionType.Required.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, DrCmdValueType.Single.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Aliases, "alias", ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); try { var result = cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'Sigle value has more than one values'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }
public void TestSplitOptionsAndTheirValuesByArgumentsCommnadNameOnlyIncorrectCaseSensetive() { var args = "CoMMAND"; var root = GetInitialParametrs(true, false, args); var cmdParser = new DrCmdParser(root); try { var result = cmdParser.Parse(); Assert.Fail("Case sensetive parameter doesnt' work correctly."); } catch (AssertFailedException e) { throw; } catch (ArgumentException argExc) { // it's true } }
public void TestRestrictionList_ValueIsSpecifiedCaseSensitive() { var args = new[] { "COMMAND", "-t1", "Val1", "vAl2", "val3", "-test2", "-test3", "value for test 3" }; var root = GetInitialParametrs(true, false, args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, DrCmdValueType.Required.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, new[] { DrCmdValueType.Required.ToString(), DrCmdValueType.ListOfRestriction.ToString(), DrCmdValueType.AllowNumeric.ToString() }, ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.RestrictionList, Enum.GetNames(typeof(TestValue)), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.RestrictionListAsNumeric, TestValue.val1.GetFlags(), ResolveConflict.OVERWRITE); try { var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); Assert.Fail("The incorrect argument type is not catched - 'RestrictionList, specified value is incorrected because case sensitive is enabled'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException) {/* it's ok*/} }
public void TestRestrictionList_ValueNumericIsSpecified() { var args = new[] { "COMMAND", "-t1", "123232", "777", "-test2", "-test3", "value for test 3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, DrCmdValueType.Required.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, new[] { DrCmdValueType.Required.ToString(), DrCmdValueType.ListOfRestriction.ToString(), DrCmdValueType.AllowNumeric.ToString() }, ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.RestrictionList, Enum.GetNames(typeof(TestValue)), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.RestrictionListAsNumeric, TestValue.val1.GetFlags(), ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", new[] { "123232", "777" }); expected.Attributes.Add("test2", string.Empty); expected.Attributes.Add("test3", new[] { "value for test 3" }); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestCheckDisableCommand_CommandIsDisabled() { var args = new[] { "COMMAND", "-t1", "-test2", "val1", "val2", "val3", "-t1" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND").Attributes.Replace(DrCmdCommandSettings.Enabled, false); try { var cmdParser = new DrCmdParser(root); cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'command is вшыфидув'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }
public void TestRequiredOption_SpecifiedByAlias() { var args = new[] { "COMMAND", "-alias", "val1", "val2", "val3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Type, DrCmdOptionType.Required.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Aliases, "alias", ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", new[] { "val1", "val2", "val3" }); expected.Attributes.Add("test2", string.Empty); expected.Attributes.Add("test3", string.Empty); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestVerifyComandSettingsDublicateOptionNameCaseSensitive() { var args = new[] { "COMMAND", "-t1", "val1", "val2", "val3" }; var additionalName = "Test2"; var root = GetInitialParametrs(true, false, args); root.GetNode("COMMAND").Add(additionalName, DrCmdConst.TypeOption).Attributes.Add(DrCmdOptionSettings.Name, additionalName); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", new[] { "val1", "val2", "val3" }); expected.Attributes.Add(additionalName, string.Empty); expected.Attributes.Add("test2", string.Empty); expected.Attributes.Add("test3", string.Empty); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestVerifyValueRestrictionsType_ForbiddenValueType() { var args = new[] { "COMMAND", "-t1", "-test2", "val1", "val2", "val3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Type, DrCmdOptionType.Required.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, new[] { DrCmdValueType.Forbidden.ToString() }, ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("test2", new[] { "val1", "val2", "val3" }); expected.Attributes.Add("t1", string.Empty); expected.Attributes.Add("test3", string.Empty); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestVerifyComandSettingsDublicateOptionAliasCaseSensitive() { var args = new[] { "COMMAND", "-t1", "val1", "val2", "val3" }; var root = GetInitialParametrs(true, false, args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Aliases, new[] { "Test2", "Dublicate" }, ResolveConflict.OVERWRITE); root.GetNode("COMMAND/test2").Attributes.Add(DrCmdOptionSettings.Aliases, new[] { "T1", "DUBLICATE" }, ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", new[] { "val1", "val2", "val3" }); expected.Attributes.Add("test2", string.Empty); expected.Attributes.Add("test3", string.Empty); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestValidateOptionsIncongruous_IncongruousValueIsSpecifiedByAlias() { var args = new[] { "COMMAND", "-t1", "-t2", "val1", "val2", "val3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.TermsOfIncongruous, new[] { "test2", "t1" }, ResolveConflict.OVERWRITE); root.GetNode("COMMAND/test2").Attributes.Add(DrCmdOptionSettings.Aliases, new[] { "T2" }, ResolveConflict.OVERWRITE); try { var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'Incongruous option is specified by alias'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }
public void TestValidateOptionsIncongruous_IncongruousValueIfIsNotSpecified() { var args = new[] { "COMMAND", "-test2", "val1", "val2", "val3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.TermsOfIncongruous, new[] { "test2", "t1" }, ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", string.Empty); expected.Attributes.Add("test2", new[] { "val1", "val2", "val3" }); expected.Attributes.Add("test3", string.Empty); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestValidateOptionsDependency_DependentValueIsSpecifiedByAlias() { var args = new[] { "COMMAND", "-t1", "-t2", "val1", "val2", "val3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.TermsOfDependency, new[] { "test2", "t1" }, ResolveConflict.OVERWRITE); root.GetNode("COMMAND/test2").Attributes.Add(DrCmdOptionSettings.Aliases, new[] { "T2" }, ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", string.Empty); expected.Attributes.Add("test2", new[] { "val1", "val2", "val3" }); expected.Attributes.Add("test3", string.Empty); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestCheckSettingsUnknowArguments_AllowUnknowArguments() { var args = new[] { "COMMAND", "-UnknowArgument", "-test2", "val1", "val2", "val3"}; var root = GetInitialParametrs(false, true, args); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", string.Empty); expected.Attributes.Add("test2", new[] { "val1", "val2", "val3" }); expected.Attributes.Add("test3", string.Empty); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestOptionIsSpecifiedMoreThanOnce_SpecifyOptionTwiseByAlias() { var args = new[] { "COMMAND", "-t1", "-test2", "val1", "val2", "val3", "-Test1Alias" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Aliases, new[] { "Test1Alias" }, ResolveConflict.OVERWRITE); try { var cmdParser = new DrCmdParser(root); cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'option is specified twise'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }
public void TestCheckSettingsUnknowArguments_UnknowArgument() { var args = new[] { "COMMAND", "-test2", "val1", "val2", "val3", "-UnknowArgument" }; var root = GetInitialParametrs(args); try { var cmdParser = new DrCmdParser(root); cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'unknow agument is specified'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }
public void TestRequiredValue_IsNotSpecified() { var args = new[] { "COMMAND", "-alias" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Type, DrCmdOptionType.Required.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, DrCmdValueType.Required.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Aliases, "alias", ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); try { var result = cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'Required value without value'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }
public void TestDisabledOption_SpecifyDisabledOption() { var args = new[] { "COMMAND", "-t1","-test2", "val1", "val2", "val3"}; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.Enabled, false, ResolveConflict.OVERWRITE); try { var cmdParser = new DrCmdParser(root); cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'disabled option is specified'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }
public void TestRestrictionList_ValueNumericIsNotAllow() { var args = new[] { "COMMAND", "-t1", "1", "-test2", "-test3", "value for test 3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, DrCmdValueType.Required.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, new[] { DrCmdValueType.Required.ToString(), DrCmdValueType.ListOfRestriction.ToString() }, ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.RestrictionList, Enum.GetNames(typeof(TestValue)), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.RestrictionListAsNumeric, TestValue.val1.GetFlags(), ResolveConflict.OVERWRITE); try { var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); Assert.Fail("The incorrect argument type is not catched - 'RestrictionList, specified value is number but number is not allowed in the ValueType for this option'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException) {/* it's ok*/} }
public void TestGetSelectedCommandNameFromArgumentsCommnadNameEmptyException() { var root = GetInitialParametrs("\"\""); var cmdParser = new DrCmdParser(root); root.Attributes.Add(DrCmdSettings.RemoveStartEndQuotas, true, ResolveConflict.OVERWRITE); try { var result = cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched 'Command name is double quotas.'"); } catch (AssertFailedException e) { throw; } catch (ArgumentException nullExc) { // it's ok } }
public void TestSingleValue_IsNotSpecified() { var args = new[] { "COMMAND", "-t1", "-test2", "val1", "val2", "val3", "-test3", "value for test 3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.ValueType, DrCmdValueType.Single.ToString(), ResolveConflict.OVERWRITE); root.GetNode("COMMAND/test3").Attributes.Add(DrCmdOptionSettings.ValueType, DrCmdValueType.Single.ToString(), ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", string.Empty); expected.Attributes.Add("test2", new[] { "val1", "val2", "val3" }); expected.Attributes.Add("test3", new[] { "value for test 3" }); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestGetSelectedCommandNameFromArgumentsCommnadNameIsNotSpecifiedException() { var root = GetInitialParametrs(string.Empty); var cmdParser = new DrCmdParser(root); try { var result = cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched 'Command name is not specified.'"); } catch (AssertFailedException e) { throw; } catch (ArgumentException nullExc) { // it's ok } }
public void TestSplitOptionsAndTheirValuesByArgumentsCheckThrowValueWithoutOption() { var args = "CoMMAND test".Split(new[] { ' ' }); var root = GetInitialParametrs(args); var cmdParser = new DrCmdParser(root); try { var result = cmdParser.Parse(); Assert.Fail("Contains the value of the option without declaring itself options."); } catch (AssertFailedException e) { throw; } catch (ArgumentException argExc) { // it's true } }
public void TestGetSettingsArgumentsSupportSpaceInValue() { var args = new[] { "\"CoMMAND\"", "-t1", "-test2", "-test3", "\"val1 val2 val3\"", "-test4" }; var root = GetInitialParametrs(args); root.Attributes.Add(DrCmdSettings.RemoveStartEndQuotas, true, ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("COMMAND"); expected.Attributes.Add("t1", string.Empty); expected.Attributes.Add("test2", string.Empty); expected.Attributes.Add("test3", new[] { "val1 val2 val3" }); expected.Attributes.Add("test4", string.Empty); ValidateOptionParser(result, expected); }
public void TestSplitOptionsAndTheirValuesByArgumentsCommnadNameOnlyIncorrectIgnoreCase() { var args = "c0mmand"; var root = GetInitialParametrs(args); var cmdParser = new DrCmdParser(root); try { var result = cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched 'Command name is incorrect.'"); } catch (AssertFailedException e) { throw; } catch (ArgumentException argExc) { // it's true } }
public void TestGetValueTypeCaseInsensitive() { var args = "RuN -LogFile val1".Split(new[] { ' ' }); var root = GetInitialParametrs(args); root.GetNode("RUN/LogFile").Attributes.Add(DrCmdOptionSettings.ValueType, new[] { DrCmdValueType.Required.ToString().ToUpper(), DrCmdValueType.Required.ToString().ToLower() }, ResolveConflict.OVERWRITE); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); var expected = new DDNode("RUN"); expected.Attributes.Add("LogFile", new[] { "val1" }); expected.Attributes.Add("m", String.Empty); ValidateOptionParser(result, expected); }
public void TestSplitOptionsAndTheirValuesByArgumentsCommnadNameOnlyValidIgnoreCase() { var args = "command"; var root = GetInitialParametrs(args); var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); ValidateOptionParser(result, GetResultCOMMANDWithoutValue()); }
public void TestOptionIsSpecifiedMoreThanOnce_SpecifyOptionTwise() { var args = new[] { "COMMAND", "-t1", "-test2", "val1", "val2", "val3" , "-t1"}; var root = GetInitialParametrs(args); try { var cmdParser = new DrCmdParser(root); cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'option is specified twise'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }
private static bool ParseSample(DrCmdParser cmd) { try { var res =cmd.Parse(); Console.WriteLine(); Console.Write(res.Name ); if (res.HasAttributes) Console.Write(": "); foreach (var a in res.Attributes) { Console.Write(a.Key + "='" + a.Value + "', "); } Console.WriteLine(); return true; } catch (Exception e) { Console.WriteLine( GetExceptionAsString(e)); return false; } }
public void TestValidateOptionsDependency_DependentValueIsNotSpecified() { var args = new[] { "COMMAND", "-t1", "-test2", "val1", "val2", "val3" }; var root = GetInitialParametrs(args); root.GetNode("COMMAND/t1").Attributes.Add(DrCmdOptionSettings.TermsOfDependency, new[] { "test2", "test3" }, ResolveConflict.OVERWRITE); try { var cmdParser = new DrCmdParser(root); var result = cmdParser.Parse(); Assert.Fail("The incorrect arguments is not catched - 'Dependent option is not specified'."); } catch (AssertFailedException e) { throw; } catch (ArgumentException e) {/* it's ok*/} }