tests/amb-test.scm
#|  amb-test.scm: Test suite for amb.scm.
    Copyright (C) 2007 Will M. Farr <farr@mit.edu>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
|#

(module amb-test mzscheme
  (require (planet "test.ss" ("schematics" "schemeunit.plt" 2))
           "../amb.scm"
           (lib "list.ss" "srfi" "1"))
  
  (provide amb-test-suite)
  
  (define amb-test-suite
    (test-suite
     "amb.scm test suite"
     (test-case
      "amb-collect collects the correct values"
      (check-true
       (lset=
        equal?
        (amb-collect (let ((a (amb 1 2 3 4 5))
                           (b (amb 6 7 8 9 10)))
                       (if (= (+ a b) 11) (cons a b) (amb))))
        '((1 . 10) (2 . 9) (3 . 8) (4 . 7) (5 . 6))))))))