Esempio n. 1
0
        static int Main(String[] args)
        {
            log4net.Config.XmlConfigurator.Configure();

            Arguments arguments = new Arguments();
            arguments.Parse(args);

            Runner runner = new Runner();

            var prevCtx = SynchronizationContext.Current;
            try
            {
                var syncCtx = new SingleThreadSynchronizationContext();
                SynchronizationContext.SetSynchronizationContext(syncCtx);

                var t = runner.RunAsync(arguments);
                t.ContinueWith(
                    delegate { syncCtx.Complete(); }, TaskScheduler.Default);

                syncCtx.RunOnCurrentThread();

                var results = t.GetAwaiter().GetResult();
                return results;
            }
            finally { SynchronizationContext.SetSynchronizationContext(prevCtx); }
        }
		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 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]);
		}