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]); }