public void command_inheritance_test() { var command = new BaseCommand { AggregateRootId = ObjectId.GenerateNewStringId() }; var asyncResult = _commandService.ExecuteAsync(command).Result; Assert.IsNotNull(asyncResult); Assert.AreEqual(AsyncTaskStatus.Success, asyncResult.Status); var commandResult = asyncResult.Data; Assert.IsNotNull(commandResult); Assert.AreEqual(CommandStatus.NothingChanged, commandResult.Status); Assert.AreEqual("ResultFromBaseCommand", commandResult.Result); command = new ChildCommand { AggregateRootId = ObjectId.GenerateNewStringId() }; asyncResult = _commandService.ExecuteAsync(command).Result; Assert.IsNotNull(asyncResult); Assert.AreEqual(AsyncTaskStatus.Success, asyncResult.Status); commandResult = asyncResult.Data; Assert.IsNotNull(commandResult); Assert.AreEqual(CommandStatus.NothingChanged, commandResult.Status); Assert.AreEqual("ResultFromChildCommand", commandResult.Result); }
public void GetCustomWordsInCommand() { TablesInCommand = new List <TableWord>(); ColumnsInCommand = new List <ColumnWord>(); CustomCustomsInCommand = new List <CustomCustomWord>(); OperationsInCommand = new List <IOperation>(); foreach (List <CommandKeywordInfo> keywords in KeywordsInCommand) { if (keywords.Count == 1) { GetCustomWordsInCommandRecursive(keywords[0].CommandKeyword); } else { throw new Exception("Command Group Compiler Failed Exception"); } } if (ChildCommand != null) { ChildCommand.GetCustomWordsInCommand(); ColumnsInCommand.AddRange(ChildCommand.ColumnsInCommand); CustomCustomsInCommand.AddRange(ChildCommand.CustomCustomsInCommand); TablesInCommand.AddRange(ChildCommand.TablesInCommand); OperationsInCommand.AddRange(ChildCommand.OperationsInCommand); } }
public void Execute() { // do something to BaseCommand.Context ChildCommand.Execute(); // do something to BaseCommand.Context }
public async Task command_inheritance_test() { var command = new BaseCommand { AggregateRootId = ObjectId.GenerateNewStringId() }; var commandResult = await _commandService.ExecuteAsync(command); Assert.NotNull(commandResult); Assert.Equal(CommandStatus.NothingChanged, commandResult.Status); Assert.Equal("ResultFromBaseCommand", commandResult.Result); command = new ChildCommand { AggregateRootId = ObjectId.GenerateNewStringId() }; commandResult = await _commandService.ExecuteAsync(command); Assert.NotNull(commandResult); Assert.Equal(CommandStatus.NothingChanged, commandResult.Status); Assert.Equal("ResultFromChildCommand", commandResult.Result); }
public ICommandReturn RunCommand(ICommandReturn parentCommandReturn) { List <FunctionWord> functions = new List <FunctionWord>(); List <IWord> userInfo = new List <IWord>(); ICommandReturn commandReturn = null; foreach (List <CommandKeywordInfo> keyword in KeywordsInCommand) { if (keyword.Count > 0) { userInfo.AddRange(GetAllUserInfo(keyword[0].CommandKeyword)); } } for (int i = 0; i < userInfo.Count; i++) { if (userInfo[i].AllWordType == AllWordTypes.Function) { FunctionWord currentFunction = (FunctionWord)userInfo[i]; functions.Add(currentFunction); List <IWord> functionReplacement = currentFunction.BeforeCommandFunction.Invoke(currentFunction, TablesInCommand); userInfo.RemoveAt(i); userInfo = AddRangetAtIndex(userInfo, functionReplacement, i); i = i + functionReplacement.Count; } } commandReturn = BeforeChildCommandFunction.Invoke(parentCommandReturn, userInfo, this); if (ChildCommand != null) { commandReturn = ChildCommand.RunCommand(commandReturn); } commandReturn = AfterChildCommandFunction.Invoke(commandReturn, userInfo, this); foreach (FunctionWord function in functions) { commandReturn = function.AfterCommandFunction.Invoke(function, commandReturn); } return(commandReturn); }