protected static IEnumerable <ExpectResult> CompareAssert( IEvent <T>[] expected, IEvent <T>[] actual) { var max = Math.Max(expected.Length, actual.Length); for (int i = 0; i < max; i++) { var ex = expected.Skip(i).FirstOrDefault(); var ac = actual.Skip(i).FirstOrDefault(); var expectedString = ex == null ? "No event expected" : Describe.Object(ex); var actualString = ac == null ? "No event actually" : Describe.Object(ac); var result = new ExpectResult { Expectation = expectedString }; var realDiff = CompareObjects.FindDifferences(ex, ac); if (!string.IsNullOrEmpty(realDiff)) { var stringRepresentationsDiffer = expectedString != actualString; result.Failure = stringRepresentationsDiffer ? GetAdjusted("Was: ", actualString) : GetAdjusted("Diff: ", realDiff); } yield return(result); } }
protected void PrintSpecification() { Console.WriteLine("Test: {0}", GetType().Name.Replace("_", " ")); Console.WriteLine("Specification: {0}", TestContext.CurrentContext.Test.Name.Replace("_", " ")); Console.WriteLine(); if (_given.Any()) { Console.WriteLine("GIVEN:"); for (var i = 0; i < _given.Count; i++) { PrintAdjusted(" " + (i + 1) + ". ", Describe.Object(_given[i]).Trim()); } } else { Console.WriteLine("GIVEN no events"); } if (_when != null) { Console.WriteLine(); Console.WriteLine("WHEN:"); PrintAdjusted(" ", Describe.Object(_when).Trim()); } Console.WriteLine(); if (_then.Any()) { Console.WriteLine("THEN:"); for (int i = 0; i < _then.Count; i++) { PrintAdjusted(" " + (i + 1) + ". ", Describe.Object(_then[i]).Trim()); } } else { Console.WriteLine("THEN nothing."); } }
public static void Document <T>( RunResult result, List <string> before, IEvent <T>[] given, ICommand <T> when, string decisions) where T : IIdentity { var passed = result.Passed ? "[Passed]" : "[Failed]"; var cleanupName = result.FoundOnMemberInfo.DeclaringType.Name.CleanupName(); Console.WriteLine("{2} Use case '{0} - {1}'.", cleanupName, result.Name.CleanupName(), passed); var cleared = before .Select(b => (b ?? "").TrimEnd()) .Where(s => !string.IsNullOrEmpty(s)) .ToList(); if (cleared.Any()) { Console.WriteLine(); Console.WriteLine("Environment: "); foreach (var e in cleared) { PrintAdjusted(" ", e); } } if (given.Any()) { Console.WriteLine(); Console.WriteLine("Given:"); for (int i = 0; i < given.Length; i++) { PrintAdjusted(" " + (i + 1) + ". ", Describe.Object(given[i]).Trim()); } } if (when != null) { Console.WriteLine(); Console.WriteLine("When:"); PrintAdjusted(" ", Describe.Object(when).Trim()); } Console.WriteLine(); Console.WriteLine("Expectations:"); foreach (var expecation in result.Expectations) { var s = expecation.Passed ? "[ok]" : "[NO]"; PrintAdjusted(" " + s + " ", expecation.Text.Trim()); if (!expecation.Passed && expecation.Exception != null) { PrintAdjusted(" ", expecation.Exception.Message); } } if (result.Thrown != null) { Console.WriteLine("Specification failed: " + result.Message.Trim()); Console.WriteLine(); Console.WriteLine(result.Thrown); } if (decisions.Length > 0) { Console.WriteLine(""); Console.WriteLine("Decisions made:"); PrintAdjusted(" ", decisions); } Console.WriteLine(new string('-', 80)); Console.WriteLine(); }
public IEnumerable <ExpectationResult> Assert(object fromWhen) { var actual = ((IEvent <T>[])fromWhen); // structurally equal comparison for (int i = 0; i < _expected.Count; i++) { var expectedHumanReadable = Describe.Object(_expected[i]); if (actual.Length > i) { var diffs = CompareObjects.FindDifferences(_expected[i], actual[i]); if (string.IsNullOrEmpty(diffs)) { yield return(new ExpectationResult { Passed = true, Text = expectedHumanReadable }); } else { var actualHumanReadable = Describe.Object(actual[i]); if (actualHumanReadable != expectedHumanReadable) { var msg = PrintEvil.GetAdjusted("Was: ", actualHumanReadable); // there is a difference in textual representations yield return(new ExpectationResult { Passed = false, Text = expectedHumanReadable, Exception = new InvalidOperationException(msg) }); } else { yield return(new ExpectationResult { Passed = false, Text = expectedHumanReadable, Exception = new InvalidOperationException(diffs) }); } } } else { yield return(new ExpectationResult { Passed = false, Text = expectedHumanReadable, Exception = new InvalidOperationException(" Message is missing") }); } } for (int i = _expected.Count; i < actual.Count(); i++) { var msg = PrintEvil.GetAdjusted("Was: ", Describe.Object(actual[i])); yield return(new ExpectationResult { Passed = false, Text = "Unexpected message", Exception = new InvalidOperationException(msg) }); } }