racket/collects/htdp/Test/matrix-test.ss
Matthias Felleisen a5d04fdfe4 testing done
svn: r9742
2008-05-08 15:01:56 +00:00

57 lines
1.9 KiB
Scheme

;; The first three lines of this file were inserted by DrScheme. They record metadata
;; about the language level of this file in a form that our tools can easily process.
#reader(lib "htdp-intermediate-lambda-reader.ss" "lang")((modname matrix-test) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ())))
;(require (lib "matrix-invisible.ss" "htdp"))
(require (lib "matrix.ss" "htdp"))
(define r1 '((a00 a01 a02)
(a10 a11 a12)))
(define m1 (rectangle->matrix r1))
(check-expect (matrix? m1) true)
(check-expect (matrix-rows m1) 2)
(check-expect (matrix-cols m1) 3)
(check-expect (matrix->rectangle m1) r1)
(define x (random 2))
(define y (random 3))
(check-expect (matrix-ref (make-matrix 2 3 '(a00 a01 a02 a10 a11 a12)) x y)
(matrix-ref m1 x y))
(check-expect
(matrix-ref (build-matrix 2 3 (lambda (row col) (matrix-ref m1 row col))) x y)
(matrix-ref m1 x y))
(define lpons (list (make-posn 0 0)
(make-posn 1 0)
(make-posn 0 1)
(make-posn 1 2)
(make-posn 1 1)
(make-posn 0 2)))
(define m2
(foldl (lambda (x m) (matrix-set m (posn-x x) (posn-y x) 1)) m1 lpons))
(check-expect 1 (matrix-ref m2 (random 2) (random 3)))
(define (is1 x) (= x 1))
(check-expect (matrix-where? m2 is1)
(list (make-posn 0 0) (make-posn 0 1) (make-posn 0 2)
(make-posn 1 0) (make-posn 1 1) (make-posn 1 2)))
(define (is2 x) (= x 2))
(check-expect (matrix-where? m2 is2) empty)
(define m1-minor (matrix-minor m1 1 1))
(check-expect (matrix-ref m1-minor 0 0) 'a00)
(check-expect (matrix-ref m1-minor 0 1) 'a02)
;; --- IMPERATIVE ---
(check-expect (matrix-ref m1 0 0) 'a00)
(define m1-modified (matrix-set! m1 0 0 'xxx)) ;; <-------- uncomment this and the test engine breaks
(check-expect (matrix-ref m1 0 0) 'xxx)