public void Can_build_predicate_with_in_list_through_null_property() { var b = new JsonQueryCompiler(); var d = new { Foo = new { Bar = (object)null } }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo.Bar.Blah"] = new JObject() { ["$in"] = new JArray("test1", "test2", "test3", "blah", "blah"), } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(false); }
public void Can_navigate_two_paths_from_starting_point() { var e = new JObject() { ["Root"] = new JObject() { ["PropertyOne"] = new JObject() { ["Value"] = "val2", }, ["PropertyTwo"] = new JObject() { ["SubProperty"] = new JObject() { ["Category"] = "test", ["Type"] = "Value" } } } }; var q = new JObject() { ["^.Root.PropertyOne.Value"] = "val2", ["<.Type"] = "Value" }; JsonQueryCompiler.Matches(e["Root"]["PropertyOne"]["Value"], q).Should().BeFalse(); JsonQueryCompiler.Matches(e["Root"]["PropertyTwo"]["SubProperty"]["Type"], q).Should().BeTrue(); }
public void Can_build_or_statement_that_fails() { var b = new JsonQueryCompiler(); var d = new { Foo = 123, Bar = 456 }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["$or"] = new JArray() { new JObject() { ["Foo"] = 1 }, new JObject() { ["Bar"] = 2 }, } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(false); }
public void Can_match_through_null_value() { var f = new JObject() { ["Foo"] = new JObject() { ["$is"] = "foo" } }; JsonQueryCompiler.Matches((JObject)null, f).Should().BeFalse(); }
public void Can_navigate_to_parent_of_null_and_get_null() { var e = new JObject() { }; var q = new JObject() { ["<.<.<.Value"] = "Value" }; JsonQueryCompiler.Matches(e, q).Should().BeFalse(); }
public void Can_match_nested_property_through_null_dictionary_on_strongly_typed_object() { var o = new ObjectA() { }; var e = new JObject() { ["Bar.Item1.Foo"] = new JObject() { ["$in"] = new JArray("a", "b"), } }; JsonQueryCompiler.Matches(o, e).Should().BeFalse(); }
public void Can_match_through_null_property_value_two_layers() { var d = new JObject() { ["Foo"] = null }; var f = new JObject() { ["Foo.Bar"] = new JObject() { ["$is"] = "foo" } }; JsonQueryCompiler.Matches(d, f).Should().BeFalse(); }
public void Can_navigate_to_parent() { var e = new JObject() { ["Property"] = new JObject() { ["Value"] = "Value" } }; var q = new JObject() { ["<.Value"] = "Value" }; JsonQueryCompiler.Matches(e["Property"]["Value"], q).Should().BeTrue(); }
public void Can_build_predicate_across_jobject_with_equality() { var b = new JsonQueryCompiler(); var d = new JObject() { ["Foo"] = "bar" }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = "bar" }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(true); }
public void Can_execute_predicate_function() { var d = new JObject() { ["Foo"] = "bar" }; var f = new JObject() { ["Foo"] = new JObject() { ["$is"] = "bar" } }; JsonQueryCompiler.PredicateFunc <JObject>(f)(d).Should().BeTrue(); JsonQueryCompiler.PredicateFunc <JObject>(f)(d).Should().BeTrue(); }
public void Can_match_nested_property_through_null_returned_by_dictionary() { var d = new { Bar = new Dictionary <string, Tuple <string, string> >() { ["Foo"] = null } }; var e = new JObject() { ["Bar.Foo.Item1"] = new JObject() { ["$in"] = new JArray("a", "b"), } }; JsonQueryCompiler.Matches(d, e).Should().BeFalse(); }
public void Can_match_nested_property_value_not_equal_to() { var d = new JObject() { ["Foo"] = new JObject() { ["Bar"] = "dsa" } }; var e = new JObject() { ["Foo.Bar"] = new JObject() { ["$is"] = "asd" } }; JsonQueryCompiler.Matches(d, e).Should().BeFalse(); }
public void Can_match_nested_property_value() { var d = new JObject() { ["Foo"] = new JObject() { ["Bar"] = "string" } }; var e = new JObject() { ["Foo.Bar"] = new JObject() { ["$is"] = "string" } }; JsonQueryCompiler.Matches(d, e).Should().BeTrue(); }
public void Can_build_predicate_with_in_multitype_1() { var b = new JsonQueryCompiler(); var d = new { Foo = 3 }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = new JObject() { ["$in"] = new JArray("test1", null, 3), } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(false); }
public void Can_build_predicate_with_multiple_equality() { var b = new JsonQueryCompiler(); var d = new { Foo1 = "bar", Foo2 = "joe", }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo1"] = "bar", ["Foo2"] = "joe" }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(true); }
public void Can_build_predicate_with_greaterthanequalto() { var b = new JsonQueryCompiler(); var d = new { Foo = 125 }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = new JObject() { ["$gte"] = 125, } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(true); }
public void Can_build_predicate_with_contains_string() { var b = new JsonQueryCompiler(); var d = new { Foo = "zebra's cannot be fuzzy" }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = new JObject() { ["$contains"] = "fuzzy", } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(true); }
public void Can_build_predicate_with_contains_string_failed_equality() { var b = new JsonQueryCompiler(); var d = new { Foo = "spinach salad" }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = new JObject() { ["$contains"] = "kale", } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(false); }
public void Can_build_predicate_with_in_list_string_failed_equality() { var b = new JsonQueryCompiler(); var d = new { Foo = "randomTest" }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = new JObject() { ["$in"] = new JArray("test1", "test2", "test3", "test4", "test5"), } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(false); }
public void Can_build_predicate_with_not_in_list_string() { var b = new JsonQueryCompiler(); var d = new { Foo = "kitten" }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = new JObject() { ["!$in"] = new JArray("test1", "test2", "test3", "test4", "test5"), } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(true); }
public void Can_build_predicate_with_lessthanequalto_with_failed_equality() { var b = new JsonQueryCompiler(); var d = new { Foo = 125 }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = new JObject() { ["$lte"] = 119, } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(false); }
public void Can_build_predicate_with_not_contains_string() { var b = new JsonQueryCompiler(); var d = new { Foo = "panda panda panda" }; var p = Expression.Parameter(d.GetType()); var e = b.Predicate(p, new JObject() { ["Foo"] = new JObject() { ["!$contains"] = "black bear", } }); var r = (bool)e.Compile().DynamicInvoke(d); r.Should().Be(true); }