;;; -*-lisp-*- ;;; ;;; Tests for the Simple Object Design translator ;;; ;;; (c) 2009 Straylight/Edgeware ;;; ;;;----- Licensing notice --------------------------------------------------- ;;; ;;; This file is part of the Sensible Object Design, an object system for C. ;;; ;;; SOD is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 2 of the License, or ;;; (at your option) any later version. ;;; ;;; SOD is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with SOD; if not, write to the Free Software Foundation, ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. (cl:defpackage #:sod-test-sysdef (:use #:common-lisp #:asdf) (:export #:*version*)) (cl:in-package #:sod-test-sysdef) #|@-auto-@|# (load (merge-pathnames "auto.lisp" *load-pathname*)) ;;;-------------------------------------------------------------------------- ;;; Definition. (defsystem sod-test ;; Boring copyright stuff. :version #.*sysdef-version* :author "Mark Wooding" :license "GNU General Public License, version 2 or later" #|@-path-@|# :pathname "@srcdir@" ;; Documentation. :description "Tests for the Sensible Object Design translator." :long-description "This system provides unit tests for the Sod translator." :depends-on ("sod" "xlunit") :components ((:file "test-base") ;; Test the parser edifice. (:module "parser" :depends-on ("test-base") :components ((:file "parser-test") (:file "scanner-charbuf-test"))) ;; The actual tests. (:file "c-types-test" :depends-on ("test-base")) (:file "codegen-test" :depends-on ("test-base")) (:file "lexer-test" :depends-on ("test-base")))) ;;;-------------------------------------------------------------------------- ;;; Testing. (defmethod perform ((op test-op) (system (eql (find-system "sod-test")))) (handler-bind (((or warning style-warning) #'muffle-warning)) (operate 'load-op system) (let ((result (funcall (find-symbol "RUN-TESTS" "SOD-TEST")))) (unless (funcall (find-symbol "WAS-SUCCESSFUL" "XLUNIT") result) (error "Failed test"))))) ;;;----- That's all, folks --------------------------------------------------