def test_and(aggregator): construction = ((aggregator.centre == mock.Gaussian) & (aggregator.centre.x == 0)) assert construction == q.Q( "centre", q.And( q.T(mock.Gaussian), q.Q( "x", q.V( "=", 0 ) ) ) )
def test_complicated(self, less_than, greater_than): first = q.Q("a", q.Q("b", q.And(q.Q("c", less_than), greater_than))) second = q.Q("a", q.Q("b", q.Q("c", greater_than))) combined = q.Q( "a", q.Q("b", q.And(q.Q("c", q.And(less_than, greater_than)), greater_than))) assert first & second == combined
def test_with_string(self): query = q.Q("a", q.SV("=", 'value')) assert query.query == ("SELECT parent_id " "FROM object AS o " "JOIN string_value AS sv " "ON o.id = sv.id " "WHERE (o.name = 'a' " "AND sv.value = 'value')")
def test_with_value(self): query = q.Q("a", q.V("=", 1)) assert query.query == ("SELECT parent_id " "FROM object AS o " "JOIN value AS v " "ON o.id = v.id " "WHERE (o.name = 'a' " "AND v.value = 1)")
def for_name(name: str) -> q.Q: """ Create a query for fits based on the name of a top level instance attribute Parameters ---------- name The name of the attribute. e.g. galaxies Returns ------- A query generating object """ return q.Q(name)
def test_second(): assert q.Q("a") & q.Q("a", q.Q("b")) == q.Q("a", q.Q("b"))
def test_simple(aggregator): assert aggregator.centre == q.Q("centre")
def make_second_level(less_than, greater_than): return q.Q("a", q.And(less_than, q.Q('b', greater_than)))
def test_trivial(): assert q.Q("a") & q.Q("a") == q.Q("a")
def test_with_string(aggregator): assert (aggregator.centre == "centre") == q.Q("centre", q.SV("=", "centre"))
def test_less_than(aggregator): assert (aggregator.centre < 1) == q.Q("centre", q.V("<", 1))
def test_less_than(aggregator): assert (aggregator.model.centre < 1).query == q.Q("centre", q.V("<", 1)).query
def test_third_level(aggregator): assert (aggregator.lens.centre.x == 1) == q.Q("lens", q.Q("centre", q.Q("x", q.V("=", 1))))
def test_with_string(aggregator): assert (aggregator.model.centre == "centre").query == q.Q( "centre", q.SV("=", "centre")).query
def test_greater_than(aggregator): assert (aggregator.model.centre > 1).query == q.Q("centre", q.V(">", 1)).query
def test_simple(aggregator): assert aggregator.model.centre.query == q.Q("centre").query
def test_with_type(aggregator): assert (aggregator.model.centre == af.Gaussian).query == q.Q( "centre", q.T(af.Gaussian)).query
def test_with_value(aggregator): assert (aggregator.model.centre == 1).query == q.Q("centre", q.V("=", 1)).query
def test_with_value(aggregator): assert (aggregator.centre == 1) == q.Q("centre", q.V("=", 1))
def test_less_than_equals(aggregator): assert (aggregator.model.centre <= 1).query == q.Q("centre", q.V("<=", 1)).query
def test_second_level(aggregator): assert (aggregator.lens.centre == 1) == q.Q("lens", q.Q("centre", q.V("=", 1)))
def test_and(aggregator): construction = ((aggregator.model.centre == af.Gaussian) & (aggregator.model.centre.x == 0)) assert construction.query == q.Q( "centre", q.And(q.T(af.Gaussian), q.Q("x", q.V("=", 0)))).query
def test_with_type(aggregator): assert (aggregator.centre == mock.Gaussian) == q.Q("centre", q.T(mock.Gaussian))
def test_greater_than_equals(aggregator): assert (aggregator.centre >= 1) == q.Q("centre", q.V(">=", 1))
def test_greater_than(aggregator): assert (aggregator.centre > 1) == q.Q("centre", q.V(">", 1))
def make_simple_and(less_than, greater_than): return q.Q("a", q.And(less_than, greater_than))
def test_less_than_equals(aggregator): assert (aggregator.centre <= 1) == q.Q("centre", q.V("<=", 1))
def make_simple_or(less_than, greater_than): return q.Q("a", q.Or(less_than, greater_than))
def test_and_commutativity(): a_and_b = q.And(q.Q("a"), q.Q("b")) combined = a_and_b & q.Q("c") assert combined == q.And(q.Q("a"), q.Q("b"), q.Q("c")) assert len(combined.conditions) == 3
def test_single_argument(): assert isinstance(q.And(q.Q("a")), q.Q)