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); }