public void It_Should_Return_An_Error_If_String_Is_Null() // TODO: Check if this is the case
        {
            // Arrange
            var filter = new LastFilter();

            // Act
            var result = filter.Apply(new TemplateContext(), LiquidString.Create(null));

            // Assert
            Assert.True(result.IsError);
        }
        public void It_Should_Return_The_Last_Char_Of_A_String()
        {
            // Arrange
            var filter = new LastFilter();

            // Act
            var result = filter.Apply(new TemplateContext(), LiquidString.Create("Hello World")).SuccessValue <LiquidString>();

            // Assert
            Assert.Equal("d", result.StringVal);
        }
        public void It_Should_Return_An_Error_If_String_Is_Null() // TODO: Check if this is the case
        {
            // Arrange
            var filter = new LastFilter();

            // Act
            var result = filter.Apply(new TemplateContext(), new StringValue(null));

            // Assert
            Assert.That(result.IsError, Is.True);

        }
        public void It_Should_Return_The_Last_Char_Of_A_String()
        {
            // Arrange
            var filter = new LastFilter();

            // Act
            var result = filter.Apply(new TemplateContext(), new StringValue("Hello World")).SuccessValue<StringValue>();

            // Assert
            Assert.That(result.StringVal, Is.EqualTo("d"));

        }
        public void It_Should_Return_An_Error_If_Array_Is_Empty() // TODO: Check if this is the case
        {
            // Arrange
            LiquidCollection liquidCollection = new LiquidCollection();
            var filter = new LastFilter();

            // Act
            var result = filter.Apply(new TemplateContext(), liquidCollection);

            // Assert
            Assert.True(result.IsError);
        }
        public void It_Should_Return_An_Error_If_Array_Is_Empty() // TODO: Check if this is the case
        {
            // Arrange
            ArrayValue arrayValue = new ArrayValue(new List<IExpressionConstant>());
            var filter = new LastFilter();

            // Act
            var result = filter.Apply(new TemplateContext(), arrayValue);

            // Assert
            Assert.That(result.IsError, Is.True);

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

            // Act
            var result = filter.Apply(new TemplateContext(), liquidCollection).SuccessValue <LiquidBoolean>();

            // Assert
            Assert.Equal(liquidCollection[liquidCollection.Count - 1], result);
        }
        public void It_Should_Return_The_Last_Element()
        {
            // Arrange
            IList<IExpressionConstant> objlist = new List<IExpressionConstant>
            {
                new StringValue("a string"), 
                NumericValue.Create(123), 
                NumericValue.Create(456m),
                new BooleanValue(false)
            };
            ArrayValue arrayValue = new ArrayValue(objlist);
            var filter = new LastFilter();

            // Act
            var result = filter.Apply(new TemplateContext(), arrayValue).SuccessValue<BooleanValue>();

            // Assert
            Assert.That(result, Is.EqualTo(objlist[objlist.Count() - 1]));

        }