From dc1f3d89706d8a038747b065110546c9351e7796 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Fri, 21 Feb 2025 13:53:33 +0000 Subject: Create a unit test system Setup cantedraw/tests with a test-system record, as well as linking it back to cantedraw so we can run test-system on cantedraw and run the tests. Using parachute, we can setup a suite of unit tests for each package. For each package in src/ or lib/ we'll write a separate unit test suite with tests for all the public exposing functionality. I've setup a main suite in cantedraw/tests/main which will depend on each of the unit test suites so we can run the tests all at once. Currently we have one test for the --> macro. --- bob.lisp | 8 ++++++-- cantedraw.asd | 17 +++++++++++++++++ tests/macros.lisp | 29 +++++++++++++++++++++++++++++ tests/main.lisp | 24 ++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 tests/macros.lisp create mode 100644 tests/main.lisp diff --git a/bob.lisp b/bob.lisp index 5d08c7f..16c5faa 100644 --- a/bob.lisp +++ b/bob.lisp @@ -24,13 +24,17 @@ (defpackage bob (:use :cl) - (:export :build :qload)) + (:export :build :qload :tests)) (in-package :bob) (defun qload () (ql:quickload :cantedraw)) -(defun build () +(defun tests () (qload) + (asdf:test-system :cantedraw)) + +(defun build () + (tests) (asdf:make :cantedraw)) diff --git a/cantedraw.asd b/cantedraw.asd index 830a4c6..be1b17e 100644 --- a/cantedraw.asd +++ b/cantedraw.asd @@ -2,6 +2,7 @@ :author "Aryadev Chavali " :license "GPL-2" :depends-on (:alexandria) + :in-order-to ((asdf:test-op (asdf:test-op :cantedraw/tests))) :components ((:file "packages") (:module "lib" :components @@ -17,6 +18,22 @@ :build-pathname "bin/cantedraw" :entry-point "cantedraw.main:start") +(asdf:defsystem "cantedraw/tests" + :author "Aryadev Chavali " + :license "GPL-2" + :depends-on (:cantedraw + :parachute) + :components ((:module "tests" + :components + ((:file "macros") + ;; (:file "functions") + ;; (:file "model") + ;; (:file "player") + ;; (:file "game") + (:file "main")))) + :perform (test-op (op c) (uiop:symbol-call :parachute :test + :cantedraw/tests/main))) + ;; Compress image for smaller binary size. #+nil (defmethod asdf:perform ((o asdf:image-op) (c asdf:system)) diff --git a/tests/macros.lisp b/tests/macros.lisp new file mode 100644 index 0000000..e86fbb3 --- /dev/null +++ b/tests/macros.lisp @@ -0,0 +1,29 @@ +;;; main.lisp - 2025-02-16 + +;; Copyright (C) 2025 Aryadev Chavali + +;; This program 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 Version 2 for +;; details. + +;; You may distribute and modify this code under the terms of the GNU General +;; Public License Version 2, which you should have received a copy of along with +;; this program. If not, please go to . + +;;; Code: + +(defpackage cantedraw/tests/macros + (:use :cl :cantedraw.lib.macros + :parachute)) + +(in-package :cantedraw/tests/macros) + +(define-test macro-test) + +(define-test (macro-test "-->") + (true (null (--> x))) + (is eq 'a (--> x 'a)) + (is eq 2 (--> x 1 (1+ x))) + (is eq 2 (--> x 1 1+)) + (is string= "World!" (--> _ "Hello" (format nil "~a World!" _) (subseq _ 6)))) diff --git a/tests/main.lisp b/tests/main.lisp new file mode 100644 index 0000000..0e8e462 --- /dev/null +++ b/tests/main.lisp @@ -0,0 +1,24 @@ +;;; main.lisp - 2025-02-20 + +;; Copyright (C) 2025 Aryadev Chavali + +;; This program 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 Version 2 for +;; details. + +;; You may distribute and modify this code under the terms of the GNU General +;; Public License Version 2, which you should have received a copy of along with +;; this program. If not, please go to . + + +;;; Code: + +(defpackage cantedraw/tests/main + (:use :cl :parachute)) + +(in-package :cantedraw/tests/main) + +(define-test all + :serial t + :depends-on ((cantedraw/tests/macros macro-test))) -- cgit v1.2.3-13-gbd6f