From 0ed026444cfe3111ba5aa940944e8c277d5b0ec5 Mon Sep 17 00:00:00 2001 From: George Sittas Date: Tue, 10 Sep 2024 12:08:21 +0300 Subject: [PATCH] Revert "Chore(prql): rewrite tests to use `validate_all()` (#4097)" This reverts commit 75e640672eef0ddf752ee36dbc6f904f8e06510f. --- tests/dialects/test_prql.py | 228 ++++++++++-------------------------- 1 file changed, 61 insertions(+), 167 deletions(-) diff --git a/tests/dialects/test_prql.py b/tests/dialects/test_prql.py index 3067aa289f..5b438f1046 100644 --- a/tests/dialects/test_prql.py +++ b/tests/dialects/test_prql.py @@ -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", )