Exemple #1
0
        public void SortWithoutArgument()
        {
            var input = new ArrayValue(new[] {
                new StringValue("c"),
                new StringValue("a"),
                new StringValue("B"),
            });

            var arguments = new FilterArguments();

            var context = new TemplateContext();

            var result = ArrayFilters.Sort(input, arguments, context);

            Assert.Equal(3, result.Enumerate().Count());
            Assert.Equal("B", result.Enumerate().ElementAt(0).ToStringValue());
            Assert.Equal("a", result.Enumerate().ElementAt(1).ToStringValue());
            Assert.Equal("c", result.Enumerate().ElementAt(2).ToStringValue());
        }
Exemple #2
0
        public void Sort()
        {
            var input = new ArrayValue(new[] {
                new ObjectValue(new { Title = "c" }),
                new ObjectValue(new { Title = "a" }),
                new ObjectValue(new { Title = "b" })
            });

            var arguments = new FilterArguments().Add(new StringValue("Title"));

            var context = new TemplateContext();

            context.MemberAccessStrategy.Register(new { Title = "" }.GetType(), "Title");

            var result = ArrayFilters.Sort(input, arguments, context);

            Assert.Equal(3, result.Enumerate().Count());
            Assert.Equal("a", ((dynamic)result.Enumerate().ElementAt(0).ToObjectValue()).Title);
            Assert.Equal("b", ((dynamic)result.Enumerate().ElementAt(1).ToObjectValue()).Title);
            Assert.Equal("c", ((dynamic)result.Enumerate().ElementAt(2).ToObjectValue()).Title);
        }
Exemple #3
0
        public async Task Sort()
        {
            var sample = new { Title = "", Address = new { Zip = 0 } };

            var input = new ArrayValue(new[] {
                new ObjectValue(new { Title = "c", Address = new { Zip = 2 } }),
                new ObjectValue(new { Title = "a", Address = new { Zip = 3 } }),
                new ObjectValue(new { Title = "b", Address = new { Zip = 1 } })
            });

            var arguments = new FilterArguments().Add(new StringValue("Title"));

            var options = new TemplateOptions();
            var context = new TemplateContext(options);

            options.MemberAccessStrategy.Register(sample.GetType(), "Title");

            var result = await ArrayFilters.Sort(input, arguments, context);

            Assert.Equal(3, result.Enumerate().Count());
            Assert.Equal("a", ((dynamic)result.Enumerate().ElementAt(0).ToObjectValue()).Title);
            Assert.Equal("b", ((dynamic)result.Enumerate().ElementAt(1).ToObjectValue()).Title);
            Assert.Equal("c", ((dynamic)result.Enumerate().ElementAt(2).ToObjectValue()).Title);

            arguments = new FilterArguments().Add(new StringValue("Address.Zip"));

            options = new TemplateOptions();
            context = new TemplateContext(options);
            options.MemberAccessStrategy.Register(sample.GetType(), "Address");
            options.MemberAccessStrategy.Register(sample.Address.GetType(), "Zip");

            result = await ArrayFilters.Sort(input, arguments, context);

            Assert.Equal(3, result.Enumerate().Count());
            Assert.Equal("b", ((dynamic)result.Enumerate().ElementAt(0).ToObjectValue()).Title);
            Assert.Equal("c", ((dynamic)result.Enumerate().ElementAt(1).ToObjectValue()).Title);
            Assert.Equal("a", ((dynamic)result.Enumerate().ElementAt(2).ToObjectValue()).Title);
        }