Skip to content

Commit

Permalink
Revert "Chore(prql): rewrite tests to use validate_all() (#4097)"
Browse files Browse the repository at this point in the history
This reverts commit 75e6406.
  • Loading branch information
georgesittas committed Sep 10, 2024
1 parent 7100be7 commit 0ed0264
Showing 1 changed file with 61 additions and 167 deletions.
228 changes: 61 additions & 167 deletions tests/dialects/test_prql.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,183 +5,77 @@ class TestPRQL(Validator):
dialect = "prql"

def test_prql(self):
self.validate_all(
"from x",
write={
"": "SELECT * FROM x",
},
)
self.validate_all(
"from x derive a + 1",
write={
"": "SELECT *, a + 1 FROM x",
},
)
self.validate_all(
"from x derive x = a + 1",
write={
"": "SELECT *, a + 1 AS x FROM x",
},
)
self.validate_all(
# "Parentheses are not required for expressions that do not contain function calls, for example: foo + bar."
# https://prql-lang.org/book/reference/syntax/operators.html?highlight=parenth#parentheses
"from x derive a + 1",
write={
"": "SELECT *, a + 1 FROM x",
},
)
self.validate_all(
"from x derive {x = a + 1, b}",
write={
"": "SELECT *, a + 1 AS x, b FROM x",
},
)
self.validate_all(
# TODO: Fix this test: `derive` should add columns.
# https://prql-lang.org/book/reference/stdlib/transforms/derive.html
"from x select {y = a + 1, 2}",
write={
"": "SELECT a + 1 AS y, 2 FROM x",
},
)
self.validate_all(
"from x take 10",
write={
"": "SELECT * FROM x LIMIT 10",
},
)
self.validate_all(
"from x take 5",
write={
"": "SELECT * FROM x LIMIT 5",
},
)
self.validate_all(
"from x filter age > 25",
write={
"": "SELECT * FROM x WHERE age > 25",
},
)
self.validate_all(
"from x filter age > 25 derive {x = a + 1, b}",
write={
"": "SELECT *, a + 1 AS x, b FROM x WHERE age > 25",
},
)
self.validate_all(
"from x filter dept != 'IT'",
write={
"": "SELECT * FROM x WHERE dept <> 'IT'",
},
)
self.validate_all(
"from x filter p == 'product' select {a, b}",
write={
"": "SELECT a, b FROM x WHERE p = 'product'",
},
)
self.validate_all(
"from x filter age > 25 && age < 27",
write={
"": "SELECT * FROM x WHERE age > 25 AND age < 27",
},
)
self.validate_all(
"from x filter (age > 25 && age < 27)",
write={
"": "SELECT * FROM x WHERE (age > 25 AND age < 27)",
},
)
self.validate_all(
"from x filter (age > 25 || age < 27)",
write={
"": "SELECT * FROM x WHERE (age > 25 OR age < 27)",
},
)
self.validate_all(
self.validate_identity("from x", "SELECT * FROM x")
self.validate_identity("from x derive a + 1", "SELECT *, a + 1 FROM x")
self.validate_identity("from x derive x = a + 1", "SELECT *, a + 1 AS x FROM x")
self.validate_identity("from x derive {a + 1}", "SELECT *, a + 1 FROM x")
self.validate_identity("from x derive {x = a + 1, b}", "SELECT *, a + 1 AS x, b FROM x")
self.validate_identity(
"from x derive {x = a + 1, b} select {y = x, 2}", "SELECT a + 1 AS y, 2 FROM x"
)
self.validate_identity("from x take 10", "SELECT * FROM x LIMIT 10")
self.validate_identity("from x take 10 take 5", "SELECT * FROM x LIMIT 5")
self.validate_identity("from x filter age > 25", "SELECT * FROM x WHERE age > 25")
self.validate_identity(
"from x derive {x = a + 1, b} filter age > 25",
"SELECT *, a + 1 AS x, b FROM x WHERE age > 25",
)
self.validate_identity("from x filter dept != 'IT'", "SELECT * FROM x WHERE dept <> 'IT'")
self.validate_identity(
"from x filter p == 'product' select { a, b }", "SELECT a, b FROM x WHERE p = 'product'"
)
self.validate_identity(
"from x filter age > 25 filter age < 27", "SELECT * FROM x WHERE age > 25 AND age < 27"
)
self.validate_identity(
"from x filter (age > 25 && age < 27)", "SELECT * FROM x WHERE (age > 25 AND age < 27)"
)
self.validate_identity(
"from x filter (age > 25 || age < 27)", "SELECT * FROM x WHERE (age > 25 OR age < 27)"
)
self.validate_identity(
"from x filter (age > 25 || age < 22) filter age > 26 filter age < 27",
write={
"": "SELECT * FROM x WHERE ((age > 25 OR age < 22) AND age > 26) AND age < 27",
},
"SELECT * FROM x WHERE ((age > 25 OR age < 22) AND age > 26) AND age < 27",
)
self.validate_all(
self.validate_identity(
"from x sort age",
write={
"": "SELECT * FROM x ORDER BY age",
},
"SELECT * FROM x ORDER BY age",
)
self.validate_all(
# "from x sort {-age}", # TODO: Fix test to be this.
# "from x sort -age",
self.validate_identity(
"from x sort {-age}",
write={
"": "SELECT * FROM x ORDER BY age DESC",
},
"SELECT * FROM x ORDER BY age DESC",
)
self.validate_all(
self.validate_identity(
"from x sort {age, name}",
write={
"": "SELECT * FROM x ORDER BY age, name",
},
"SELECT * FROM x ORDER BY age, name",
)
self.validate_all(
self.validate_identity(
"from x sort {-age, +name}",
write={
"": "SELECT * FROM x ORDER BY age DESC, name",
},
)
self.validate_all(
"from x append y",
write={
"": "SELECT * FROM x UNION ALL SELECT * FROM y",
},
)
self.validate_all(
"from x remove y",
write={
"": "SELECT * FROM x EXCEPT ALL SELECT * FROM y",
},
)
self.validate_all(
"from x intersect y",
write={
"": "SELECT * FROM x INTERSECT ALL SELECT * FROM y",
},
)
self.validate_all(
"SELECT * FROM x ORDER BY age DESC, name",
)
self.validate_identity("from x append y", "SELECT * FROM x UNION ALL SELECT * FROM y")
self.validate_identity("from x remove y", "SELECT * FROM x EXCEPT ALL SELECT * FROM y")
self.validate_identity(
"from x intersect y", "SELECT * FROM x INTERSECT ALL SELECT * FROM y"
)
self.validate_identity(
"from x filter a == null filter null != b",
write={
"": "SELECT * FROM x WHERE a IS NULL AND NOT b IS NULL",
},
"SELECT * FROM x WHERE a IS NULL AND NOT b IS NULL",
)
self.validate_all(
self.validate_identity(
"from x filter (a > 1 || null != b || c != null)",
write={
"": "SELECT * FROM x WHERE (a > 1 OR NOT b IS NULL OR NOT c IS NULL)",
},
)
self.validate_all(
"from a aggregate {average x}",
write={
"": "SELECT AVG(x) FROM a",
},
)
self.validate_all(
"from a aggregate {average x, min y, ct = sum z}",
write={
"": "SELECT AVG(x), MIN(y), COALESCE(SUM(z), 0) AS ct FROM a",
},
)
self.validate_all(
"from a aggregate {average x, min y, sum z}",
write={
"": "SELECT AVG(x), MIN(y), COALESCE(SUM(z), 0) FROM a",
},
)
self.validate_all(
"from a aggregate {min y, b = stddev x, max z}",
write={
"": "SELECT MIN(y), STDDEV(x) AS b, MAX(z) FROM a",
},
"SELECT * FROM x WHERE (a > 1 OR NOT b IS NULL OR NOT c IS NULL)",
)
self.validate_identity("from a aggregate { average x }", "SELECT AVG(x) FROM a")
self.validate_identity(
"from a aggregate { average x, min y, ct = sum z }",
"SELECT AVG(x), MIN(y), COALESCE(SUM(z), 0) AS ct FROM a",
)
self.validate_identity(
"from a aggregate { average x, min y, sum z }",
"SELECT AVG(x), MIN(y), COALESCE(SUM(z), 0) FROM a",
)
self.validate_identity(
"from a aggregate { min y, b = stddev x, max z }",
"SELECT MIN(y), STDDEV(x) AS b, MAX(z) FROM a",
)

0 comments on commit 0ed0264

Please sign in to comment.