Beispiel #1
0
        public bool TryParse(string sort, out ISortParserResult result)
        {
            var expressions = new List <ISortParserResultExpression>();

            if (!string.IsNullOrEmpty(sort))
            {
                var lines = sort.Split(new[]
                {
                    Environment.NewLine
                }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var line in lines)
                {
                    var success = default(bool);
                    foreach (var provider in this.Providers)
                    {
                        var expression = default(ISortParserResultExpression);
                        if (provider.TryParse(line, out expression))
                        {
                            expressions.Add(expression);
                            success = true;
                            break;
                        }
                    }
                    if (!success)
                    {
                        result = default(ISortParserResult);
                        return(false);
                    }
                }
            }
            result = new SortParserResult(expressions);
            return(true);
        }
Beispiel #2
0
        public void SortParserTest001()
        {
            var sort     = "CustomMetaData.VariousArtists";
            var expected = new SortParserResult(
                new[]
            {
                new SortParserResultExpression(
                    CustomMetaData.VariousArtists
                    )
            }
                );
            var actual = default(ISortParserResult);

            Assert.IsTrue(this.Core.Components.SortParser.TryParse(
                              sort,
                              out actual
                              ));
            Assert.AreEqual(expected, actual);
        }
Beispiel #3
0
        public void SortParserTest003()
        {
            var sort     = "CommonMetaData.Disc num";
            var expected = new SortParserResult(
                new[]
            {
                new SortParserResultExpression(
                    CommonMetaData.Disc,
                    SortParserResultOperator.Numeric
                    )
            }
                );
            var actual = default(ISortParserResult);

            Assert.IsTrue(this.Core.Components.SortParser.TryParse(
                              sort,
                              out actual
                              ));
            Assert.AreEqual(expected, actual);
        }
Beispiel #4
0
        public void SortParserTest004()
        {
            var sort     = @"CustomMetaData.VariousArtists ? CommonMetaData.Artist
CommonMetaData.Year
CommonMetaData.Album
CommonMetaData.Disc num
CommonMetaData.Track num";
            var expected = new SortParserResult(
                new[]
            {
                new SortParserResultExpression(
                    CustomMetaData.VariousArtists,
                    SortParserResultOperator.NullCoalesce,
                    new SortParserResultExpression(
                        CommonMetaData.Artist
                        )
                    ),
                new SortParserResultExpression(
                    CommonMetaData.Year
                    ),
                new SortParserResultExpression(
                    CommonMetaData.Album
                    ),
                new SortParserResultExpression(
                    CommonMetaData.Disc,
                    SortParserResultOperator.Numeric
                    ),
                new SortParserResultExpression(
                    CommonMetaData.Track,
                    SortParserResultOperator.Numeric
                    )
            }
                );
            var actual = default(ISortParserResult);

            Assert.IsTrue(this.Core.Components.SortParser.TryParse(
                              sort,
                              out actual
                              ));
            Assert.AreEqual(expected, actual);
        }
Beispiel #5
0
        public void SortParserTest002()
        {
            var sort     = "CustomMetaData.VariousArtists ? CommonMetaData.Artist";
            var expected = new SortParserResult(
                new[]
            {
                new SortParserResultExpression(
                    CustomMetaData.VariousArtists,
                    SortParserResultOperator.NullCoalesce,
                    new SortParserResultExpression(
                        CommonMetaData.Artist
                        )
                    )
            }
                );
            var actual = default(ISortParserResult);

            Assert.IsTrue(this.Core.Components.SortParser.TryParse(
                              sort,
                              out actual
                              ));
            Assert.AreEqual(expected, actual);
        }