;;; ;;; Time-stamp: <06/01/12 11:45:06 nhw> ;;; ;;; Copyright (C) 2005 by Noel Welsh. ;;; ;;; This library is free software; you can redistribute it ;;; and/or modify it under the terms of the GNU Lesser ;;; General Public License as published by the Free Software ;;; Foundation; either version 2.1 of the License, or (at ;;; your option) any later version. ;;; This library 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 Lesser General Public ;;; License for more details. ;;; You should have received a copy of the GNU Lesser ;;; General Public License along with this library; if not, ;;; write to the Free Software Foundation, Inc., 59 Temple ;;; Place, Suite 330, Boston, MA 02111-1307 USA ;;; Author: Noel Welsh <noelwelsh@yahoo.com> ;; ;; ;; Commentary: (module random-test mzscheme (require (planet "test.ss" ("schematics" "schemeunit.plt" 1 1)) (planet "macro.ss" ("schematics" "macro.plt" 1 0))) (require "random.ss") (provide random-tests) (define random-tests (make-test-suite "All tests for random" (make-test-case "choose/uniform chooses from in range, and all chosen at least once" (let-values (((zeros ones twos) (for ((i 0 1000) (zeros 0) (ones 0) (twos 1)) (case (choose/uniform #(0 1 2)) ((0) (values (add1 zeros) ones twos)) ((1) (values zeros (add1 ones) twos)) ((2) (values zeros ones (add1 twos))) (else (fail-assertion)))))) (assert-false (zero? zeros)) (assert-false (zero? ones)) (assert-false (zero? twos)))) )) )