public void placeholders_with_recursion()
        {
            IValueEvaluator[] evaluators =
            {
                new DictionaryEvaluator("eval1", new Dictionary <string, string> {
                    { "Prop1",                   "Value1" },                     { "Prop2","Value2" }, { "Success", "Success!" }
                }),
                new DictionaryEvaluator("eval2", new Dictionary <string, string> {
                    { "Value1_Value2",           "Success" }
                }),
            };

            SimpleExpressionParser
            .ParseAndRender("${eval1:Prop1}_${eval1:Prop2}", evaluators)
            .Should().Be("Value1_Value2");

            SimpleExpressionParser
            .ParseAndRender("${eval2:${eval1:Prop1}_${eval1:Prop2}}", evaluators)
            .Should().Be("Success");

            evaluators = evaluators.Reverse().ToArray();
            SimpleExpressionParser
            .ParseAndRender("${eval2:${eval1:Prop1}_${eval1:Prop2}}", evaluators)
            .Should().Be("Success");

            SimpleExpressionParser
            .ParseAndRender("${eval1:${eval2:${eval1:Prop1}_${eval1:Prop2}}}", evaluators)
            .Should().Be("Success!");
        }
        public void expression_with_error()
        {
            IValueEvaluator[] evaluators =
            {
                new DictionaryEvaluator("eval1", new Dictionary <string, string> {
                    { "Prop1",                   "Value1" },                     { "Prop2","Value2" }, { "Success", "Success!" }
                }),
                new DictionaryEvaluator("eval2", new Dictionary <string, string> {
                    { "Value1_Value2",           "Success" }
                }),
            };

            SimpleExpressionParser
            .ParseAndRender("${eval1:Prop1", evaluators)
            .Should().Be("${eval1:Prop1");
        }