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); }
public void SinglePropertyWithRootWithStartAndEndWhitespace() { JsonDocumentPath path = new JsonDocumentPath(" $.Blah "); Assert.Equal(1, path.Filters.Count); Assert.Equal("Blah", ((FieldFilter)path.Filters[0]).Name); }
public void SingleScanWithRoot() { JsonDocumentPath path = new JsonDocumentPath("$..Blah"); Assert.Equal(1, path.Filters.Count); Assert.Equal("Blah", ((ScanFilter)path.Filters[0]).Name); }
public void IndexerOnlyWithWhitespace() { JsonDocumentPath path = new JsonDocumentPath("[ 10 ]"); Assert.Equal(1, path.Filters.Count); Assert.Equal(10, ((ArrayIndexFilter)path.Filters[0]).Index); }
public void RootArrayNoDot() { JsonDocumentPath path = new JsonDocumentPath("$[1]"); Assert.Equal(1, path.Filters.Count); Assert.Equal(1, ((ArrayIndexFilter)path.Filters[0]).Index); }
public void SingleQuotedPropertyWithDots() { JsonDocumentPath path = new JsonDocumentPath("['Blah.Ha']"); Assert.Equal(1, path.Filters.Count); Assert.Equal("Blah.Ha", ((FieldFilter)path.Filters[0]).Name); }
public void IndexerOnly() { JsonDocumentPath path = new JsonDocumentPath("[111119990]"); Assert.Equal(1, path.Filters.Count); Assert.Equal(111119990, ((ArrayIndexFilter)path.Filters[0]).Index); }
public void QuotedWildcardPropertyWithRoot() { JsonDocumentPath path = new JsonDocumentPath("$.['*']"); Assert.Equal(1, path.Filters.Count); Assert.Equal("*", ((FieldFilter)path.Filters[0]).Name); }
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()); }
public void FilterWithNegativeInteger() { JsonDocumentPath path = new JsonDocumentPath("[?(@.name>=-12)]"); BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression; Assert.Equal(-12, ((JsonElement)expressions.Right).GetInt32()); }
public void WildcardArray() { JsonDocumentPath path = new JsonDocumentPath("[*]"); Assert.Equal(1, path.Filters.Count); Assert.Equal(null, ((ArrayIndexFilter)path.Filters[0]).Index); }
public void FilterWithLessThan() { JsonDocumentPath path = new JsonDocumentPath("[?(@.name<null)]"); BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression; Assert.Equal(QueryOperator.LessThan, expressions.Operator); }
public void FilterWithGreaterThanOrEquals() { JsonDocumentPath path = new JsonDocumentPath("[?(@.name>=null)]"); BooleanQueryExpression expressions = (BooleanQueryExpression)((QueryFilter)path.Filters[0]).Expression; Assert.Equal(QueryOperator.GreaterThanOrEquals, expressions.Operator); }
public void SingleProperty() { JsonDocumentPath path = new JsonDocumentPath("Blah"); Assert.Equal(1, path.Filters.Count); Assert.Equal("Blah", ((FieldFilter)path.Filters[0]).Name); }
public void SingleQuotedPropertyWithBrackets() { JsonDocumentPath path = new JsonDocumentPath("['[*]']"); Assert.Equal(1, path.Filters.Count); Assert.Equal("[*]", ((FieldFilter)path.Filters[0]).Name); }
public void WildcardScanWithRootWithWhitespace() { JsonDocumentPath path = new JsonDocumentPath("$..* "); Assert.Equal(1, path.Filters.Count); Assert.Equal(null, ((ScanFilter)path.Filters[0]).Name); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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]); }
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); }
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]); }
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]); }
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); }
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); }