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