public void It_Should_Dereference_An_Array_Element()
        {
            // Arrange
            LiquidCollection liquidCollection = new LiquidCollection {
                LiquidString.Create("a string"),
                LiquidNumeric.Create(123),
                LiquidNumeric.Create(456m),
                new LiquidBoolean(false)
            };

            // Assert
            var valueAt = liquidCollection.ValueAt(0);

            Assert.That(valueAt.Value, Is.EqualTo("a string"));
        }
        public override LiquidExpressionResult ApplyTo(ITemplateContext ctx, LiquidCollection liquidArrayExpression)
        {
            if (liquidArrayExpression == null || liquidArrayExpression.Value == null)
            {
                return(LiquidExpressionResult.Error("Array is nil"));
            }
            //Console.WriteLine("Array is " + liquidArrayExpression.ArrValue.Count);
            //Console.WriteLine("Index is " + _index.IntValue);

            if (liquidArrayExpression.Count > 0 && liquidArrayExpression.Count >= _index.IntValue + 1)
            {
                return(LiquidExpressionResult.Success(liquidArrayExpression.ValueAt(_index.IntValue)));
            }
            else
            {
                return(LiquidExpressionResult.Error("Array has no element at position " + _index.IntValue));
            }
//
//            return LiquidExpressionResult.Success(liquidArrayExpression.ArrValue.Count > 0 &&
//                liquidArrayExpression.ArrValue.Count >= _index.IntValue + 1 ?
//                liquidArrayExpression.ValueAt(_index.IntValue) :
//                ConstantFactory.CreateError<LiquidCollection>("Array has no element at position " + _index.IntValue));
        }