Ejemplo n.º 1
0
        /// <summary>
        /// Outputs a friendly display of the policy execution results;
        /// </summary>
        /// <param name="output"><see cref="TextWriter"/> for outputs</param>
        /// <returns><see cref="Task"/></returns>
        public static async Task ReportAsync(PolicyResults results, TextWriter output)
        {
            if (results.HasViolations)
            {
                await output.WriteLineAsync($"Policy violations found for: {results.Name}");

                foreach (var rule in results.Results)
                {
                    if (!rule.IsSuccessful)
                    {
                        await output.WriteLineAsync("-----------------------------------------------------------");

                        await output.WriteLineAsync($"Rule failed: {rule.Name}");

                        foreach (var type in rule.FailingTypes)
                        {
                            await output.WriteLineAsync($"\t {type.FullName}");
                        }
                    }
                }

                await output.WriteLineAsync("-----------------------------------------------------------");
            }
            else
            {
                await output.WriteLineAsync($"No policy violations found for: {results.Name}");
            }
        }
        public void TestPolicyPresentationLayer()
        {
            // Arrange
            var policy = Policy.Define("Presentation Policy", "Policy for Presentation layer")
                         .For(Types.InAssembly(typeof(CakeView).Assembly))
                         .Add(t =>
                              t.That()
                              .ResideInNamespace("MyAwesomeApplication.PresentationLayer.Views")
                              .And()
                              .AreClasses()
                              .Should()
                              .HaveNameEndingWith("View"),
                              "Control classes in Views namespace", "Classes in Views namespace ends with View suffix")
                         .Add(t =>
                              t.That()
                              .ResideInNamespace("MyAwesomeApplication.PresentationLayer.ViewModels")
                              .Should()
                              .ImplementInterface(typeof(INotifyPropertyChanged)),
                              "Control classes in ViewModels namespace", "Classes in ViewModels namespace has to implements INotifyPropertyChanged"
                              );

            // Act
            PolicyResults results = policy.Evaluate();

            // Assert
            Assert.IsFalse(results.HasViolations);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Outputs a friendly display of the policy execution results;
        /// </summary>
        /// <param name="results"><see cref="PolicyResults"/> the policy results</param>
        /// <param name="output"><see cref="ITestOutputHelper"/> for outputs</param>
        public static void Write(PolicyResults results, ITestOutputHelper output)
        {
            if (results.HasViolations)
            {
                output.WriteLine($"Policy violations found for: {results.Name}");

                foreach (var rule in results.Results)
                {
                    if (!rule.IsSuccessful)
                    {
                        output.WriteLine("-----------------------------------------------------------");
                        output.WriteLine($"{rule.Name} - {rule.Description}");
                        foreach (var type in rule.FailingTypes)
                        {
                            output.WriteLine($"\t -> {type.FullName}");
                        }
                    }
                }

                output.WriteLine("-----------------------------------------------------------");
            }
            else
            {
                output.WriteLine($"No policy violations found for: {results.Name}");
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// A synchronous variant of <see cref="ReportAsync(TextWriter)"/>
 /// </summary>
 /// <param name="output"></param>
 public static void Report(PolicyResults results, TextWriter output) => ReportAsync(results, output).GetAwaiter().GetResult();
 public void Fail(string message)
 {
     PolicyResults.Add(new MergePolicyEvaluationResult.SingleResult(false, message, CurrentPolicy));
 }
 public void Succeed(string message)
 {
     PolicyResults.Add(new MergePolicyEvaluationResult.SingleResult(true, message, CurrentPolicy));
 }
 public void Pending(string message)
 {
     PolicyResults.Add(new MergePolicyEvaluationResult.SingleResult(null, message, CurrentPolicy));
 }
Ejemplo n.º 8
0
 public static void AssertHasNoViolations(this PolicyResults result)
 {
     var lines = new List <string> {
         $"{result.Description}",
         $"{result.Name} policy has been violated by following types:"
     };