;; lib/minikanren/tests/partitiono.sx — partition list by predicate. (mk-test "partitiono-empty" (run* q (fresh (yes no) (partitiono (fn (x) (== x 1)) (list) yes no) (== q (list yes no)))) (list (list (list) (list)))) (mk-test "partitiono-by-equality" (run* q (fresh (yes no) (partitiono (fn (x) (== x 2)) (list 1 2 3 2 4) yes no) (== q (list yes no)))) (list (list (list 2 2) (list 1 3 4)))) (mk-test "partitiono-by-numeric-pred" (run* q (fresh (yes no) (partitiono (fn (x) (lto-i x 5)) (list 1 7 2 8 3) yes no) (== q (list yes no)))) (list (list (list 1 2 3) (list 7 8)))) (mk-test "partitiono-all-yes" (run* q (fresh (yes no) (partitiono (fn (x) (lto-i x 100)) (list 1 2 3) yes no) (== q (list yes no)))) (list (list (list 1 2 3) (list)))) (mk-test "partitiono-all-no" (run* q (fresh (yes no) (partitiono (fn (x) (lto-i 100 x)) (list 1 2 3) yes no) (== q (list yes no)))) (list (list (list) (list 1 2 3)))) (mk-tests-run!)