public LiquidCollection CreateArray()
 {
     // Arrange
     return(new LiquidCollection {
         LiquidString.Create("1"),
         LiquidNumeric.Create(2),
         LiquidString.Create("Three"),
         new LiquidBoolean(true)
     });;
 }
Пример #2
0
        public void It_Should_Convert_A_Numeric_To_A_Date()
        {
            var date   = new DateTime(2015, 10, 29, 10, 11, 12);
            var result = ValueCaster.Cast <LiquidNumeric, LiquidDate>(LiquidNumeric.Create(date.Ticks));

            Assert.That(result.IsSuccess, Is.True);
            Assert.That(result.SuccessResult.HasValue, Is.True);
            // ReSharper disable once PossibleInvalidOperationException
            Assert.That(result.SuccessValue <LiquidDate>().DateTimeValue.Value, Is.EqualTo(date));
        }
Пример #3
0
        public void It_Should_Return_Error_When_Multiple_Constructors()
        {
            // Arrange
            var filter = FilterFactory.InstantiateFilter("mockfilter", typeof(TwoConstructorFilter), new List <Option <ILiquidValue> > {
                LiquidNumeric.Create(123)
            });

            // Assert
            Assert.True(filter.IsFailure);
        }
Пример #4
0
        public void It_Should_Return_Error_When_Null_Type()
        {
            // Arrange
            var filter = FilterFactory.InstantiateFilter("mockfilter", null, new List <Option <ILiquidValue> > {
                LiquidNumeric.Create(123)
            });

            // Assert
            Assert.True(filter.IsFailure);
        }
 public LiquidHash CreateDictionary()
 {
     return(new LiquidHash
     {
         { "one", LiquidString.Create("1") },
         { "two", LiquidNumeric.Create(2) },
         { "three", LiquidString.Create("Three") },
         { "four", new LiquidBoolean(true) }
     });
 }
Пример #6
0
 private LiquidCollection CreateArrayValues()
 {
     return(new LiquidCollection
     {
         LiquidNumeric.Create(1),
         LiquidNumeric.Create(2),
         LiquidNumeric.Create(3),
         LiquidNumeric.Create(4)
     });
 }
Пример #7
0
        public void It_Should_Cast_An_Int_To_A_String_Like_Ruby_Liquid(int input, String expected)
        {
            // Arrange
            var castFilter = new CastFilter <LiquidNumeric, LiquidString>();

            // Act
            var result = castFilter.Apply(new TemplateContext(), LiquidNumeric.Create(input)).SuccessValue <LiquidString>();

            // Assert
            Assert.That(result.StringVal, Is.EqualTo(expected));
        }
Пример #8
0
        public void It_Should_Cast_A_Decimal_To_A_String_Like_Ruby_Liquid(decimal input, String expected)
        {
            // Arrange
            var castFilter = new CastFilter <LiquidNumeric, LiquidString>();

            // Act
            var result = castFilter.Apply(new TemplateContext(), LiquidNumeric.Create(input)).SuccessValue <LiquidString>();

            // Assert
            Assert.Equal(expected, result.StringVal);
        }
Пример #9
0
        public void It_Should_Pluralize_An_Integerr(int input, String expected)
        {
            // Arrange
            TemplateContext ctx = new TemplateContext();

            ctx.DefineLocalVariable("input", LiquidNumeric.Create(input));
            var result = RenderingHelper.RenderTemplate("Result : {{ input | pluralize: 'thing', 'things' }}", ctx);

            // Assert
            Assert.Equal("Result : " + expected, result);
        }
Пример #10
0
        public void It_Should_Generate_Some_Values(int start, int end, int[] expected)
        {
            // Arrange
            var generatorValue = new LiquidRange(LiquidNumeric.Create(start), LiquidNumeric.Create(end));

            // Act
            var result = generatorValue.AsEnumerable();

            // Assert
            Assert.Equal(expected.ToList(), result.Select(x => Convert.ToInt32(x.Value)));
        }
Пример #11
0
        public void It_Should_Cast_Numeric_Args_To_A_String()
        {
            // Arrange
            var filter = FilterFactory.InstantiateFilter("mockfilter", typeof(MockStringToStringFilter), new List <Option <ILiquidValue> > {
                LiquidNumeric.Create(123)
            });

            // Act

            Assert.Equal("123", ((MockStringToStringFilter)filter.Value).LiquidStringArg1.Value);
        }
