;;;; elisp.test --- tests guile's elisp support -*- scheme -*- ;;;; Copyright (C) 2002 Free Software Foundation, Inc. ;;;; ;;;; This program 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, or (at your option) ;;;; any later version. ;;;; ;;;; 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 for more details. ;;;; ;;;; You should have received a copy of the GNU General Public License ;;;; along with this software; see the file COPYING. If not, write to ;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, ;;;; Boston, MA 02111-1307 USA ;;;; ;;;; As a special exception, the Free Software Foundation gives permission ;;;; for additional uses of the text contained in its release of GUILE. ;;;; ;;;; The exception is that, if you link the GUILE library with other files ;;;; to produce an executable, this does not by itself cause the ;;;; resulting executable to be covered by the GNU General Public License. ;;;; Your use of that executable is in no way restricted on account of ;;;; linking the GUILE library code into it. ;;;; ;;;; This exception does not however invalidate any other reasons why ;;;; the executable file might be covered by the GNU General Public License. ;;;; ;;;; This exception applies only to the code released by the ;;;; Free Software Foundation under the name GUILE. If you copy ;;;; code from other Free Software Foundation releases into a copy of ;;;; GUILE, as the General Public License permits, the exception does ;;;; not apply to the code that you add in this way. To avoid misleading ;;;; anyone as to the status of such modified files, you must delete ;;;; this exception notice from them. ;;;; ;;;; If you write modifications of your own for GUILE, it is your choice ;;;; whether to permit this exception to apply to your modifications. ;;;; If you do not wish that, delete this exception notice. ;;; ;;; elisp ;;; (if (defined? '%nil) (with-test-prefix "scheme" (with-test-prefix "nil value is a boolean" (pass-if "boolean?" (boolean? %nil)) ) (with-test-prefix "nil value is false" (pass-if "not" (eq? (not %nil) #t)) (pass-if "if" (if %nil #f #t)) (pass-if "and" (eq? (and %nil #t) #f)) (pass-if "or" (eq? (or %nil #f) #f)) (pass-if "cond" (cond (%nil #f) (else #t))) (pass-if "do" (call-with-current-continuation (lambda (exit) (do ((i 0 (+ i 1))) (%nil (exit #f)) (if (> i 10) (exit #t)))))) ) (with-test-prefix "nil value as an empty list" (pass-if "list?" (list? %nil)) (pass-if "null?" (null? %nil)) (pass-if "sort" (eq? (sort %nil <) %nil)) ) (with-test-prefix "lists formed using nil value" (pass-if "list?" (list? (cons 'a %nil))) (pass-if "length" (= (length (cons 'a (cons 'b (cons 'c %nil)))) 3)) (pass-if "length (with backquoted list)" (= (length `(a b c . ,%nil)) 3)) (pass-if "write" (string=? (with-output-to-string (lambda () (write (cons 'a %nil)))) "(a)")) (pass-if "display" (string=? (with-output-to-string (lambda () (display (cons 'a %nil)))) "(a)")) ) (with-test-prefix "value preservation" (pass-if "car" (eq? (car (cons %nil 'a)) %nil)) (pass-if "cdr" (eq? (cdr (cons 'a %nil)) %nil)) (pass-if "vector-ref" (eq? (vector-ref (vector %nil) 0) %nil)) ) )) ;;; elisp.test ends here