def test_from_kwargs_split(): assert From(module=1, depth=2, depth_lt=3) == From(Query(module=1), Query(depth=2, depth_lt=3)) assert repr(From(module=1, depth=2, depth_lt=3)).replace( '<hunter._', '<hunter.' ) == ( "<hunter.predicates.From: condition=<hunter.predicates.Query: query_eq=(('module', 1),)>, " "predicate=<hunter.predicates.Query: query_eq=(('depth', 2),) query_lt=(('depth', 3),)>, watermark=0>" )
def test_and_or_kwargs(): assert And(module=1, function=2) == Query(module=1, function=2) assert Or(module=1, function=2) == Or(Query(module=1), Query(function=2)) assert And(3, module=1, function=2) == And(3, Query(module=1, function=2)) assert Or(3, module=1, function=2) == Or(3, Query(module=1), Query(function=2))
def test_backlog_filter(): class MyAction(ColorStreamAction): def __eq__(self, other): return True assert Backlog(Q(), action=MyAction).filter(function=1) == _Backlog( condition=Q(), filter=Query(function=1), action=MyAction) assert Backlog(Q(), action=MyAction, filter=Q(module=1)).filter(function=2) == _Backlog( condition=Q(), filter=And(Query(module=1), Query(function=2)), action=MyAction) def blabla(): pass assert Backlog(Q(), action=MyAction, filter=blabla).filter(function=1) == _Backlog( condition=Q(), filter=And(blabla, Query(function=1)), action=MyAction) assert Backlog(Q(), action=MyAction, filter=Q(module=1)).filter( blabla, function=2) == _Backlog(condition=Q(), filter=And(Query(module=1), blabla, Query(function=2)), action=MyAction)
def test_not(mockevent): assert Not(1).predicate == 1 assert ~Or(1, 2) == Not(Or(1, 2)) assert ~And(1, 2) == Not(And(1, 2)) assert ~Not(1) == 1 assert ~Query(module=1) | ~Query(module=2) == Not( And(Query(module=1), Query(module=2))) assert ~Query(module=1) & ~Query(module=2) == Not( Or(Query(module=1), Query(module=2))) assert ~Query(module=1) | Query(module=2) == Or(Not(Query(module=1)), Query(module=2)) assert ~Query(module=1) & Query(module=2) == And(Not(Query(module=1)), Query(module=2)) assert ~(Query(module=1) & Query(module=2)) == Not( And(Query(module=1), Query(module=2))) assert ~(Query(module=1) | Query(module=2)) == Not( Or(Query(module=1), Query(module=2))) assert repr(~Or(1, 2)) == repr(Not(Or(1, 2))) assert repr(~And(1, 2)) == repr(Not(And(1, 2))) assert repr(~Query(module=1) | ~Query(module=2)) == repr( Not(And(Query(module=1), Query(module=2)))) assert repr(~Query(module=1) & ~Query(module=2)) == repr( Not(Or(Query(module=1), Query(module=2)))) assert repr(~(Query(module=1) & Query(module=2))) == repr( Not(And(Query(module=1), Query(module=2)))) assert repr(~(Query(module=1) | Query(module=2))) == repr( Not(Or(Query(module=1), Query(module=2)))) assert Not(Q(module=__name__))(mockevent) is False
def test_and_or_kwargs(): assert And(1, function=2) == And(1, Query(function=2)) assert Or(1, function=2) == Or(1, Query(function=2))
def test_matching(expr, mockevent, expected): assert Query(**expr)(mockevent) == expected
def test_predicate_matching(expr, inp, expected): assert Query(**expr)(inp) == expected
def test_predicate_not(): assert Not(1).predicate == 1 assert ~Or(1, 2) == Not(Or(1, 2)) assert ~And(1, 2) == Not(And(1, 2)) assert ~Not(1) == 1 assert ~Query(module=1) | ~Query(module=2) == Not( And(Query(module=1), Query(module=2))) assert ~Query(module=1) & ~Query(module=2) == Not( Or(Query(module=1), Query(module=2))) assert ~Query(module=1) | Query(module=2) == Or(Not(Query(module=1)), Query(module=2)) assert ~Query(module=1) & Query(module=2) == And(Not(Query(module=1)), Query(module=2)) assert ~(Query(module=1) & Query(module=2)) == Not( And(Query(module=1), Query(module=2))) assert ~(Query(module=1) | Query(module=2)) == Not( Or(Query(module=1), Query(module=2))) assert repr(~Or(1, 2)) == repr(Not(Or(1, 2))) assert repr(~And(1, 2)) == repr(Not(And(1, 2))) assert repr(~Query(module=1) | ~Query(module=2)) == repr( Not(And(Query(module=1), Query(module=2)))) assert repr(~Query(module=1) & ~Query(module=2)) == repr( Not(Or(Query(module=1), Query(module=2)))) assert repr(~(Query(module=1) & Query(module=2))) == repr( Not(And(Query(module=1), Query(module=2)))) assert repr(~(Query(module=1) | Query(module=2))) == repr( Not(Or(Query(module=1), Query(module=2)))) assert Not(Q(module=1))({'module': 1}) == False