Пример #12
0
        public void It_Should_Evaluate_To_Itself()
        {
            // Arrange
            var number = LiquidNumeric.Create(123m);

            // Act
            var result = number.Eval(new TemplateContext(), new List <Option <ILiquidValue> >()).SuccessValue <LiquidNumeric>();

            // Assert
            Assert.Equal(123m, result.Value);
        }
Пример #13
0
        public void Test_Filter()
        {
            ITemplateContext ctx = new TemplateContext()
                                   .WithAllFilters()
                                   .DefineLocalVariable("resultcount", LiquidNumeric.Create(42))
                                   .DefineLocalVariable("searchterm", LiquidString.Create("MiXeDcAsE"));

            var parsingResult = LiquidTemplate.Create("{{ resultcount }} {{ resultcount | pluralize: 'item', 'items' }} were found for '{{searchterm | downcase}}'.");

            Assert.That(parsingResult.LiquidTemplate.Render(ctx).Result, Is.EqualTo("42 items were found for 'mixedcase'."));
        }
Пример #14
0
        public void It_Should_Pluralize_A_Decimal_Number(decimal input, String expected)
        {
            // Arrange
            TemplateContext ctx = new TemplateContext();

            ctx.DefineLocalVariable("input", LiquidNumeric.Create(input));
            var result = RenderingHelper.RenderTemplate("Result : {{ input | pluralize: 'thing', 'things' }}", ctx);

            // Assert
            Assert.That(result, Is.EqualTo("Result : " + expected));
        }
Пример #15
0
        public void A_Generator_Value_Should_Return_The_Size()
        {
            // Arrange
            var strVal = new LiquidRange(LiquidNumeric.Create(3), LiquidNumeric.Create(10));
            var filter = new SizeFilter();

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

            // Assert
            Assert.Equal(8, result.Value);
        }
Пример #16
0
        public void It_Should_Dereference_A_LiquidHash()
        {
            // Arrange
            var dictValue = new LiquidHash
            {
                { "string1", LiquidString.Create("a string") },
                { "string2", LiquidNumeric.Create(123) },
                { "string3", LiquidNumeric.Create(456m) }
            };

            // Assert
            Assert.Equal("a string", dictValue.ValueAt("string1").Value.ToString());
        }
Пример #17
0
        public void It_Should_Return_The_Same_Object_If_Dest_Is_An_ExpressionConstant()
        {
            // Arrange
            var original = new LiquidCollection {
                LiquidNumeric.Create(123.4m), LiquidNumeric.Create(5)
            };

            // Act
            var result = ValueCaster.Cast <LiquidCollection, LiquidValue>(original).SuccessValue <LiquidCollection>();

            // Assert
            Assert.That(result, Is.EqualTo(original));
        }
Пример #18
0
 public static LiquidExpressionResult GetReturnValue(decimal result, LiquidNumeric val1, LiquidNumeric val2)
 {
     if (val1.IsInt && val2.IsInt)
     {
         //var int32 = Convert.ToInt32(val);
         var int32 = (int)System.Math.Floor(result); // ruby liquid seems to round down.
         return(LiquidExpressionResult.Success(LiquidNumeric.Create(int32)));
     }
     else
     {
         return(LiquidExpressionResult.Success(LiquidNumeric.Create(result)));
     }
 }
Пример #19
0
        public void It_Should_Generate_Some_Values_Descending()
        {
            // Arrange
            var generatorValue = new LiquidRange(LiquidNumeric.Create(5), LiquidNumeric.Create(2));

            // Act
            var result = generatorValue.AsEnumerable();

            // Assert
            Assert.Equal(new List <int> {
                5, 4, 3, 2
            }, result.Select(x => Convert.ToInt32(x.Value)));
        }
Пример #20
0
        public void It_Should_Parse_A_Regular_Variable()
        {
            String input    = @"{{ v | plus: v }}";
            var    template = LiquidTemplate.Create(input);

            // Act
            String result = template.LiquidTemplate.Render(new TemplateContext()
                                                           .DefineLocalVariable("v", LiquidNumeric.Create(3))
                                                           .WithAllFilters()).Result;

            // Assert
            Assert.Equal("6", result.Trim());
        }
Пример #21
0
        public void It_Can_Cast_With_Generics()
        {
            // Arrange
            var num = LiquidNumeric.Create(123.45m);

            // Act
            var stringliteral = ValueCaster.Cast <LiquidNumeric, LiquidString>(num)
                                .SuccessValue <LiquidString>()
                                .StringVal;

            // Assert
            Assert.Equal("123.45", stringliteral);
        }
