;;;; goops.test --- test suite for GOOPS -*- scheme -*- ;;;; ;;;; Copyright (C) 2001 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 (use-modules (test-suite lib)) (pass-if "GOOPS loads" (false-if-exception (begin (resolve-module '(oop goops)) #t))) (use-modules (oop goops)) ;;; more tests here... (with-test-prefix "basic classes" (with-test-prefix "" (pass-if "instance?" (instance? )) (pass-if "class-of" (eq? (class-of ) )) (pass-if "is a class?" (is-a? )) (pass-if "class-name" (eq? (class-name ) ')) (pass-if "direct superclasses" (equal? (class-direct-supers ) '())) (pass-if "superclasses" (equal? (class-precedence-list ) (list ))) (pass-if "direct slots" (equal? (class-direct-slots ) '())) (pass-if "slots" (equal? (class-slots ) '()))) (with-test-prefix "" (pass-if "instance?" (instance? )) (pass-if "class-of" (eq? (class-of ) )) (pass-if "is a class?" (is-a? )) (pass-if "class-name" (eq? (class-name ) ')) (pass-if "direct superclasses" (equal? (class-direct-supers ) (list ))) (pass-if "superclasses" (equal? (class-precedence-list ) (list ))) (pass-if "direct slots" (equal? (class-direct-slots ) '())) (pass-if "slots" (equal? (class-slots ) '()))) (with-test-prefix "" (pass-if "instance?" (instance? )) (pass-if "class-of" (eq? (class-of ) )) (pass-if "is a class?" (is-a? )) (pass-if "class-name" (eq? (class-name ) ')) (pass-if "direct superclass" (equal? (class-direct-supers ) (list ))))) (with-test-prefix "defining classes" (with-test-prefix "define-class" (pass-if "creating a new binding" (eval '(define #f) (current-module)) (eval '(undefine ) (current-module)) (eval '(define-class ()) (current-module)) (eval '(is-a? ) (current-module))) (pass-if "overwriting a binding to a non-class" (eval '(define #f) (current-module)) (eval '(define-class ()) (current-module)) (eval '(is-a? ) (current-module))))) (with-test-prefix "defining generics" (with-test-prefix "define-generic" (pass-if "creating a new top-level binding" (eval '(define foo #f) (current-module)) (eval '(undefine foo) (current-module)) (eval '(define-generic foo) (current-module)) (eval '(and (is-a? foo ) (null? (generic-function-methods foo))) (current-module))) (pass-if "overwriting a top-level binding to a non-generic" (eval '(define (foo) #f) (current-module)) (eval '(define-generic foo) (current-module)) (eval '(and (is-a? foo ) (= 1 (length (generic-function-methods foo)))) (current-module))) (pass-if "overwriting a top-level binding to a generic" (eval '(define (foo) #f) (current-module)) (eval '(define-generic foo) (current-module)) (eval '(define-generic foo) (current-module)) (eval '(and (is-a? foo ) (null? (generic-function-methods foo))) (current-module))))) (with-test-prefix "defining accessors" (with-test-prefix "define-accessor" (pass-if "creating a new top-level binding" (eval '(define foo #f) (current-module)) (eval '(undefine foo) (current-module)) (eval '(define-accessor foo) (current-module)) (eval '(and (is-a? foo ) (null? (generic-function-methods foo))) (current-module))) (pass-if "overwriting a top-level binding to a non-accessor" (eval '(define (foo) #f) (current-module)) (eval '(define-accessor foo) (current-module)) (eval '(and (is-a? foo ) (= 1 (length (generic-function-methods foo)))) (current-module))) (pass-if "overwriting a top-level binding to an accessor" (eval '(define (foo) #f) (current-module)) (eval '(define-accessor foo) (current-module)) (eval '(define-accessor foo) (current-module)) (eval '(and (is-a? foo ) (null? (generic-function-methods foo))) (current-module)))))