;;;; -*- mode:Scheme; -*- ;;;;

;;;; TEST RULES

(define (make-auto-rules)
  (clear-rules)
  (remember-rules
   ;; Add your rules here
   '(A1 IF
	(engine-starts yes)
	(engine-rotates yes)
	(headlights-work yes)
	THEN
	(repair is nothing))
   '(A2 IF
	(headlights-work no)
	THEN
	(repair is charge-battery))
   '(A3 IF
	(headlights-work yes)
	(engine-rotates no)
	(engine-starts no)
	THEN
	(repair is fix-starter-motor))
   '(A4 IF
	(headlights-work yes)
	(engine-rotates yes)
	(engine-starts no)
	THEN
	(repair is add-fuel))
   )
  (format #t "~%Auto rules recorded."))

;;;; TEST DATA

(define (make-test-1)
  (clear-assertions)
  (remember-assertions
   '(engine-starts yes)
   '(engine-rotates yes)
   '(headlights-work yes))
  (format #t "~%Test-1 recorded:")
  (display-assertions *assertions*))

(define (make-test-2)
  (clear-assertions)
  (remember-assertions
   '(engine-starts no)
   '(engine-rotates no)
   '(headlights-work no))
  (format #t "~%Test-2 recorded:")
  (display-assertions *assertions*))

(define (make-test-3)
  (clear-assertions)
  (remember-assertions
   '(engine-starts no)
   '(engine-rotates no)
   '(headlights-work yes))
  (format #t "~%Test-3 recorded:")
  (display-assertions *assertions*))

(define (make-test-4)
  (clear-assertions)
  (remember-assertions
   '(engine-starts no)
   '(engine-rotates yes)
   '(headlights-work yes))
  (format #t "~%Test-4 recorded:")
  (display-assertions *assertions*))

(define (auto-run-rules rules-fn)
 (make-auto-rules)
 (rules-fn)
 (chain)
 (display-assertions *assertions*))

(define (auto-run)
  (auto-run-rules make-test-1)
  (auto-run-rules make-test-2)
  (auto-run-rules make-test-3)
  (auto-run-rules make-test-4))

