예제 #1
0
		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]);
		}
예제 #2
0
		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]);
		}
예제 #3
0
		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");

		}
예제 #4
0
		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;
		}