public void SearchCommands_Ok_AB() { // init IContainer injector = null; var r1 = RandomInt(); var r2 = RandomInt(); var command = $"\"sum\" {r1} {r2}"; var cmdArgs = command.SplitCommandLine().ToArray(); // cache var autoComplete = new AutoCommandComplete(); var cache = new Dictionary <string[], PromptCommandAttribute>(); cache.Cache(new DummyPrompt(), autoComplete); var cmds = cache.SearchCommands(cmdArgs).ToArray(); Assert.AreEqual(2, cmds.Length); Assert.AreEqual("sum", cmds[0].Command); var cmd = cmds.SearchRightCommand(cmdArgs, injector, out var args); Assert.AreEqual("sum", cmd.Command); Assert.AreEqual(2, cmd.Parameters.Length); // execute var res = cmd.Method.Invoke(new DummyPrompt(), args); Assert.AreEqual(r1 + r2, res); }
public void Cache_Extensions() { var cache = new Dictionary <string[], PromptCommandAttribute>(); var autoComplete = new AutoCommandComplete(); cache.Cache(new DummyPrompt(), autoComplete); Assert.AreEqual(3, cache.Count); Assert.AreEqual("mul,sum,sum", string.Join(",", cache.Keys.Select(u => string.Join(",", u)))); var atr = cache.Values.FirstOrDefault(); Assert.AreEqual("mul", atr.Command); Assert.AreEqual(1, atr.TokensCount); CollectionAssert.AreEqual(new string[] { "mul" }, atr.Commands); Assert.AreEqual("Maths", atr.Category); Assert.AreEqual("a*b", atr.Help); Assert.AreEqual(0, atr.Order); Assert.AreEqual(nameof(DummyPrompt.Mul), atr.Method.Name); CollectionAssert.AreEqual(new string[] { "mul", "sum" }, autoComplete.Keys.ToArray()); }
public void SearchCommands_Fail() { // quoted var command = "\"suma\" 1 2"; var cmdArgs = new List <CommandToken>(command.SplitCommandLine()); // cache var autoComplete = new AutoCommandComplete(); var cache = new Dictionary <string[], PromptCommandAttribute>(); cache.Cache(typeof(DummyPrompt), autoComplete); var cmds = cache.SearchCommands(cmdArgs).ToArray(); Assert.AreEqual(0, cmds.Length); }