Пример #22
0
        public void It_Should_Return_The_Same_Object_If_Src_And_Dest_Are_Arrays()
        {
            // Arrange
            var original = new LiquidCollection {
                LiquidNumeric.Create(123.4m), LiquidNumeric.Create(5)
            };

            // Act
            var result = ValueCaster.Cast <LiquidCollection, LiquidCollection>(original).SuccessValue <LiquidCollection>();

            // Assert
            Assert.Equal(original, result);
        }
Пример #23
0
        public void It_Should_Cast_A_Number_To_A_String()
        {
            // Arrange
            var num = LiquidNumeric.Create(123.45m);

            // Act
            var stringliteral = ValueCaster.Cast <LiquidNumeric, LiquidString>(num)
                                .SuccessValue <LiquidString>()
                                .StringVal;

            // Assert
            Assert.Equal("123.45", stringliteral);
        }
Пример #24
0
        public void It_Can_Cast_With_Generics_Via_Reflection()
        {
            // Arrange
            var num = LiquidNumeric.Create(123.45m);

            // Act
            MethodInfo method        = typeof(ValueCaster).GetMethod("Cast");
            MethodInfo generic       = method.MakeGenericMethod(typeof(LiquidNumeric), typeof(LiquidString));
            var        castResult    = (LiquidExpressionResult)generic.Invoke(null, new object[] { num });
            var        stringLiteral = castResult.SuccessValue <LiquidString>();

            // Assert
            Assert.Equal("123.45", stringLiteral.Value);
        }
        public void It_Should_Create_A_For_Like_Loop()
        {
            // Act
            var templateContext = new TemplateContext()
                                  .WithAllFilters()
                                  .DefineLocalVariable("array", new LiquidCollection {
                LiquidNumeric.Create(10), LiquidNumeric.Create(11)
            })
                                  .WithCustomTagBlockRenderer <ForLikeBlockTag>("forcustom");
            var result = RenderingHelper.RenderTemplate("Result : {% forcustom \"item\" array %}{{item}}{% endforcustom %}", templateContext);

            // Assert
            Assert.Equal("Result : START CUSTOM FOR LOOP1011END CUSTOM FOR LOOP", result);
        }
Пример #26
0
        private static TemplateContext CreateContextWithDictionary()
        {
            var ctx      = new TemplateContext();
            var payments = new LiquidCollection
            {
                LiquidNumeric.Create(12.34m),
                LiquidNumeric.Create(33.45m),
            };

            ctx.DefineLocalVariable("user", new LiquidHash {
                { "payments", payments }
            });
            return(ctx);
        }
Пример #27
0
        public void It_Can_Use_Reserved_Words()
        {
            // Arrange
            TemplateContext ctx = new TemplateContext();

            ctx.DefineLocalVariable("limit", LiquidNumeric.Create(3));
            ctx.DefineLocalVariable("offset", LiquidNumeric.Create(1));
            var template = LiquidTemplate.Create("Result : {% for wef in \"Hello\" limit:limit offset:offset %}<li>{{ for }}</li>{% endfor %}");

            // Act
            String result = template.LiquidTemplate.Render(new TemplateContext()).Result;

            // Assert
            Assert.Equal("Result : <li>e</li><li>l</li><li>l</li>", result);
        }
Пример #28
0
        public void It_Should_Not_Slice_A_Number()
        {
            // Arrange
            var ctx = new TemplateContext().WithAllFilters();

            ctx.DefineLocalVariable("num", LiquidNumeric.Create(1));

            // Act
            //var result = RenderingHelper.RenderTemplate("Result : {{ num | slice : 1,2 }}", ctx);
            var template = LiquidTemplate.Create("Result : {{ num | slice : 1,2 }}");
            var result   = template.LiquidTemplate.Render(ctx);

            // Assert
            Assert.That(result.Result, Is.StringContaining("Can't slice a object of type"));
        }
Пример #29
0
        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"));
        }
Пример #30
0
        public void Test_Simple_Collection()
        {
            ITemplateContext ctx = new TemplateContext();

            ctx.DefineLocalVariable("items", new LiquidCollection
            {
                LiquidNumeric.Create(2),
                LiquidNumeric.Create(4),
                LiquidNumeric.Create(6)
            });

            var parsingResult = LiquidTemplate.Create("<ul>{% for item in items %}<li>{{item}}</li>{% endfor %}</ul>");

            Assert.That(parsingResult.LiquidTemplate.Render(ctx).Result, Is.EqualTo("<ul><li>2</li><li>4</li><li>6</li></ul>"));
        }