;;;;;;;;;;;;;;;;;;;;;;;;
;;; pre-testing prep ;;;
;;;;;;;;;;;;;;;;;;;;;;;;
(load ../lisp-unit.lisp)
(use-package :lisp-unit)
(load nfa.lisp)
(remove-tests :all)
(setq *print-failures* t)
(defun fooTransitions (state input)
;;* 0 -a-> 1
;;* 0 -a-> 2
;;* 1 -b-> 3
;;* 2 -c-> 3
(cond
((and (eq state 0) (eq input A ))(list 1 2))
((and (eq state 0) (eq input B ))(list 2))
((and (eq state 1) (eq input B ))(list 3))
((and (eq state 2) (eq input c ))(list 3))
(t (list nil))
)
)
(defun expTransitions (state input)
;;* 0 -a-> 1
;;* 0 -a-> 2
;;* 0 -b-> 2
;;* 1 -b->0
(cond
((and (eq state 0) (eq input A ))(list 1 2))
((and (eq state 0) (eq input B ))(list 2))
((and (eq state 1) (eq input B ))(list 0))
(t (list nil))
)
)
(defun langTransitions (state input)
;;* 0 -a-> 0
;;* 0 -b-> 1
;;* 1 -a-> 1
;;* 1 -b-> 0
(cond
((and (eq state 0) (eq input A ))(list 0))
((and (eq state 0) (eq input B ))(list 1))
((and (eq state 1) (eq input A ))(list 1))
((and (eq state 1) (eq input B ))(list 0))
(t (list nil))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; reachable test definitions ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-test test-reachable
(assert-equal T (reachable fooTransitions 0 0 NIL))
(assert-equal NIL (reachable fooTransitions 0 3 (A B C)))
(assert-equal T (reachable fooTransitions 0 3 (A B)))
(assert-equal NIL (reachable fooTransitions 0 3 (A A A)))
(assert-equal T (reachable fooTransitions 0 3 (A C)))
(assert-equal T (reachable expTransitions 0 0 NIL))
(assert-equal NIL (reachable expTransitions 0 2 (B B)))
(assert-equal T (reachable expTransitions 0 1 (A B A)))
(assert-equal NIL (reachable expTransitions 0 2 (A B)))
(assert-equal T (reachable expTransitions 0 2 (A B A)))
(assert-equal T (reachable langTransitions 0 0 NIL))
(assert-equal T (reachable langTransitions 0 1 (B)))
(assert-equal T (reachable langTransitions 0 0 (A A A)))
(assert-equal NIL (reachable langTransitions 0 1 (A B B A)))
(assert-equal T (reachable langTransitions 0 1 (B A B A B)))
)
;;;;;;;;;;;;;;;;;
;;; run tests ;;;
;;;;;;;;;;;;;;;;;
(run-tests :all)
Reviews
There are no reviews yet.