Пример #1
0
        private void Evaluation_results_should_be(Verifiable <bool> expected)
        {
            var    builder  = new ExpressionEvaluator();
            bool   actual   = false;
            JArray evidence = null;

            if (evaluationContext is Location location)
            {
                var lambda = builder.Evaluate <Location>(conditionExpression);
                actual   = lambda(location);
                evidence = GetEvidence(conditionExpression, location);
            }
            else if (evaluationContext is Person person)
            {
                var lambda = builder.Evaluate <Person>(conditionExpression);
                actual   = lambda(person);
                evidence = GetEvidence(conditionExpression, person);
            }
            else if (evaluationContext is TreeNode treeNode)
            {
                var lambda = builder.Evaluate <TreeNode>(conditionExpression);
                actual   = lambda(treeNode);
                evidence = GetEvidence(conditionExpression, treeNode);
            }
            else
            {
                Assert.Fail($"context type '{evaluationContext.GetType().Name}' is not supported");
            }

            if (evidence != null)
            {
                StepExecution.Current.Comment($"Evidence\n{evidence.FormatObject()}\n");
            }

            expected.SetActual(actual);
        }