private Option <ILiquidValue> CreateCollection(IEnumerable list)
        {
            var coll = new LiquidCollection();

            foreach (var item in list)
            {
                coll.Add(Convert(item)); // may throw exception
            }
            return(coll);
        }
        LiquidCollection FunctionsToLiquid(int indent)
        {
            var col = new LiquidCollection();

            foreach (var f in components)
            {
                col.Add(LiquidString.Create(f.ToString(indent + 1) + "\n"));
            }
            return(col);
        }
Exemple #3
0
        LiquidCollection ConditionBlocksToLiquid(int indent)
        {
            var col = new LiquidCollection();

            foreach (var c in conditionBlocks)
            {
                col.Add(c.ToLiquidString(indent));
            }
            return(col);
        }
        protected LiquidCollection BodyToLiquid(int indent)
        {
            var col = new LiquidCollection();

            foreach (var b in body)
            {
                col.Add(b.ToLiquidString(indent + 1));
            }
            return(col);
        }
Exemple #5
0
        public LiquidCollection TokenContractsToLiquid()
        {
            var collection = new LiquidCollection();

            foreach (var tokenConverter in tokenConverters)
            {
                collection.Add(tokenConverter.GetTokenContract().ToLiquidString(0));
            }
            return(collection);
        }
        public override LiquidExpressionResult ApplyTo(ITemplateContext ctx, LiquidCollection liquidArrayExpression)
        {
            var list = liquidArrayExpression.Select(x => x.HasValue
                ? FieldAccessor.TryField(ctx, x.Value, _selector.StringVal)
                : LiquidExpressionResult.ErrorOrNone(ctx, _selector.StringVal)).ToList();

            //new None<ILiquidValue>()).ToList();
            return(list.Any(x => x.IsError) ?
                   list.First(x => x.IsError) :
                   LiquidExpressionResult.Success(new LiquidCollection(list.Select(x => x.SuccessResult).ToList())));
        }
Exemple #7
0
        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 FirstFilter();

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

            // Assert
            Assert.True(result.IsError);
        }
Exemple #8
0
        public void An_Array_With_No_Value_Should_Have_Zero_Length()
        {
            // Arrange
            LiquidCollection liquidCollection = new LiquidCollection();
            var filter = new SizeFilter();

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

            // Assert
            Assert.Equal(0, result.Value);
        }
        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);
        }
        public LiquidCollection TokenContractsToLiquid()
        {
            var tokenContracts = new LiquidCollection();

            foreach (var tokenConverter in tokenConverters)
            {
                if (tokenConverter.IsOriginalToken())
                {
                    tokenContracts.Add(tokenConverter.GetTokenContract().ToLiquidString(0));
                }
            }
            return(tokenContracts);
        }
        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));
        }
Exemple #12
0
        public static Option <ILiquidValue> Transform(JArray arr)
        {
            var result = new LiquidCollection();
            var list   = arr.Select(el => (Option <ILiquidValue>)Transform((dynamic)el));

//                .Cast<Option<ILiquidValue>>();
            foreach (var item in list)
            {
                //result.Add(Option<ILiquidValue>.Create(item));
                result.Add(item);
            }
            return(result);
        }
        LiquidCollection ParametersToLiquid()
        {
            var col = new LiquidCollection();

            foreach (var par in parameters)
            {
                if (par != parameters[parameters.Count - 1])
                {
                    par.Name = par.Name + ", ";
                }
                col.Add(par.ToLiquidString());
            }
            return(col);
        }
        public void It_Should_Save_Meta_Data()
        {
            // Arrange

            var expected         = "Hello";
            var liquidCollection = new LiquidCollection();

            // Act
            liquidCollection.MetaData["test"] = expected;

            // Assert
            Assert.That(liquidCollection.MetaData.ContainsKey("test"));
            Assert.That(liquidCollection.MetaData["test"], Is.EqualTo(expected));
        }
Exemple #15
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);
        }
Exemple #16
0
        LiquidCollection GetDependencies()
        {
            LiquidCollection liquidCol    = new LiquidCollection();
            HashSet <string> dependencies = new HashSet <string>();

            dependencies.UnionWith(DataModelConverter.GetDependencies());

            foreach (var dependency in dependencies)
            {
                var statement = new SolidityStatement($"import {dependency}");
                liquidCol.Add(statement.ToLiquidString(0));
            }

            return(liquidCol);
        }
        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 void It_Should_Format_An_Array_By_Concatenating_Each_Elements_STring_Value()
        {
            // Arrange
            var num = new LiquidCollection {
                LiquidString.Create("a"), LiquidString.Create("b"), LiquidString.Create("c")
            };

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

            // Assert
            Assert.Equal("abc", stringliteral);
        }
Exemple #19
0
        public void It_Should_Return_Empty_When_Index_Is_Empty()
        {
            // Arrange
            TemplateContext templateContext = new TemplateContext();
            var             arrayofnums     = new LiquidCollection {
                LiquidNumeric.Create(0), LiquidNumeric.Create(1)
            };

            templateContext.DefineLocalVariable("arrayofnums", arrayofnums);

            // Act
            String result = GenerateAndRender("Result : {{ arrayofnums[4][arrayofnums[4]] }}", templateContext);

            // Assert
            Assert.Equal("Result : ", result);
        }
Exemple #20
0
        public void It_Should_Render_An_Array_Element()
        {
            // Arrange
            TemplateContext templateContext = new TemplateContext();
            var             list            = new LiquidCollection {
                LiquidString.Create("aaa"), LiquidNumeric.Create(123m)
            };

            templateContext.DefineLocalVariable("myarray", list);

            // Act
            String result = GenerateAndRender("Result : {{ myarray[1] }}", templateContext);

            // Assert
            Assert.Equal("Result : 123.0", result);
        }
        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);
        }
