public void ParsingCommandWithoutArgumentsSeparatorShouldReturnEmptyArguments()
 {
     var actual = this.parser.Parse("AddEvent 2012-03-26T09:00:00 C# exam");
     var expected = new CommandInfo("AddEvent", new string[] { "2012-03-26T09:00:00 C# exam" });
     Assert.AreEqual(expected.Name, actual.Name);
     Assert.IsTrue(expected.Arguments.SequenceEqual(actual.Arguments));
 }
 public void ParsingValidCommandShouldReturnCommandInfo()
 {
     var actual = this.parser.Parse("AddEvent 2012-03-26T09:00:00 | C# exam");
     var expected = new CommandInfo("AddEvent", new string[] { "2012-03-26T09:00:00", "C# exam" });
     Assert.AreEqual(expected.Name, actual.Name);
     Assert.IsTrue(expected.Arguments.SequenceEqual(actual.Arguments));
 }
        public ICommandInfo Parse(string userLine)
        {
            int firstSpaceIndex = userLine.IndexOf(' ');
            if (firstSpaceIndex == -1)
            {
                throw new ArgumentException("Invalid command: " + userLine);
            }

            string name = userLine.Substring(0, firstSpaceIndex);
            string argumentsAsString = userLine.Substring(firstSpaceIndex + 1);

            var arguments = argumentsAsString.Split('|');
            for (int i = 0; i < arguments.Length; i++)
            {
                arguments[i] = arguments[i].Trim();
            }

            var commandInfo = new CommandInfo(name, arguments);

            return commandInfo;
        }