public void Process_GivenNullRuleEngineContext_ThrowsArgumentException() { var mockRuleCollection = new MockRuleCollection(); var ruleProcessor = new RuleProcessor(); ruleProcessor.Process(null, mockRuleCollection.MyMockRule); }
public void Process_GivenNullRule_ThrowsArgumentException() { var customer = new Customer(); var ruleEngineContext = new RuleEngineContext <Customer> (customer); var ruleProcessor = new RuleProcessor(); ruleProcessor.Process(ruleEngineContext, null); }
public void Process_GivenARule_CallsWhenClause() { var customer = new Customer(); var ruleEngineContext = new RuleEngineContext <Customer> (customer); var mockRuleCollection = new MockRuleCollection(); var ruleProcessor = new RuleProcessor(); ruleProcessor.Process(ruleEngineContext, mockRuleCollection.MyMockRule); Assert.IsTrue(mockRuleCollection.WhenClauseCalled); }
public void Process_WhenWhenClauseReturnsFalse_DoesNotCallThenClause() { var customer = new Customer(); var ruleEngineContext = new RuleEngineContext <Customer> (customer); var mockRuleCollection = new MockRuleCollection { WhenClauseReturns = false }; var ruleProcessor = new RuleProcessor(); ruleProcessor.Process(ruleEngineContext, mockRuleCollection.MyMockRule); Assert.IsFalse(mockRuleCollection.ThenClauseCalled); }
public void Process_WhenRuleIsSkipAndViolationError_RuleIsSkiped() { var customer = new Customer(); var ruleEngineContext = new RuleEngineContext <Customer> (customer); var mockRuleCollection = new MockRuleCollection { WhenClauseReturns = false }; ruleEngineContext.RuleViolationReporter.Report(new RuleViolation(mockRuleCollection.MyMockRule, null, null)); (mockRuleCollection.MyMockRule as Rule).AddShouldRunClause(ctx => ctx.RuleViolationReporter.Count() == 0); var ruleProcessor = new RuleProcessor(); ruleProcessor.Process(ruleEngineContext, mockRuleCollection.MyMockRule); Assert.IsFalse(mockRuleCollection.WhenClauseCalled); }
private void Run() { ValidationResults.Clear(); var configuration = ConfigurationHelper.Load(ConfigFilePath); var ruleProcessor = new RuleProcessor(ProjectFileLocation, configuration, IsReformatEnabled); _isRuleEngineWorking = true; Task.Factory.StartNew(() => ruleProcessor.Process(validationResult => { if (System.Windows.Application.Current.Dispatcher.CheckAccess()) { ValidationResults.AddRange(validationResult.Messages.Where(vm => !vm.Processed)); } else { System.Windows.Application.Current.Dispatcher.Invoke(() => ValidationResults.AddRange(validationResult.Messages.Where(vm => !vm.Processed))); } })).ContinueWith(t => _isRuleEngineWorking = false); }
private static void Run(Options options) { var repoRootPath = string.Empty; try { repoRootPath = Path.GetFullPath(options.RepoRootPath); if (!Directory.Exists(repoRootPath)) { var message = string.Format(Resources.Program_Run_Repository_root_path__does_not_exist, repoRootPath); Exit(message, -2); } } catch (Exception ex) { var message = string.Format(Resources.Program_Run_Error_when_processing_Repository_root_path, options.RepoRootPath); Exit(message, -2, ex); } try { string configFilePath; if (options.ConfigFilePath == Options.ConfigFilePathDefaultValue) { configFilePath = null; } else { configFilePath = Path.GetFullPath(options.ConfigFilePath); if (!File.Exists(configFilePath)) { var message = string.Format(Resources.Program_Run_Configuration_file_does_not_exist, configFilePath); Exit(message, -3); } } var configuration = ConfigurationHelper.Load(configFilePath); var ruleProcessor = new RuleProcessor(repoRootPath, configuration, options.Reformat); ruleProcessor.Process(validationResult => { foreach (var validationMessage in validationResult.Messages.Where(vm => !vm.Processed)) { validationMessage.Processed = true; switch (validationMessage.ResultLevel) { case ResultLevel.NotPassed: { using (new ColorChanger(ConsoleColor.Red)) { Console.Write(Resources.Program_Run_NotPassed); } Console.WriteLine(validationMessage.Message); } break; case ResultLevel.Error: { using (new ColorChanger(ConsoleColor.Red)) { Console.Write(Resources.Program_Run_Error); } Console.WriteLine(validationMessage.Message); } break; case ResultLevel.Warning: { using (new ColorChanger(ConsoleColor.Yellow)) { Console.Write(Resources.Program_Run_Warning); } Console.WriteLine(validationMessage.Message); } break; case ResultLevel.Passed: { if (options.Verbose) { using (new ColorChanger(ConsoleColor.Green)) { Console.Write(Resources.Program_Run_Passed); } Console.WriteLine(validationMessage.Message); } } break; case ResultLevel.Info: { Console.WriteLine(validationMessage.Message); } break; } } }); Console.WriteLine(""); if (!options.Reformat) { WriteLineBold(Resources.Program_Run_Code_was_not_reformatted__To_reformat_code_use_the__F_command_line_option); } var totalMessage = string.Format(Resources.Program_Run_Total_checks_Total_errors_found, ruleProcessor.TotalCheckCount, ruleProcessor.TotalErrorCount); WriteLineBold(totalMessage); if (Debugger.IsAttached) { Console.WriteLine(Resources.Program_Run_Press_any_key_to_continue); Console.ReadKey(true); } LogManager.FlushAll(); Environment.Exit(ruleProcessor.TotalErrorCount); } catch (Exception ex) { var message = string.Format(Resources.Program_Run_Unexpected_error, ex.Message); Logger.Error(ex, message); Exit(message, -4, ex); } }