Exemple #1
0
        public void FilterExistWithAndOr()
        {
            JsonDocumentPath    path          = new JsonDocumentPath("[?(@.name&&@.title||@.pie)]");
            CompositeExpression andExpression = (CompositeExpression)((QueryFilter)path.Filters[0]).Expression;

            Assert.Equal(QueryOperator.And, andExpression.Operator);
            Assert.Equal(2, andExpression.Expressions.Count);

            var first      = (BooleanQueryExpression)andExpression.Expressions[0];
            var firstPaths = (List <PathFilter>)first.Left;

            Assert.Equal("name", ((FieldFilter)firstPaths[0]).Name);
            Assert.Equal(QueryOperator.Exists, first.Operator);

            CompositeExpression orExpression = (CompositeExpression)andExpression.Expressions[1];

            Assert.Equal(2, orExpression.Expressions.Count);

            var orFirst      = (BooleanQueryExpression)orExpression.Expressions[0];
            var orFirstPaths = (List <PathFilter>)orFirst.Left;

            Assert.Equal("title", ((FieldFilter)orFirstPaths[0]).Name);
            Assert.Equal(QueryOperator.Exists, orFirst.Operator);

            var orSecond      = (BooleanQueryExpression)orExpression.Expressions[1];
            var orSecondPaths = (List <PathFilter>)orSecond.Left;

            Assert.Equal("pie", ((FieldFilter)orSecondPaths[0]).Name);
            Assert.Equal(QueryOperator.Exists, orSecond.Operator);
        }
Exemple #2
0
        public void SinglePropertyWithRootWithStartAndEndWhitespace()
        {
            JsonDocumentPath path = new JsonDocumentPath(" $.Blah ");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal("Blah", ((FieldFilter)path.Filters[0]).Name);
        }
Exemple #3
0
        public void SingleScanWithRoot()
        {
            JsonDocumentPath path = new JsonDocumentPath("$..Blah");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal("Blah", ((ScanFilter)path.Filters[0]).Name);
        }
