public void Should_return_null_if_segment_doesnt_match() { var command = "test".Split(' '); var commandRoute = new CommandRoute("test"); var matchResult = new MatchResult(); var mockSegment = new Mock <ISegment>(); mockSegment.Setup(x => x.Match("baaad")).Returns(() => matchResult); commandRoute.AddSegment(mockSegment.Object); var result = commandRoute.Match(command); Assert.Null(result); }
public void Should_match_segment() { var command = "test".Split(' '); var commandRoute = new CommandRoute("test"); var matchResult = new MatchResult(); var mockSegment = new Mock<ISegment>(); mockSegment.Setup(x => x.Match("test")).Returns(() => matchResult); commandRoute.AddSegment(mockSegment.Object); var result = commandRoute.Match(command); Assert.NotNull(result); Assert.Equal(1, result.MatchResults.Count); Assert.Equal(0, result.OptionalMatchResults.Count); Assert.True(result.MatchResults.Contains(matchResult)); }
public void Should_match_segment() { var command = "test".Split(' '); var commandRoute = new CommandRoute("test"); var matchResult = new MatchResult(); var mockSegment = new Mock <ISegment>(); mockSegment.Setup(x => x.Match("test")).Returns(() => matchResult); commandRoute.AddSegment(mockSegment.Object); var result = commandRoute.Match(command); Assert.NotNull(result); Assert.Equal(1, result.MatchResults.Count); Assert.Equal(0, result.OptionalMatchResults.Count); Assert.True(result.MatchResults.Contains(matchResult)); }
public void Should_return_null_if_optional_segment_doesnt_match() { var command = "test -f".Split(' '); var commandRoute = new CommandRoute("test [-f|flag]"); var matchResult = new MatchResult(); var namedMatchResult = new NamedValueMatchResult("flag", true); var mockSegment = new Mock <ISegment>(); var mockOptionalSegment = new Mock <ISegment>(); mockSegment.Setup(x => x.Match("test")).Returns(() => matchResult); mockOptionalSegment.Setup(x => x.Match("-o")).Returns(() => namedMatchResult); commandRoute.AddSegment(mockSegment.Object); commandRoute.AddOptionalSegment(mockOptionalSegment.Object); var result = commandRoute.Match(command); Assert.Null(result); }
public void Should_match_segment_and_flag() { var command = "test -f".Split(' '); var commandRoute = new CommandRoute("test [-f|flag]"); var matchResult = new MatchResult(); var namedMatchResult = new NamedValueMatchResult("flag", true); var mockSegment = new Mock<ISegment>(); var mockOptionalSegment = new Mock<ISegment>(); mockSegment.Setup(x => x.Match("test")).Returns(() => matchResult); mockOptionalSegment.Setup(x => x.Match("-f")).Returns(() => namedMatchResult); commandRoute.AddSegment(mockSegment.Object); commandRoute.AddOptionalSegment(mockOptionalSegment.Object); var result = commandRoute.Match(command); Assert.NotNull(result); Assert.Equal(1, result.MatchResults.Count); Assert.Equal(1, result.OptionalMatchResults.Count); Assert.True(result.MatchResults.Contains(matchResult)); Assert.True(result.OptionalMatchResults.Contains(namedMatchResult)); }
public void Should_match_multiple_segments() { var command = "test value".Split(' '); var commandRoute = new CommandRoute("test {value}"); var matchResult = new MatchResult(); var namedMatchResult = new NamedValueMatchResult("value", "value"); var mockSegment = new Mock<ISegment>(); var mockVariableSegment = new Mock<ISegment>(); mockSegment.Setup(x => x.Match("test")).Returns(() => matchResult); mockVariableSegment.Setup(x => x.Match("value")).Returns(() => namedMatchResult); commandRoute.AddSegment(mockSegment.Object); commandRoute.AddSegment(mockVariableSegment.Object); var result = commandRoute.Match(command); Assert.NotNull(result); Assert.Equal(2, result.MatchResults.Count); Assert.Equal(0, result.OptionalMatchResults.Count); Assert.True(result.MatchResults.Contains(matchResult)); Assert.True(result.MatchResults.Contains(namedMatchResult)); }
public void Should_match_multiple_segments() { var command = "test value".Split(' '); var commandRoute = new CommandRoute("test {value}"); var matchResult = new MatchResult(); var namedMatchResult = new NamedValueMatchResult("value", "value"); var mockSegment = new Mock <ISegment>(); var mockVariableSegment = new Mock <ISegment>(); mockSegment.Setup(x => x.Match("test")).Returns(() => matchResult); mockVariableSegment.Setup(x => x.Match("value")).Returns(() => namedMatchResult); commandRoute.AddSegment(mockSegment.Object); commandRoute.AddSegment(mockVariableSegment.Object); var result = commandRoute.Match(command); Assert.NotNull(result); Assert.Equal(2, result.MatchResults.Count); Assert.Equal(0, result.OptionalMatchResults.Count); Assert.True(result.MatchResults.Contains(matchResult)); Assert.True(result.MatchResults.Contains(namedMatchResult)); }
public void Should_match_segment_and_flag_with_value() { var command = "test -f test".Split(' '); var commandRoute = new CommandRoute("test [-f|flag]"); var matchResult = new MatchResult(); var namedMatchResult = new NamedValueMatchResult("flag", "test"); var mockSegment = new Mock <ISegment>(); var mockOptionalSegment = new Mock <ISegment>(); mockSegment.Setup(x => x.Match("test")).Returns(() => matchResult); mockOptionalSegment.Setup(x => x.Match("-f test")).Returns(() => namedMatchResult); commandRoute.AddSegment(mockSegment.Object); commandRoute.AddOptionalSegment(mockOptionalSegment.Object); var result = commandRoute.Match(command); Assert.NotNull(result); Assert.Equal(1, result.MatchResults.Count); Assert.Equal(1, result.OptionalMatchResults.Count); Assert.True(result.MatchResults.Contains(matchResult)); Assert.True(result.OptionalMatchResults.Contains(namedMatchResult)); }
public static void RegisterCommandRoute(IChromelyContainer container, string key, CommandRoute command) { container.RegisterInstance(typeof(CommandRoute), key, command); }
public void Should_throw_exception_when_using_blank_template() { Assert.Throws<ArgumentException>(() => { var route = new CommandRoute(""); }); }
public void Should_return_null_if_segment_doesnt_match() { var command = "test".Split(' '); var commandRoute = new CommandRoute("test"); var matchResult = new MatchResult(); var mockSegment = new Mock<ISegment>(); mockSegment.Setup(x => x.Match("baaad")).Returns(() => matchResult); commandRoute.AddSegment(mockSegment.Object); var result = commandRoute.Match(command); Assert.Null(result); }
public void Should_return_null_if_optional_segment_doesnt_match() { var command = "test -f".Split(' '); var commandRoute = new CommandRoute("test [-f|flag]"); var matchResult = new MatchResult(); var namedMatchResult = new NamedValueMatchResult("flag", true); var mockSegment = new Mock<ISegment>(); var mockOptionalSegment = new Mock<ISegment>(); mockSegment.Setup(x => x.Match("test")).Returns(() => matchResult); mockOptionalSegment.Setup(x => x.Match("-o")).Returns(() => namedMatchResult); commandRoute.AddSegment(mockSegment.Object); commandRoute.AddOptionalSegment(mockOptionalSegment.Object); var result = commandRoute.Match(command); Assert.Null(result); }
public void Run <TOption>(string[] args) { bool validate = false; var types = (from assembly in AppDomain.CurrentDomain.GetAssemblies() from type in assembly.GetTypes() where type.IsSubclassOf(typeof(Command)) select type).ToList(); foreach (Type type in types) { var commonOptionAttribute = type.GetCustomAttribute(typeof(CommandRoutePrefix)); if (commonOptionAttribute == null) { continue; } CommandRoutePrefix p = (CommandRoutePrefix)commonOptionAttribute; // check for the command if (args[0].Equals(p.Prefix, StringComparison.InvariantCultureIgnoreCase)) { var methods = type.GetMethods(); foreach (MethodInfo methodInfo in methods) { Attribute a = methodInfo.GetCustomAttribute(typeof(CommandRoute)); if (a != null) { CommandRoute r = (CommandRoute)a; // check the action if (args[1].Equals(r.Action, StringComparison.InvariantCultureIgnoreCase)) { string commandArgs = args.ToCommandStringLine(); string commandOpts = p.CommonOptions + r.Options; MatchCollection routeCollection = commandOpts.ToCommandOptionCollection(); if (routeCollection.Count.Equals(0)) { validate = true; } for (var i = 0; i < routeCollection.Count; i++) { if (commandArgs.Contains(routeCollection[i].Value)) { validate = true; } else { string missingOption = routeCollection[i].Value; throw new OptionNotFound(missingOption); } } if (validate) { var command = CommandContainer.Instance.Container.Resolve(type); try { methodInfo.Invoke(command, new object[] { args.ToOption <TOption>() }); } catch (Exception e) { throw e.InnerException; } return; } } } } throw new CommandNotFound(string.Format("{0} {1}", args[0], args[1])); } } }
public void Should_throw_exception_when_using_blank_template() { Assert.Throws <ArgumentException>(() => { var route = new CommandRoute(""); }); }