Exemple #22
0
        public void It_Should_Return_An_Error_If_A_Number_Is_Treated_Like_An_Array()
        {
            // Arrange
            TemplateContext templateContext = new TemplateContext();
            var             arrayofnums     = new LiquidCollection {
                LiquidNumeric.Create(0), LiquidNumeric.Create(1)
            };

            templateContext.DefineLocalVariable("arrayofnums", arrayofnums);
            templateContext.DefineLocalVariable("numeric", LiquidNumeric.Create(1));

            // Act
            String result = GenerateAndRender("Result : {{ arrayofnums[4][numeric[4]] }}", templateContext);

            // Assert
            Assert.Contains("cannot apply an index to a numeric.", result);
        }
Exemple #23
0
        public void It_Should_Return_An_Error_When_Trying_To_Map_A_Non_Dictionary()
        {
            // Arrange
            var mapFilter        = new MapFilter(LiquidString.Create("field1"));
            var liquidCollection = new LiquidCollection
            {
                LiquidNumeric.Create(123),
                LiquidString.Create("Test")
            };
            // Act
            var result = mapFilter.Apply(new TemplateContext(), liquidCollection).SuccessValue <LiquidCollection>();

            // Assert
            Assert.That(result.Count, Is.EqualTo(liquidCollection.Count));
            Assert.That(result[0].HasValue, Is.False);
            Assert.That(result[1].HasValue, Is.False);
        }
        public void It_Should_Render_An_Array()
        {
            // Arrange
            TemplateContext templateContext = new TemplateContext();
            var             list            = new LiquidCollection {
                LiquidString.Create("aaa"), LiquidNumeric.Create(123m)
            };

            templateContext.DefineLocalVariable("myarray", list);

            // Arrange
            String result = GenerateAndRender("Result : {{ myarray }}", templateContext);

            // Assert
            //Assert.That(result, Is.EqualTo("Result : [ \"aaa\", 123 ]"));
            Assert.That(result, Is.EqualTo("Result : aaa123.0"));
        }
Exemple #25
0
        public void It_Should_Measure_The_Size_Of_An_Array()
        {
            // Arrange

            LiquidCollection liquidCollection = new LiquidCollection {
                LiquidString.Create("a string"),
                LiquidNumeric.Create(123),
                LiquidNumeric.Create(456m),
                new LiquidBoolean(false)
            };
            var filter = new SizeFilter();

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

            // Assert
            Assert.Equal(4, result.Value);
        }
Exemple #26
0
        public void It_Should_Return_An_Element_At_Position_0()
        {
            // Arrange

            LiquidCollection liquidCollection = new LiquidCollection {
                LiquidString.Create("a string"),
                LiquidNumeric.Create(123),
                LiquidNumeric.Create(456m),
                new LiquidBoolean(false)
            };
            var filter = new PositionFilter(LiquidNumeric.Create(0));

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

            // Assert
            Assert.That(result, Is.EqualTo(liquidCollection[0]));
        }
Exemple #27
0
        public void It_Should_Join_An_Array_With_A_String()
        {
            // Arrange
            LiquidCollection liquidCollection = new LiquidCollection {
                LiquidString.Create("a string"),
                LiquidNumeric.Create(123),
                LiquidNumeric.Create(456m),
                new LiquidBoolean(false)
            };
            var filter = new JoinFilter(LiquidString.Create(", "));

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

            //Logger.Log(result.ToString());

            // Assert
            Assert.That(result.StringVal, Is.EqualTo("a string, 123, 456.0, false"));
        }
        public void It_Should_Access_Size_Property_Of_An_Array()
        {
            // Arrange
            LiquidCollection liquidCollection = new LiquidCollection
            {
                LiquidString.Create("a string"),
                LiquidNumeric.Create(123),
                LiquidNumeric.Create(456m),
                new LiquidBoolean(false)
            };
            var ctx = new TemplateContext().WithAllFilters();

            ctx.DefineLocalVariable("myarray", liquidCollection);
            // Act
            var result = RenderingHelper.RenderTemplate("Result : {{ myarray.size }}", ctx);

            // Assert

            Assert.That(result, Is.EqualTo("Result : 4"));
        }
Exemple #29
0
        public void It_Should_Render_An_Array_Element_From_A_Nested_Index()
        {
            // Arrange
            TemplateContext templateContext = new TemplateContext();
            var             indexlist       = new LiquidCollection {
                LiquidNumeric.Create(0), LiquidNumeric.Create(1)
            };
            var list = new LiquidCollection {
                LiquidString.Create("aaa"), LiquidString.Create("bbb")
            };

            templateContext.DefineLocalVariable("indexes", indexlist);
            templateContext.DefineLocalVariable("myarray", list);

            // Act
            String result = GenerateAndRender("Result : {{ myarray[indexes[1]] }}", templateContext);

            // Assert
            Assert.Equal("Result : bbb", result);
        }
Exemple #30
0
        public void It_Should_Allow_A_Variable_With_Int_Index()
        {
            // Arrange
            ITemplateContext ctx =
                new TemplateContext().WithAllFilters();
            LiquidCollection arr = new LiquidCollection {
                LiquidNumeric.Create(33)
            };

            ctx.DefineLocalVariable("bar", arr);
            var template = LiquidTemplate.Create("{{ 1 | plus: bar[0]  }}");

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

            Logger.Log(result);

            // Assert
            Assert.That(result, Is.EqualTo("34"));
        }