public void BasicParse() { var mock = new MockCommand(); this.cmdLine.RegisterCommand(new Program.Command("test", mock.Provider, "Brief Help")); var p = this.cmdLine.StartCmd("-test -command", Program.CommandTrigger.Cmd); Assert.IsNull(p, "Cannot parse as there are two commands"); Assert.IsFalse(mock.Called); p = this.cmdLine.StartCmd("-test \"-command\"", Program.CommandTrigger.Cmd); Assert.IsNotNull(p, "Can parse as there is only one commands"); Assert.IsTrue(mock.Called); Assert.IsTrue(Enumerable.SequenceEqual(new List <string> { "-command" }, mock.GetCall(0))); p = this.cmdLine.StartCmd("-test test \"-command\" \"test with spaces\" \"-8\"", Program.CommandTrigger.Cmd); Assert.IsNotNull(p); Assert.AreEqual(2, mock.CallCount); Assert.IsTrue(Enumerable.SequenceEqual(new List <string> { "test", "-command", "test with spaces", "-8" }, mock.GetCall(1))); }