Ismael Figueroa Palet <ifiguer...@gmail.com> writes:

> I copied the quickcheck folder to my project, but I don't know how to use
> it :-(
> do you have any examples of how to use it? do I need to copy other
> collects, or do I have to use the full deinprogramm language?

No, you don't.  It can be used as a library.

Here's a few examples I use for testing (which can be run using
`(quickcheck <property>)'):

(define rev-app/
  (property ((xs (arbitrary-list arbitrary-integer))
             (ys (arbitrary-list arbitrary-integer)))
            (equal? (reverse (append xs ys)) (append (reverse ys) (reverse 
xs)))))

(define broken-rev-app/
  (property ((xs (arbitrary-list arbitrary-integer))
             (ys (arbitrary-list arbitrary-integer)))
            (equal? (reverse (append ys xs)) (append (reverse ys) (reverse 
xs)))))

(define char->integer/
  (property ((ch arbitrary-char))
            (char=? ch (integer->char (char->integer ch)))))

(define string->list/
  (property ((str arbitrary-string))
            (string=? str (list->string (string->list str)))))

(define vector->list/
  (property ((vec (arbitrary-vector arbitrary-integer)))
            (equal? vec (list->vector (vector->list vec)))))

(define map-append/
  (property ((proc (arbitrary-procedure arbitrary-integer arbitrary-char))
             (xs (arbitrary-list arbitrary-char))
             (ys (arbitrary-list arbitrary-char)))
            (equal? (map proc (append xs ys))
                    (append (map proc xs) (map proc ys)))))

(define ttt/
  (property ((a (arbitrary-record cons (list car cdr) arbitrary-integer 
arbitrary-integer)))
            (write (list 'aaa a)) (newline)
            #t))

(define max-le/
  (property ((x arbitrary-integer)
             (y arbitrary-integer))
    (==> (<= x y)
         (= (max x y) y))))

(define insert1/
  (property ((x arbitrary-integer)
             (xs (arbitrary-list arbitrary-integer)))
            (==> (list-sorted? xs <)
                 (trivial (null? xs) 
                          (list-sorted? (insert < x xs) <)))))

(define insert2/
  (property ((x arbitrary-integer)
             (xs (arbitrary-list arbitrary-integer)))
            (==> (list-sorted? xs <)
                 (collect (length xs) 
                          (list-sorted? (insert < x xs) <)))))

(define (insert <= x xs)
  (cond
   ((null? xs) (list x))
   ((<= x (car xs))
    (cons x xs))
   (else
    (cons (car xs) (insert <= x (cdr xs))))))

; This only tests whether the coarbitrary of arbitrary-real works in
; acceptable time.
(define xxx/
  (property ((x arbitrary-real)
             (p (arbitrary-procedure arbitrary-boolean arbitrary-real)))
            (or (p x)
                (not (p x)))))

(define non-assoc/
  (property ((a arbitrary-real)
             (b arbitrary-real)
             (c arbitrary-real))
            (= (+ (+ a b) c)
               (+ a (+ b c)))))

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to