public void ConstructorTest() { String[] args = new String[] { "file arg 1", "--test", "--testValue=value1", "--test-value=\"value 2\"", "/?", "--help", "-d", "-5=cheese", "../Test/" }; Arguments arguments = new Arguments(args); Assert.IsTrue(arguments.HasArgument("test"), "argument test was not detected"); Assert.IsTrue(arguments.HasArgument("testvalue"), "argument testvalue was not detected"); Assert.IsTrue(arguments.HasArgument("test-value"), "argument test-value was not detected"); Assert.IsTrue(arguments.HasArgument("?"), "argument ? was not detected"); Assert.IsTrue(arguments.HasArgument("help"), "argument help was not detected"); Assert.IsTrue(arguments.HasArgument("d"), "argument d was not detected"); Assert.IsTrue(arguments.HasArgument("5"), "argument 5 was not detected"); Assert.IsFalse(arguments.HasArgument("testdir"), "argument testdir was detected and should not have been."); Assert.IsNull(arguments.ArgumentValue("test"), "argument test should not have a value"); Assert.AreEqual("value1", arguments.ArgumentValue("testvalue"), "testvalue was not the correct value"); Assert.AreEqual("value 2", arguments.ArgumentValue("test-value"), "test-value was not the correct value"); Assert.IsNull(arguments.ArgumentValue("?"), "argument ? should not have a value"); Assert.IsNull(arguments.ArgumentValue("help"), "argument help should not have a value"); Assert.IsNull(arguments.ArgumentValue("d"), "argument d should not have a value"); Assert.AreEqual("cheese", arguments.ArgumentValue("5"), "argument 5 value is not what we expected"); var list = arguments.NonArgumentValues; Assert.IsNotNull(list, "list is null and should not be"); Assert.AreEqual(2, list.Count, "list count does not match"); Assert.AreEqual("file arg 1", list[0]); Assert.AreEqual("../Test/", list[1]); }
public async Task ParseAsyncTest() { Arguments arguments = new Arguments(); AssertHelpers.ThrowsException<ArgumentNullException>(() => { arguments.Parse(null); }); String[] args = new String[] { "file arg 1", "--test", "--testValue=value1", "--test-value=\"value 2\"", "/?", "--help", "-d", "-5=cheese", "../Test/" }; await arguments.ParseAsync(args); Assert.IsTrue(arguments.HasArgument("test"), "argument test was not detected"); Assert.IsTrue(arguments.HasArgument("testvalue"), "argument testvalue was not detected"); Assert.IsTrue(arguments.HasArgument("test-value"), "argument test-value was not detected"); Assert.IsTrue(arguments.HasArgument("?"), "argument ? was not detected"); Assert.IsTrue(arguments.HasArgument("help"), "argument help was not detected"); Assert.IsTrue(arguments.HasArgument("d"), "argument d was not detected"); Assert.IsTrue(arguments.HasArgument("5"), "argument 5 was not detected"); Assert.IsFalse(arguments.HasArgument("testdir"), "argument testdir was detected and should not have been."); Assert.IsNull(arguments.ArgumentValue("test"), "argument test should not have a value"); Assert.AreEqual("value1", arguments.ArgumentValue("testvalue"), "testvalue was not the correct value"); Assert.AreEqual("value 2", arguments.ArgumentValue("test-value"), "test-value was not the correct value"); Assert.IsNull(arguments.ArgumentValue("?"), "argument ? should not have a value"); Assert.IsNull(arguments.ArgumentValue("help"), "argument help should not have a value"); Assert.IsNull(arguments.ArgumentValue("d"), "argument d should not have a value"); Assert.AreEqual("cheese", arguments.ArgumentValue("5"), "argument 5 value is not what we expected"); var list = arguments.NonArgumentValues; Assert.IsNotNull(list, "list is null and should not be"); Assert.AreEqual(2, list.Count, "list count does not match"); Assert.AreEqual("file arg 1", list[0]); Assert.AreEqual("../Test/", list[1]); }
public void ParseTest() { Arguments arguments = new Arguments(); AssertHelpers.ThrowsException<ArgumentNullException>(() => { arguments.Parse(null); }); String[] args = new String[] { "file arg 1", "--test", "--testValue=value1", "--test-value=\"value 2\"", "/?", "--help", "-d", "-5=cheese", "../Test/" }; arguments.Parse(args); Assert.IsTrue(arguments.HasArgument("test"), "argument test was not detected"); Assert.IsTrue(arguments.HasArgument("testvalue"), "argument testvalue was not detected"); Assert.IsTrue(arguments.HasArgument("test-value"), "argument test-value was not detected"); Assert.IsTrue(arguments.HasArgument("?"), "argument ? was not detected"); Assert.IsTrue(arguments.HasArgument("help"), "argument help was not detected"); Assert.IsTrue(arguments.HasArgument("d"), "argument d was not detected"); Assert.IsTrue(arguments.HasArgument("5"), "argument 5 was not detected"); Assert.IsFalse(arguments.HasArgument("testdir"), "argument testdir was detected and should not have been."); Assert.IsNull(arguments.ArgumentValue("test"), "argument test should not have a value"); Assert.AreEqual("value1", arguments.ArgumentValue("testvalue"), "testvalue was not the correct value"); Assert.AreEqual("value 2", arguments.ArgumentValue("test-value"), "test-value was not the correct value"); Assert.IsNull(arguments.ArgumentValue("?"), "argument ? should not have a value"); Assert.IsNull(arguments.ArgumentValue("help"), "argument help should not have a value"); Assert.IsNull(arguments.ArgumentValue("d"), "argument d should not have a value"); Assert.AreEqual("cheese", arguments.ArgumentValue("5"), "argument 5 value is not what we expected"); var list = arguments.NonArgumentValues; Assert.IsNotNull(list, "list is null and should not be"); Assert.AreEqual(2, list.Count, "list count does not match"); Assert.AreEqual("file arg 1", list[0]); Assert.AreEqual("../Test/", list[1]); var argNameValues = arguments.ArgumentValues; Assert.IsNotNull(argNameValues, "argNameValues is null and should not be."); Assert.AreEqual(7, argNameValues.Count, "argNameValues.Keys.Count"); var enumerator = argNameValues.Keys.GetEnumerator(); Assert.IsTrue(enumerator.MoveNext(), "unable to move next"); Assert.AreEqual("test", enumerator.Current); Assert.IsTrue(enumerator.MoveNext(), "unable to move next"); Assert.AreEqual("testvalue", enumerator.Current); Assert.AreEqual("value1", argNameValues[enumerator.Current]); Assert.IsTrue(enumerator.MoveNext(), "unable to move next"); Assert.AreEqual("test-value", enumerator.Current); Assert.AreEqual("value 2", argNameValues[enumerator.Current]); Assert.IsTrue(enumerator.MoveNext(), "unable to move next"); Assert.AreEqual("?", enumerator.Current); Assert.IsTrue(enumerator.MoveNext(), "unable to move next"); Assert.AreEqual("help", enumerator.Current); Assert.IsTrue(enumerator.MoveNext(), "unable to move next"); Assert.AreEqual("d", enumerator.Current); Assert.IsTrue(enumerator.MoveNext(), "unable to move next"); Assert.AreEqual("5", enumerator.Current); Assert.AreEqual("cheese", argNameValues[enumerator.Current]); Assert.IsFalse(enumerator.MoveNext(), "was able to move next and should not have been able to"); }
public async Task<int> RunAsync(Arguments args) { Runner.Args = args; if (args.HasArgument("vvv")) { changeLogLevel("DEBUG"); #if DEBUG log.Fatal("Fatal Color"); log.Error("Error Color"); log.Warn("Warn Color"); log.Info("Info Color"); log.Debug("Debug Color"); #endif } else if (args.HasArgument("vv")) { changeLogLevel("INFO"); } else if (args.HasArgument("v")) { changeLogLevel("WARN"); } if (log.IsInfoEnabled) { log.InfoFormat("Version {0}", Assembly.GetCallingAssembly().GetAssemblyVersion()); } if (log.IsDebugEnabled) { foreach (var key in args.ArgumentValues.Keys) { if (args.ArgumentValues[key] == null) { log.DebugFormat("Argument --{0} as passed", key); } else { log.DebugFormat("Argument --{0}={1} as passed", key, args.ArgumentValues[key]); } } foreach (var item in args.NonArgumentValues) { log.DebugFormat("Argument {0} passed", item); } } if (args.HasArgument("version")) { printVersion(); return 0; } if (args.HasArgument("help")) { printHelp(); return 0; } if (args.NonArgumentValues.Count < 1) { printHelp(); return 1; } int[] tracks = new int[0]; if (args.HasArgument("tracks") && !String.IsNullOrWhiteSpace(args.ArgumentValues["tracks"])) { tracks = ParseTracks(args.ArgumentValues["tracks"]); if (tracks == null) { return 1; } } return (await beginAsync(args.NonArgumentValues[0], tracks)) ? 1 : 0; }