Exemple #4
0
        public void IndexerOnlyWithWhitespace()
        {
            JsonDocumentPath path = new JsonDocumentPath("[  10  ]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(10, ((ArrayIndexFilter)path.Filters[0]).Index);
        }
Exemple #5
0
        public void RootArrayNoDot()
        {
            JsonDocumentPath path = new JsonDocumentPath("$[1]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(1, ((ArrayIndexFilter)path.Filters[0]).Index);
        }
Exemple #6
0
        public void SingleQuotedPropertyWithDots()
        {
            JsonDocumentPath path = new JsonDocumentPath("['Blah.Ha']");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal("Blah.Ha", ((FieldFilter)path.Filters[0]).Name);
        }
Exemple #7
0
        public void IndexerOnly()
        {
            JsonDocumentPath path = new JsonDocumentPath("[111119990]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(111119990, ((ArrayIndexFilter)path.Filters[0]).Index);
        }
Exemple #8
0
        public void QuotedWildcardPropertyWithRoot()
        {
            JsonDocumentPath path = new JsonDocumentPath("$.['*']");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal("*", ((FieldFilter)path.Filters[0]).Name);
        }
Exemple #9
0
        public void FilterWithFloatExp()
        {
            JsonDocumentPath       path        = new JsonDocumentPath("[?(@.name>=5.56789e+0)]");
            BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression;

            Assert.Equal(5.56789e+0, ((JsonElement)expressions.Right).GetDouble());
        }
Exemple #10
0
        public void FilterWithNegativeInteger()
        {
            JsonDocumentPath       path        = new JsonDocumentPath("[?(@.name>=-12)]");
            BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression;

            Assert.Equal(-12, ((JsonElement)expressions.Right).GetInt32());
        }
Exemple #11
0
        public void WildcardArray()
        {
            JsonDocumentPath path = new JsonDocumentPath("[*]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(null, ((ArrayIndexFilter)path.Filters[0]).Index);
        }
Exemple #12
0
        public void FilterWithLessThan()
        {
            JsonDocumentPath       path        = new JsonDocumentPath("[?(@.name<null)]");
            BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression;

            Assert.Equal(QueryOperator.LessThan, expressions.Operator);
        }
Exemple #13
0
        public void FilterWithGreaterThanOrEquals()
        {
            JsonDocumentPath       path        = new JsonDocumentPath("[?(@.name>=null)]");
            BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression;

            Assert.Equal(QueryOperator.GreaterThanOrEquals, expressions.Operator);
        }
Exemple #14
0
        public void SingleProperty()
        {
            JsonDocumentPath path = new JsonDocumentPath("Blah");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal("Blah", ((FieldFilter)path.Filters[0]).Name);
        }
Exemple #15
0
        public void SingleQuotedPropertyWithBrackets()
        {
            JsonDocumentPath path = new JsonDocumentPath("['[*]']");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal("[*]", ((FieldFilter)path.Filters[0]).Name);
        }
Exemple #16
0
        public void WildcardScanWithRootWithWhitespace()
        {
            JsonDocumentPath path = new JsonDocumentPath("$..* ");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(null, ((ScanFilter)path.Filters[0]).Name);
        }
Exemple #17
0
        public void FilterWithScan()
        {
            JsonDocumentPath       path        = new JsonDocumentPath("[?(@..name<>null)]");
            BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression;
            List <PathFilter>      paths       = (List <PathFilter>)expressions.Left;

            Assert.Equal("name", ((ScanFilter)paths[0]).Name);
        }
Exemple #18
0
        public void SinglePropertyAndIndexer()
        {
            JsonDocumentPath path = new JsonDocumentPath("Blah[0]");

            Assert.Equal(2, path.Filters.Count);
            Assert.Equal("Blah", ((FieldFilter)path.Filters[0]).Name);
            Assert.Equal(0, ((ArrayIndexFilter)path.Filters[1]).Index);
        }
Exemple #19
0
        public void OnePropertyOneScan()
        {
            JsonDocumentPath path = new JsonDocumentPath("Blah..Two");

            Assert.Equal(2, path.Filters.Count);
            Assert.Equal("Blah", ((FieldFilter)path.Filters[0]).Name);
            Assert.Equal("Two", ((ScanFilter)path.Filters[1]).Name);
        }
Exemple #20
0
        public void TwoProperties()
        {
            JsonDocumentPath path = new JsonDocumentPath("Blah.Two");

            Assert.Equal(2, path.Filters.Count);
            Assert.Equal("Blah", ((FieldFilter)path.Filters[0]).Name);
            Assert.Equal("Two", ((FieldFilter)path.Filters[1]).Name);
        }
Exemple #21
0
        public void QueryTrue()
        {
            JsonDocumentPath path = new JsonDocumentPath("$.elements[?(true)]");

            Assert.Equal(2, path.Filters.Count);
            Assert.Equal("elements", ((FieldFilter)path.Filters[0]).Name);
            Assert.Equal(QueryOperator.Exists, ((QueryFilter)path.Filters[1]).Expression.Operator);
        }
Exemple #22
0
        public void WildcardArrayWithProperty()
        {
            JsonDocumentPath path = new JsonDocumentPath("[ * ].derp");

            Assert.Equal(2, path.Filters.Count);
            Assert.Equal(null, ((ArrayIndexFilter)path.Filters[0]).Index);
            Assert.Equal("derp", ((FieldFilter)path.Filters[1]).Name);
        }
Exemple #23
0
        public void SlicingIndexWhitespace()
        {
            JsonDocumentPath path = new JsonDocumentPath("[  -111119990  :  -3  :  -2  ]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(-111119990, ((ArraySliceFilter)path.Filters[0]).Start);
            Assert.Equal(-3, ((ArraySliceFilter)path.Filters[0]).End);
            Assert.Equal(-2, ((ArraySliceFilter)path.Filters[0]).Step);
        }
Exemple #24
0
        public void SlicingIndexEmptyStart()
        {
            JsonDocumentPath path = new JsonDocumentPath("[ : 1 : ]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(null, ((ArraySliceFilter)path.Filters[0]).Start);
            Assert.Equal(1, ((ArraySliceFilter)path.Filters[0]).End);
            Assert.Equal(null, ((ArraySliceFilter)path.Filters[0]).Step);
        }
Exemple #25
0
        public void MultipleIndexesWithWhitespace()
        {
            JsonDocumentPath path = new JsonDocumentPath("[   111119990  ,   3   ]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(2, ((ArrayMultipleIndexFilter)path.Filters[0]).Indexes.Count);
            Assert.Equal(111119990, ((ArrayMultipleIndexFilter)path.Filters[0]).Indexes[0]);
            Assert.Equal(3, ((ArrayMultipleIndexFilter)path.Filters[0]).Indexes[1]);
        }
Exemple #26
0
        public void SlicingIndex()
        {
            JsonDocumentPath path = new JsonDocumentPath("[111119990:3]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(111119990, ((ArraySliceFilter)path.Filters[0]).Start);
            Assert.Equal(3, ((ArraySliceFilter)path.Filters[0]).End);
            Assert.Equal(null, ((ArraySliceFilter)path.Filters[0]).Step);
        }
Exemple #27
0
        public void MultipleQuotedIndexesWithWhitespace()
        {
            JsonDocumentPath path = new JsonDocumentPath("[ '111119990' , '3' ]");

            Assert.Equal(1, path.Filters.Count);
            Assert.Equal(2, ((FieldMultipleFilter)path.Filters[0]).Names.Count);
            Assert.Equal("111119990", ((FieldMultipleFilter)path.Filters[0]).Names[0]);
            Assert.Equal("3", ((FieldMultipleFilter)path.Filters[0]).Names[1]);
        }
Exemple #28
0
        public void FilterWithRoot()
        {
            JsonDocumentPath       path        = new JsonDocumentPath("[?($.name>=12.1)]");
            BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression;
            List <PathFilter>      paths       = (List <PathFilter>)expressions.Left;

            Assert.Equal(2, paths.Count);
            Assert.IsType(typeof(RootFilter), paths[0]);
            Assert.IsType(typeof(FieldFilter), paths[1]);
        }
Exemple #29
0
        public void AdjacentIndexers()
        {
            JsonDocumentPath path = new JsonDocumentPath("[1][0][0][" + int.MaxValue + "]");

            Assert.Equal(4, path.Filters.Count);
            Assert.Equal(1, ((ArrayIndexFilter)path.Filters[0]).Index);
            Assert.Equal(0, ((ArrayIndexFilter)path.Filters[1]).Index);
            Assert.Equal(0, ((ArrayIndexFilter)path.Filters[2]).Index);
            Assert.Equal(int.MaxValue, ((ArrayIndexFilter)path.Filters[3]).Index);
        }
Exemple #30
0
        public void BooleanQuery_TwoValues()
        {
            JsonDocumentPath path = new JsonDocumentPath("[?(1 > 2)]");

            Assert.Equal(1, path.Filters.Count);
            BooleanQueryExpression booleanExpression = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression;

            Assert.Equal(1, ((JsonElement)booleanExpression.Left).GetInt32());
            Assert.Equal(2, ((JsonElement)booleanExpression.Right).GetInt32());
            Assert.Equal(QueryOperator.GreaterThan, booleanExpression.Operator);
        }