public void Evaluate(string input, object expected, HashSet <string> expectedRefs) { var parsed = new ExpressionEngine().Parse(input); Assert.IsNotNull(parsed); var(actual, msg) = parsed.TryEvaluate(scope); Assert.AreEqual(null, msg); AssertObjectEquals(expected, actual); if (expectedRefs != null) { var actualRefs = parsed.References(); Assert.IsTrue(expectedRefs.SetEquals(actualRefs), $"References do not match, expected: {string.Join(',', expectedRefs)} acutal: {string.Join(',', actualRefs)}"); } }