Skip to content

Commit 47157f7

Browse files
committed
test: Add CONDITIONED BY * EXCEPT tests
1 parent 2dec527 commit 47157f7

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

test/inferenceql/query/plan_test.cljc

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,9 @@
299299
(plan/plan)
300300
(plan/plan?))
301301
"table GENERATIVE JOIN model"
302+
"table GENERATIVE JOIN model CONDITIONED BY *"
303+
"table GENERATIVE JOIN model CONDITIONED BY * EXCEPT (VAR x)"
304+
"table GENERATIVE JOIN model CONDITIONED BY * EXCEPT VAR x, VAR y"
302305
"table GENERATIVE JOIN model CONDITIONED BY VAR x = 0"
303306
"table GENERATIVE JOIN model CONSTRAINED BY VAR x > 0"))
304307

@@ -311,10 +314,13 @@
311314
"table GENERATIVE JOIN model"
312315
"table GENERATIVE JOIN model GIVEN x"))
313316

314-
#?(:clj (deftest generative-join
315-
(are [query tbl expected] (let [env {"table" tbl "model" model}]
316-
(= expected (eval query env)))
317-
"table GENERATIVE JOIN model CONDITIONED BY VAR x = x" [{"x" "yes"}] [{"x" "yes" "y" "yes"}]
318-
"table GENERATIVE JOIN model CONDITIONED BY VAR x = x" [{"x" "no"}] [{"x" "no" "y" "no"}]
319-
"table GENERATIVE JOIN model CONDITIONED BY *" [{"x" "yes"}] [{"x" "yes" "y" "yes"}]
320-
"table GENERATIVE JOIN model CONDITIONED BY *" [{"x" "no"}] [{"x" "no" "y" "no"}])))
317+
#?(:clj
318+
(deftest generative-join
319+
(are [query tbl expected] (let [env {"table" tbl "model" model}]
320+
(= expected (eval query env)))
321+
"table GENERATIVE JOIN model CONDITIONED BY VAR x = x" [{"x" "yes"}] [{"x" "yes" "y" "yes"}]
322+
"table GENERATIVE JOIN model CONDITIONED BY VAR x = x" [{"x" "no"}] [{"x" "no" "y" "no"}]
323+
"table GENERATIVE JOIN model CONDITIONED BY *" [{"x" "yes"}] [{"x" "yes" "y" "yes"}]
324+
"table GENERATIVE JOIN model CONDITIONED BY *" [{"x" "no"}] [{"x" "no" "y" "no"}]
325+
"table GENERATIVE JOIN model CONDITIONED BY * EXCEPT VAR x" [{"y" "yes"}] [{"x" "yes" "y" "yes"}]
326+
"table GENERATIVE JOIN model CONDITIONED BY * EXCEPT (VAR x)" [{"y" "yes"}] [{"x" "yes" "y" "yes"}])))

test/inferenceql/query/strict/parser_test.cljc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
(are [s] (not (insta/failure? (parser/parse s)))
4141
"data GENERATIVE JOIN model"
4242
"data GENERATIVE JOIN model CONDITIONED BY VAR x = 0"
43+
"data GENERATIVE JOIN model CONDITIONED BY *"
44+
"data GENERATIVE JOIN model CONDITIONED BY * EXCEPT VAR x, VAR y"
45+
"data GENERATIVE JOIN model CONDITIONED BY * EXCEPT (VAR x)"
4346
"data GENERATIVE JOIN model CONSTRAINED BY VAR x > 0"))
4447

4548
(deftest generate-valid
@@ -51,4 +54,7 @@
5154
(deftest conditioned-by-valid
5255
(are [s] (not (insta/failure? (parser/parse s)))
5356
"SELECT * FROM (GENERATE * UNDER model CONDITIONED BY VAR x = x)"
54-
"SELECT * FROM (GENERATE * UNDER model CONDITIONED BY *)"))
57+
"SELECT * FROM (GENERATE * UNDER model CONDITIONED BY *)"
58+
"SELECT * FROM (GENERATE * UNDER model CONDITIONED BY * EXCEPT (VAR x))"
59+
"SELECT * FROM (GENERATE * UNDER model CONDITIONED BY * EXCEPT VAR x, VAR y)"
60+
"SELECT * FROM (GENERATE * UNDER model CONDITIONED BY * EXCEPT VAR x, VAR \"foo.bar\", VAR z)"))

test/inferenceql/query/strict_test.cljc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@
254254
"y" {"yes" 0.0 "no" 1.0}}}]]})
255255
q1 (comp first vals first #(q %1 %2 %3))]
256256
(is (= 0.5 (q1 "SELECT (PROBABILITY DENSITY OF VAR y = 'yes' UNDER model CONDITIONED BY VAR x = x) FROM data;"
257+
(with-meta [{}] {:iql/columns ["x" "y"]})
258+
{"model" model})))
259+
(is (= 0.5 (q1 "SELECT (PROBABILITY DENSITY OF VAR y = 'yes' UNDER (model CONDITIONED BY * EXCEPT VAR y)) FROM data;"
257260
(with-meta [{}] {:iql/columns ["x" "y"]})
258261
{"model" model})))))
259262

@@ -498,5 +501,15 @@
498501
(is (= 0.75 (q "SELECT PROBABILITY DENSITY OF VAR x = 'yes' UNDER model CONDITIONED BY VAR y = y FROM data"
499502
(with-meta [{}]
500503
{:iql/columns ["x" "y"]})))))
504+
505+
(testing "* except"
506+
(is (= 0.75 (q "SELECT PROBABILITY DENSITY OF VAR x = 'yes' UNDER model CONDITIONED BY * EXCEPT VAR x FROM data"
507+
(with-meta [{}]
508+
{:iql/columns ["x" "y"]}))))
509+
510+
(is (= 0.75 (q "SELECT PROBABILITY DENSITY OF VAR x = 'yes' UNDER model CONDITIONED BY * EXCEPT (VAR x) FROM data"
511+
(with-meta [{}]
512+
{:iql/columns ["x" "y"]})))))
513+
501514
(testing "in with"
502515
(is (= 0.0 (q "WITH model CONDITIONED BY VAR y = 'no' AS model: SELECT PROBABILITY DENSITY OF VAR x = x UNDER model FROM data" [{"x" "yes"}]))))))))

0 commit comments

Comments
 (0)