;; 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 htdp/matrix-invisible) (require htdp/matrix) (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)