From 04bb321a9dff25723f18bdd235d0311338d3c993 Mon Sep 17 00:00:00 2001 From: Neil Jerram Date: Tue, 22 Jan 2002 23:47:46 +0000 Subject: [PATCH] * New tests file for Elisp support. --- test-suite/ChangeLog | 6 ++ test-suite/tests/elisp.test | 136 ++++++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 test-suite/tests/elisp.test diff --git a/test-suite/ChangeLog b/test-suite/ChangeLog index 7a835df5e..d7e2367b4 100644 --- a/test-suite/ChangeLog +++ b/test-suite/ChangeLog @@ -1,3 +1,9 @@ +2002-01-22 Neil Jerram + + * Makefile.am (SCM_TESTS): Added elisp.test. + + * tests/elisp.test: New file. + 2001-11-22 Dirk Herrmann * tests/numbers.test: Added more division by zero tests. diff --git a/test-suite/tests/elisp.test b/test-suite/tests/elisp.test new file mode 100644 index 000000000..516f4ced2 --- /dev/null +++ b/test-suite/tests/elisp.test @@ -0,0 +1,136 @@ +;;;; 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