;;;; Author: Kevin M. Rosenberg
;;;; Date Started: Apr 2003
;;;;
-;;;; $Id: kmrcl-tests.asd,v 1.1 2003/04/28 21:12:27 kevin Exp $
+;;;; $Id: kmrcl-tests.asd,v 1.2 2003/05/08 19:19:08 kevin Exp $
;;;; *************************************************************************
(defpackage #:kmrcl-tests-system
(defsystem kmrcl-tests
:depends-on (:rt :kmrcl)
- :components ((:file "tests")))
+ :components
+ ((:file "tests")))
(defmethod perform ((o test-op) (c (eql (find-system :kmrcl-tests))))
(or (funcall (intern (symbol-name '#:do-tests)
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: strings.lisp,v 1.22 2003/05/06 08:15:15 kevin Exp $
+;;;; $Id: strings.lisp,v 1.23 2003/05/08 19:19:08 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(defun concat-separated-strings (separator &rest lists)
(format nil (format nil "~~{~~A~~^~A~~}" separator) (append-sublists lists)))
+(defun only-null-list-elements-p (lst)
+ (or (null lst) (every #'null lst)))
+
(defun print-separated-strings (strm separator &rest lists)
(declare (optimize (speed 3) (safety 0) (space 0) (debug 0)
(compilation-speed 0)))
(do* ((rest-lists lists (cdr rest-lists))
(list (car rest-lists) (car rest-lists))
- (last-list (null (cdr rest-lists)) (null (cdr rest-lists))))
+ (last-list (only-null-list-elements-p (cdr rest-lists))
+ (only-null-list-elements-p (cdr rest-lists))))
((null rest-lists) strm)
(do* ((lst list (cdr lst))
(elem (car lst) (car lst))
;;;; Author: Kevin M. Rosenberg
;;;; Date Started: Apr 2003
;;;;
-;;;; $Id: tests.lisp,v 1.12 2003/05/07 16:07:13 kevin Exp $
+;;;; $Id: tests.lisp,v 1.13 2003/05/08 19:19:08 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg
;;;;
(deftest apsl.4 (append-sublists '((a))) (a))
(deftest apsl.5 (append-sublists '((a) (b) (c d (e f g)))) (a b c d (e f g)))
+(deftest pss.0 (with-output-to-string (s) (print-separated-strings s "|" nil))
+ "")
+
+(deftest pss.1
+ (with-output-to-string (s) (print-separated-strings s "|" '("ab")) )
+ "ab")
+
+(deftest pss.2
+ (with-output-to-string (s) (print-separated-strings s "|" '("ab" "cd")))
+ "ab|cd")
+
+(deftest pss.3
+ (with-output-to-string (s) (print-separated-strings s "|" '("ab" "cd") nil))
+ "ab|cd")
+
+(deftest pss.4
+ (with-output-to-string (s)
+ (print-separated-strings s "|" '("ab" "cd") nil nil))
+ "ab|cd")
+
+(deftest pss.5
+ (with-output-to-string (s)
+ (print-separated-strings s "|" '("ab" "cd") nil '("ef") nil))
+ "ab|cd|ef")
+
+(deftest css.0 (concat-separated-strings "|" nil) "")
+(deftest css.1 (concat-separated-strings "|" nil nil) "")
+(deftest css.2 (concat-separated-strings "|" '("ab")) "ab")
+(deftest css.3 (concat-separated-strings "|" '("ab" "cd")) "ab|cd")
+(deftest css.4 (concat-separated-strings "|" '("ab" "cd") nil) "ab|cd")
+(deftest css.5 (concat-separated-strings "|" '("ab" "cd") nil '("ef")) "ab|cd|ef")
+
(eval-when (:compile-toplevel :load-toplevel :execute)
(when (find-package '#:kmr-mop)
(pushnew :kmrtest-mop cl:*features*)))