;; lib/minikanren/tests/sortedo.sx — checks list is non-decreasing.

(mk-test
  "sortedo-empty"
  (run* q (sortedo (list)))
  (list (make-symbol "_.0")))

(mk-test
  "sortedo-singleton"
  (run* q (sortedo (list 42)))
  (list (make-symbol "_.0")))

(mk-test
  "sortedo-ascending"
  (run* q (sortedo (list 1 2 3 4)))
  (list (make-symbol "_.0")))

(mk-test
  "sortedo-with-equal-adjacent"
  (run*
    q
    (sortedo (list 1 1 2 2 3)))
  (list (make-symbol "_.0")))

(mk-test
  "sortedo-out-of-order-fails"
  (run* q (sortedo (list 1 3 2)))
  (list))

(mk-test
  "sortedo-descending-fails"
  (run* q (sortedo (list 3 2 1)))
  (list))

(mk-test
  "sortedo-pair-equal"
  (run* q (sortedo (list 5 5)))
  (list (make-symbol "_.0")))

(mk-tests-run!)
