コード例 #1
0
        public async Task WriteAsync(ExpectExceptionScenario scenario)
        {
            if (scenario == null)
            {
                throw new ArgumentNullException(nameof(scenario));
            }

            await Writer.WriteLineAsync("Given");

            await Writer.WriteLineAsync("");

            foreach (var given in scenario.Givens)
            {
                await Writer.WriteLineAsync(string.Format("\t[{0}] {1}", given.Stream, Translator.Translate(given.Event)));
            }

            await Writer.WriteLineAsync("When");

            await Writer.WriteLineAsync("");

            await Writer.WriteLineAsync(string.Format("\t{0}", Translator.Translate(scenario.When.Body)));

//            foreach (var header in scenario.When.Head)
//            {
//                await Writer.WriteLineAsync(string.Format("\t{0}", Translator.Translate(header)));
//            }

            await Writer.WriteLineAsync("Throws");

            await Writer.WriteLineAsync("");

            await Writer.WriteLineAsync(string.Format("\t{0}", Translator.Translate(scenario.Throws)));
        }
コード例 #2
0
        public async Task <object> RunAsync(ExpectExceptionScenario scenario, CancellationToken ct = default)
        {
            var checkpoint = await WriteGivens(scenario.Givens);

            var exception = await Catch.Exception(() => _resolver(scenario.When)(scenario.When, ct));

            if (exception == null)
            {
                var recordedEvents = await ReadThens(checkpoint);

                if (recordedEvents.Length != 0)
                {
                    return(scenario.ButRecordedEvents(recordedEvents));
                }
                return(scenario.ButThrewNoException());
            }

            var config = new ComparisonConfig
            {
                MaxDifferences  = int.MaxValue,
                MaxStructDepth  = 5,
                MembersToIgnore =
                {
                    "StackTrace",
                    "Source",
                    "TargetSite"
                },
                IgnoreObjectTypes = true,
                CustomComparers   = new List <BaseTypeComparer>
                {
                    new ValidationFailureComparer(RootComparerFactory.GetRootComparer()),
                    //new PointMComparer(RootComparerFactory.GetRootComparer())
                }
            };
            var comparer = new CompareLogic(config);
            var result   = comparer.Compare(scenario.Throws, exception);

            if (result.AreEqual)
            {
                return(scenario.Pass());
            }
            return(scenario.ButThrewException(exception));
        }
コード例 #3
0
 public ScenarioExpectedExceptionButThrewOtherException(ExpectExceptionScenario scenario, Exception actual)
 {
     Scenario = scenario ?? throw new ArgumentNullException(nameof(scenario));
     Actual   = actual ?? throw new ArgumentNullException(nameof(actual));
 }
 public ScenarioExpectedExceptionButThrewNoException(ExpectExceptionScenario scenario)
 {
     Scenario = scenario ?? throw new ArgumentNullException(nameof(scenario));
 }
コード例 #5
0
 public ExpectExceptionScenarioPassed(ExpectExceptionScenario scenario)
 {
     Scenario = scenario ?? throw new ArgumentNullException(nameof(scenario));
 }
コード例 #6
0
 public ScenarioExpectedExceptionButRecordedEvents(ExpectExceptionScenario scenario, RecordedEvent[] actual)
 {
     Scenario = scenario ?? throw new ArgumentNullException(nameof(scenario));
     Actual   = actual ?? throw new ArgumentNullException(nameof(actual));
 }