public void It_Should_Derefence_A_Variable()
        {
            // Arrange
            var variableReference = new VariableReference("myvar");
            var templateContext = new TemplateContext();
            templateContext.DefineLocalVariable("myvar", new StringValue("HELLO"));

            // Act
            var result = variableReference.Eval(templateContext, new List<Option<IExpressionConstant>>()).SuccessValue<StringValue>();

            // Assert
            Assert.That(result.Value, Is.EqualTo("HELLO"));


        }
        public void It_Should_Dereference_A_Dictionary_Element()
        {
            // Arrange
            var variableReference = new VariableReference("myvar");
            var variableReferenceIndex = new VariableReferenceIndex(variableReference, "test");
            var templateContext = new TemplateContext();
            IDictionary<String, IExpressionConstant> dict = new Dictionary<string, IExpressionConstant> { { "test", new StringValue("aaa") } };
            templateContext.DefineLocalVariable("myvar", new DictionaryValue(dict));

            // Act

            var result = variableReferenceIndex.Eval(templateContext, new List<Option<IExpressionConstant>>());

            // Assert
            Assert.That(result.SuccessValue<StringValue>().StringVal, Is.EqualTo("aaa"));

        }
 public VariableReferenceIndex(VariableReference variableReference, Object index)
 {
     _variableReference = variableReference;
     _index = index;
 }
 public void Visit(VariableReference variableReference)
 {
     _result += variableReference.ToString();
 }
 public void Visit(VariableReference variableReference)
 {
     variableReference.Eval(_templateContext, new List<Option<IExpressionConstant>>());
 }
 private static String AsString(VariableReference varref)
 {
     return varref.Name;
 }