public void NullConflictArrayThrows() { var attribute = new NamedArgumentAttribute(ArgumentFlags.AtMostOnce); Action setNull = () => attribute.ConflictsWith = null; setNull.ShouldThrow <ArgumentNullException>(); }
public void NullLongNameIsOkay() { var attribute = new NamedArgumentAttribute(ArgumentFlags.AtMostOnce) { LongName = null }; attribute.LongName.Should().BeNull(); }
public void NonEmptyLongNameIsOkay() { var attribute = new NamedArgumentAttribute(ArgumentFlags.AtMostOnce) { LongName = "Xyzzy" }; attribute.LongName.Should().Be("Xyzzy"); }
public void ParameterlessConstructorDefaults() { var namedAttribute = new NamedArgumentAttribute(); namedAttribute.Flags.Should().Be(ArgumentFlags.Optional); var positionalAttribute = new PositionalArgumentAttribute(); positionalAttribute.Flags.Should().Be(ArgumentFlags.Optional); }
public void EmptyLongNameThrowsOnRetrieval() { var attribute = new NamedArgumentAttribute(ArgumentFlags.AtMostOnce); Action setEmpty = () => attribute.LongName = string.Empty; setEmpty.ShouldNotThrow(); Action getEmpty = () => { var x = attribute.LongName; }; getEmpty.ShouldThrow <InvalidArgumentSetException>(); }
private ArgumentDefinition CreateArg <T>(bool required = false, object defaultValue = null) { var argSet = new ArgumentSetDefinition(); var attrib = new NamedArgumentAttribute(required ? ArgumentFlags.Required : ArgumentFlags.Optional); if (defaultValue != null) { attrib.DefaultValue = defaultValue; } return(new ArgumentDefinition( typeof(TestArguments <T>).GetTypeInfo().GetMember(nameof(TestArguments <T> .Value)).Single(), attrib, argSet)); }
private void AppendArgHelpText(StringBuilder sb, char argPrefix, NamedArgumentAttribute paramAttrib) { string s = string.Format( "{0}{1}, {0}{0}{2}", argPrefix, paramAttrib.ShortName, paramAttrib.LongName); if ((paramAttrib.MetaVar != null) && (paramAttrib.MetaVar != paramAttrib.ShortName.ToString())) { string format = " <{0}>"; if (paramAttrib.NumArgs < 1) { format = " [<{0}>]"; } s += string.Format(format, paramAttrib.MetaVar); } sb.Append(" "); sb.AppendFormat($"{{0,{-DescriptionDistance}}}{{1}}", s, paramAttrib.Description); sb.AppendLine(); }
void BindNamed(object commando, PropertyInfo property, List <CommandLineParameter> parameters, NamedArgumentAttribute attribute, BindingContext context) { var name = attribute.Name; var shortHand = attribute.ShortHand; var parameter = parameters.Where(p => p is NamedCommandLineParameter) .Cast <NamedCommandLineParameter>() .SingleOrDefault(p => p.Name == name || p.Name == shortHand); var value = parameter != null ? Mutate(parameter, property) : attribute.Default != null ? Mutate(attribute.Default, property) : null; if (value == null) { context.Report.PropertiesNotBound.Add(property); if (!attribute.Required) { return; } throw Ex("Could not find parameter matching required parameter named {0}", name); } property.SetValue(commando, value, null); context.Report.PropertiesBound.Add(property); }