Commit f20efd36 authored by pfdietz's avatar pfdietz

Added tests for the rest of the builtin method combinations (other than STANDARD)

parent 992591db
;-*- Mode: Lisp -*-
;;;; Author: Paul Dietz
;;;; Created: Sat May 24 21:31:55 2003
;;;; Contains: Tests of DEFGENERIC with :method-combination AND
(in-package :cl-test)
(declaim (special *x*))
(deftest defgeneric-method-combination.and.1
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.and.1 (x)
(:method-combination and)
(:method and ((x integer)) (push 4 *x*) t)
(:method and ((x rational)) (push 3 *x*) nil)
(:method and ((x number)) (push 2 *x*) t)
(:method and ((x t)) (push 1 *x*) 'a)))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(nil (3 4))
(nil (3))
(a (1 2))
(a (1)))
(deftest defgeneric-method-combination.and.2
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.and.2 (x)
(:method-combination and :most-specific-first)
(:method and ((x integer)) (push 4 *x*) t)
(:method and ((x rational)) (push 3 *x*) nil)
(:method and ((x number)) (push 2 *x*) t)
(:method and ((x t)) (push 1 *x*) 'a)))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(nil (3 4))
(nil (3))
(a (1 2))
(a (1)))
(deftest defgeneric-method-combination.and.3
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.and.3 (x)
(:method-combination and :most-specific-last)
(:method and ((x integer)) (push 4 *x*) t)
(:method and ((x rational)) (push 3 *x*) nil)
(:method and ((x number)) (push 2 *x*) 'a)
(:method and ((x t)) (push 1 *x*) t)))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(nil (3 2 1))
(nil (3 2 1))
(a (2 1))
(t (1)))
(deftest defgeneric-method-combination.and.4
(let ((fn
(eval '(defgeneric dg-mc.and.4 (x)
(:method-combination and)
(:method and ((x integer)) t)
(:method :around ((x rational)) 'foo)
(:method and ((x number)) nil)
(:method and ((x symbol)) t)
(:method and ((x t)) 'a)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn 'x)
(funcall fn '(a b c))))
foo foo nil a a)
(deftest defgeneric-method-combination.and.5
(let ((fn
(eval '(defgeneric dg-mc.and.5 (x)
(:method-combination and)
(:method and ((x integer)) nil)
(:method :around ((x rational))
(list 'foo (call-next-method)))
(:method and ((x number)) 'a)
(:method and ((x symbol)) 'b)
(:method and ((x t)) 'c)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn 'x)
(funcall fn '(a b c))))
(foo nil) (foo c) c c c)
(deftest defgeneric-method-combination.and.6
(let ((fn
(eval '(defgeneric dg-mc.and.6 (x)
(:method-combination and)
(:method and ((x integer)) 'a)
(:method :around ((x rational))
(list 'foo (call-next-method)))
(:method :around ((x real))
(list 'bar (call-next-method)))
(:method and ((x number)) nil)
(:method and ((x symbol)) 'c)
(:method and ((x t)) 'd)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn #c(1.0 2.0))
(funcall fn 'x)
(funcall fn '(a b c))))
(foo (bar nil)) (foo (bar nil)) (bar nil) nil d d)
(deftest defgeneric-method-combination.and.7
(let ((fn
(eval '(defgeneric dg-mc.and.7 (x)
(:method-combination and)
(:method and ((x dgmc-class-04)) 'c)
(:method and ((x dgmc-class-03)) 'b)
(:method and ((x dgmc-class-02)) nil)
(:method and ((x dgmc-class-01)) 'a)))))
(values
(funcall fn (make-instance 'dgmc-class-01))
(funcall fn (make-instance 'dgmc-class-02))
(funcall fn (make-instance 'dgmc-class-03))
(funcall fn (make-instance 'dgmc-class-04))))
a nil a nil)
(deftest defgeneric-method-combination.and.8
(let ((fn
(eval '(defgeneric dg-mc.and.8 (x)
(:method-combination and)
(:method and ((x (eql 1000))) 'a)
(:method :around ((x symbol)) (values))
(:method :around ((x integer)) (values 'a 'b 'c))
(:method :around ((x complex)) (call-next-method))
(:method :around ((x number)) (values 1 2 3 4 5 6))
(:method and ((x t)) 'b)))))
(values
(multiple-value-list (funcall fn 'a))
(multiple-value-list (funcall fn 10))
(multiple-value-list (funcall fn #c(9 8)))
(multiple-value-list (funcall fn '(a b c)))))
() (a b c) (1 2 3 4 5 6) (b))
;-*- Mode: Lisp -*-
;;;; Author: Paul Dietz
;;;; Created: Wed May 28 14:02:42 2003
;;;; Contains: Class definitions for defgeneric-method-combination-*.lsp
(in-package :cl-test)
(defclass dgmc-class-01 () ())
(defclass dgmc-class-02 (dgmc-class-01) ())
(defclass dgmc-class-03 (dgmc-class-01) ())
(defclass dgmc-class-04 (dgmc-class-02 dgmc-class-03) ())
(defclass dgmc-class-05 (dgmc-class-04) ())
(defclass dgmc-class-06 (dgmc-class-04) ())
(defclass dgmc-class-07 (dgmc-class-05 dgmc-class-06) ())
;-*- Mode: Lisp -*-
;;;; Author: Paul Dietz
;;;; Created: Sat May 24 21:31:55 2003
;;;; Contains: Tests of DEFGENERIC with :method-combination MAX
(in-package :cl-test)
(declaim (special *x*))
(deftest defgeneric-method-combination.max.1
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.max.1 (x)
(:method-combination max)
(:method max ((x integer)) (car (push 8 *x*)))
(:method max ((x rational)) (car (push 4 *x*)))
(:method max ((x number)) (car (push 2 *x*)))
(:method max ((x t)) (car (push 1 *x*)))))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(8 (1 2 4 8)) (4 (1 2 4)) (2 (1 2)) (1 (1)))
(deftest defgeneric-method-combination.max.2
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.max.2 (x)
(:method-combination max :most-specific-first)
(:method max ((x integer)) (car (push 8 *x*)))
(:method max ((x rational)) (car (push 4 *x*)))
(:method max ((x number)) (car (push 2 *x*)))
(:method max ((x t)) (car (push 1 *x*)))))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(8 (1 2 4 8)) (4 (1 2 4)) (2 (1 2)) (1 (1)))
(deftest defgeneric-method-combination.max.3
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.max.3 (x)
(:method-combination max :most-specific-last)
(:method max ((x integer)) (car (push 8 *x*)))
(:method max ((x rational)) (car (push 4 *x*)))
(:method max ((x number)) (car (push 2 *x*)))
(:method max ((x t)) (car (push 1 *x*)))))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(8 (8 4 2 1)) (4 (4 2 1)) (2 (2 1)) (1 (1)))
(deftest defgeneric-method-combination.max.4
(let ((fn
(eval '(defgeneric dg-mc.max.4 (x)
(:method-combination max)
(:method max ((x integer)) 4)
(:method :around ((x rational)) 'foo)
(:method max ((x number)) 3)
(:method max ((x symbol)) 5)
(:method max ((x t)) 1)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn 'x)
(funcall fn '(a b c))))
foo foo 3 5 1)
(deftest defgeneric-method-combination.max.5
(let ((fn
(eval '(defgeneric dg-mc.max.5 (x)
(:method-combination max)
(:method max ((x integer)) 5)
(:method :around ((x rational))
(list 'foo (call-next-method)))
(:method max ((x number)) 5/2)
(:method max ((x symbol)) 4)
(:method max ((x t)) 1.0)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn 'x)
(funcall fn '(a b c))))
(foo 5) (foo 5/2) 5/2 4 1.0)
(deftest defgeneric-method-combination.max.6
(let ((fn
(eval '(defgeneric dg-mc.max.6 (x)
(:method-combination max)
(:method max ((x integer)) 9)
(:method :around ((x rational))
(list 'foo (call-next-method)))
(:method :around ((x real))
(list 'bar (call-next-method)))
(:method max ((x number)) 4)
(:method max ((x symbol)) 6)
(:method max ((x t)) 1)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn #c(1.0 2.0))
(funcall fn 'x)
(funcall fn '(a b c))))
(foo (bar 9)) (foo (bar 4)) (bar 4) 4 6 1)
(deftest defgeneric-method-combination.max.7
(let ((fn
(eval '(defgeneric dg-mc.max.7 (x)
(:method-combination max)
(:method max ((x dgmc-class-04)) 4)
(:method max ((x dgmc-class-03)) 3)
(:method max ((x dgmc-class-02)) 5)
(:method max ((x dgmc-class-01)) 1)))))
(values
(funcall fn (make-instance 'dgmc-class-01))
(funcall fn (make-instance 'dgmc-class-02))
(funcall fn (make-instance 'dgmc-class-03))
(funcall fn (make-instance 'dgmc-class-04))))
1 5 3 5)
(deftest defgeneric-method-combination.max.8
(let ((fn
(eval '(defgeneric dg-mc.max.8 (x)
(:method-combination max)
(:method max ((x (eql 1000))) 4)
(:method :around ((x symbol)) (values))
(:method :around ((x integer)) (values 'a 'b 'c))
(:method :around ((x complex)) (call-next-method))
(:method :around ((x number)) (values 1 2 3 4 5 6))
(:method max ((x t)) 1)))))
(values
(multiple-value-list (funcall fn 'a))
(multiple-value-list (funcall fn 10))
(multiple-value-list (funcall fn #c(9 8)))
(multiple-value-list (funcall fn '(a b c)))))
() (a b c) (1 2 3 4 5 6) (1))
;-*- Mode: Lisp -*-
;;;; Author: Paul Dietz
;;;; Created: Sat May 24 21:31:55 2003
;;;; Contains: Tests of DEFGENERIC with :method-combination MIN
(in-package :cl-test)
(declaim (special *x*))
(deftest defgeneric-method-combination.min.1
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.min.1 (x)
(:method-combination min)
(:method min ((x integer)) (car (push 1 *x*)))
(:method min ((x rational)) (car (push 2 *x*)))
(:method min ((x number)) (car (push 3 *x*)))
(:method min ((x t)) (car (push 4 *x*)))))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(1 (4 3 2 1)) (2 (4 3 2)) (3 (4 3)) (4 (4)))
(deftest defgeneric-method-combination.min.2
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.min.2 (x)
(:method-combination min :most-specific-first)
(:method min ((x integer)) (car (push 1 *x*)))
(:method min ((x rational)) (car (push 2 *x*)))
(:method min ((x number)) (car (push 3 *x*)))
(:method min ((x t)) (car (push 4 *x*)))))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(1 (4 3 2 1)) (2 (4 3 2)) (3 (4 3)) (4 (4)))
(deftest defgeneric-method-combination.min.3
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.min.3 (x)
(:method-combination min :most-specific-last)
(:method min ((x integer)) (car (push 1 *x*)))
(:method min ((x rational)) (car (push 2 *x*)))
(:method min ((x number)) (car (push 3 *x*)))
(:method min ((x t)) (car (push 4 *x*)))))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(1 (1 2 3 4)) (2 (2 3 4)) (3 (3 4)) (4 (4)))
(deftest defgeneric-method-combination.min.4
(let ((fn
(eval '(defgeneric dg-mc.min.4 (x)
(:method-combination min)
(:method min ((x integer)) 1)
(:method :around ((x rational)) 'foo)
(:method min ((x number)) 2)
(:method min ((x symbol)) 3)
(:method min ((x t)) 4)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn 'x)
(funcall fn '(a b c))))
foo foo 2 3 4)
(deftest defgeneric-method-combination.min.5
(let ((fn
(eval '(defgeneric dg-mc.min.5 (x)
(:method-combination min)
(:method min ((x integer)) 1)
(:method :around ((x rational))
(list 'foo (call-next-method)))
(:method min ((x number)) 2)
(:method min ((x symbol)) 4)
(:method min ((x t)) 8)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn 'x)
(funcall fn '(a b c))))
(foo 1) (foo 2) 2 4 8)
(deftest defgeneric-method-combination.min.6
(let ((fn
(eval '(defgeneric dg-mc.min.6 (x)
(:method-combination min)
(:method min ((x integer)) 1)
(:method :around ((x rational))
(list 'foo (call-next-method)))
(:method :around ((x real))
(list 'bar (call-next-method)))
(:method min ((x number)) 2)
(:method min ((x symbol)) 4)
(:method min ((x t)) 8)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn #c(1.0 2.0))
(funcall fn 'x)
(funcall fn '(a b c))))
(foo (bar 1)) (foo (bar 2)) (bar 2) 2 4 8)
(deftest defgeneric-method-combination.min.7
(let ((fn
(eval '(defgeneric dg-mc.min.7 (x)
(:method-combination min)
(:method min ((x dgmc-class-04)) 1)
(:method min ((x dgmc-class-03)) 2)
(:method min ((x dgmc-class-02)) 4)
(:method min ((x dgmc-class-01)) 8)))))
(values
(funcall fn (make-instance 'dgmc-class-01))
(funcall fn (make-instance 'dgmc-class-02))
(funcall fn (make-instance 'dgmc-class-03))
(funcall fn (make-instance 'dgmc-class-04))))
8 4 2 1)
(deftest defgeneric-method-combination.min.8
(let ((fn
(eval '(defgeneric dg-mc.min.8 (x)
(:method-combination min)
(:method min ((x (eql 1000))) 0)
(:method :around ((x symbol)) (values))
(:method :around ((x integer)) (values 'a 'b 'c))
(:method :around ((x complex)) (call-next-method))
(:method :around ((x number)) (values 1 2 3 4 5 6))
(:method min ((x t)) 1)))))
(values
(multiple-value-list (funcall fn 'a))
(multiple-value-list (funcall fn 10))
(multiple-value-list (funcall fn #c(9 8)))
(multiple-value-list (funcall fn '(a b c)))))
() (a b c) (1 2 3 4 5 6) (1))
;-*- Mode: Lisp -*-
;;;; Author: Paul Dietz
;;;; Created: Sat May 24 21:31:55 2003
;;;; Contains: Tests of DEFGENERIC with :method-combination OR
(in-package :cl-test)
(declaim (special *x*))
(deftest defgeneric-method-combination.or.1
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.or.1 (x)
(:method-combination or)
(:method or ((x integer)) (push 4 *x*) nil)
(:method or ((x rational)) (push 3 *x*) nil)
(:method or ((x number)) (push 2 *x*) nil)
(:method or ((x t)) (push 1 *x*) 'a)))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(a (1 2 3 4))
(a (1 2 3))
(a (1 2))
(a (1)))
(deftest defgeneric-method-combination.or.2
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.or.2 (x)
(:method-combination or :most-specific-first)
(:method or ((x integer)) (push 4 *x*) nil)
(:method or ((x rational)) (push 3 *x*) 'a)
(:method or ((x number)) (push 2 *x*) nil)
(:method or ((x t)) (push 1 *x*) 'b)))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(a (3 4)) (a (3)) (b (1 2)) (b (1)))
(deftest defgeneric-method-combination.or.3
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.or.3 (x)
(:method-combination or :most-specific-last)
(:method or ((x integer)) (push 4 *x*) 'a)
(:method or ((x rational)) (push 3 *x*) nil)
(:method or ((x number)) (push 2 *x*) nil)
(:method or ((x t)) (push 1 *x*) nil)))))
(flet ((%f (y)
(let ((*x* nil))
(list (funcall fn y) *x*))))
(values (%f 1) (%f 2/3) (%f 1.54) (%f 'a))))
(a (4 3 2 1)) (nil (3 2 1)) (nil (2 1)) (nil (1)))
(deftest defgeneric-method-combination.or.4
(let ((fn
(eval '(defgeneric dg-mc.or.4 (x)
(:method-combination or)
(:method or ((x integer)) nil)
(:method :around ((x rational)) 'foo)
(:method or ((x number)) 'b)
(:method or ((x symbol)) nil)
(:method or ((x t)) 'a)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn 'x)
(funcall fn '(a b c))))
foo foo b a a)
(deftest defgeneric-method-combination.or.5
(let ((fn
(eval '(defgeneric dg-mc.or.5 (x)
(:method-combination or)
(:method or ((x integer)) 'a)
(:method :around ((x rational))
(list 'foo (call-next-method)))
(:method or ((x number)) nil)
(:method or ((x symbol)) 'b)
(:method or ((x t)) 'c)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn 'x)
(funcall fn '(a b c))))
(foo a) (foo c) c b c)
(deftest defgeneric-method-combination.or.6
(let ((fn
(eval '(defgeneric dg-mc.or.6 (x)
(:method-combination or)
(:method or ((x integer)) 'a)
(:method :around ((x rational))
(list 'foo (call-next-method)))
(:method :around ((x real))
(list 'bar (call-next-method)))
(:method or ((x number)) 'b)
(:method or ((x symbol)) 'c)
(:method or ((x t)) 'd)))))
(values
(funcall fn 0)
(funcall fn 4/3)
(funcall fn 1.54)
(funcall fn #c(1.0 2.0))
(funcall fn 'x)
(funcall fn '(a b c))))
(foo (bar a)) (foo (bar b)) (bar b) b c d)
(deftest defgeneric-method-combination.or.7
(let ((fn
(eval '(defgeneric dg-mc.or.7 (x)
(:method-combination or)
(:method or ((x dgmc-class-04)) nil)
(:method or ((x dgmc-class-03)) nil)
(:method or ((x dgmc-class-02)) 'b)
(:method or ((x dgmc-class-01)) 'c)))))
(values
(funcall fn (make-instance 'dgmc-class-01))
(funcall fn (make-instance 'dgmc-class-02))
(funcall fn (make-instance 'dgmc-class-03))
(funcall fn (make-instance 'dgmc-class-04))))
c b c b)
(deftest defgeneric-method-combination.or.8
(let ((fn
(eval '(defgeneric dg-mc.or.8 (x)
(:method-combination or)
(:method or ((x (eql 1000))) 'a)
(:method :around ((x symbol)) (values))
(:method :around ((x integer)) (values 'a 'b 'c))
(:method :around ((x complex)) (call-next-method))
(:method :around ((x number)) (values 1 2 3 4 5 6))
(:method or ((x t)) 'b)))))
(values
(multiple-value-list (funcall fn 'a))
(multiple-value-list (funcall fn 10))
(multiple-value-list (funcall fn #c(9 8)))
(multiple-value-list (funcall fn '(a b c)))))
() (a b c) (1 2 3 4 5 6) (b))
;-*- Mode: Lisp -*-
;;;; Author: Paul Dietz
;;;; Created: Sat May 24 21:31:55 2003
;;;; Contains: Tests of DEFGENERIC with :method-combination
;;;; Contains: Tests of DEFGENERIC with :method-combination +
(in-package :cl-test)
(declaim (special *x*))
(defclass dgmc-class-01 () ())
(defclass dgmc-class-02 (dgmc-class-01) ())
(defclass dgmc-class-03 (dgmc-class-01) ())
(defclass dgmc-class-04 (dgmc-class-02 dgmc-class-03) ())
(defclass dgmc-class-05 (dgmc-class-04) ())
(defclass dgmc-class-06 (dgmc-class-04) ())
(defclass dgmc-class-07 (dgmc-class-05 dgmc-class-06) ())
(deftest defgeneric-method-combination.+.1
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.1 (x)
(eval '(defgeneric dg-mc.fun.plus.1 (x)
(:method-combination +)
(:method + ((x integer)) (car (push 8 *x*)))
(:method + ((x rational)) (car (push 4 *x*)))
......@@ -33,7 +25,7 @@
(deftest defgeneric-method-combination.+.2
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.2 (x)
(eval '(defgeneric dg-mc.fun.plus.2 (x)
(:method-combination + :most-specific-first)
(:method + ((x integer)) (car (push 8 *x*)))
(:method + ((x rational)) (car (push 4 *x*)))
......@@ -48,7 +40,7 @@
(deftest defgeneric-method-combination.+.3
(let ((*x* nil)
(fn
(eval '(defgeneric dg-mc.fun.3 (x)
(eval '(defgeneric dg-mc.fun.plus.3 (x)
(:method-combination + :most-specific-last)
(:method + ((x integer)) (car (push 8 *x*)))
(:method + ((x rational)) (car (push 4 *x*)))
......@@ -62,7 +54,7 @@
(deftest defgeneric-method-combination.+.4
(let ((fn
(eval '(defgeneric dg-mc.4 (x)
(eval '(defgeneric dg-mc.plus.4 (x)
(:method-combination +)
(:method + ((x integer)) 1)
(:method :around ((x rational)) 'foo)
......@@ -79,7 +71,7 @@
(deftest defgeneric-method-combination.+.5
(let ((fn
(eval '(defgeneric dg-mc.5 (x)
(eval '(defgeneric dg-mc.plus.5 (x)
(:method-combination +)
(:method + ((x integer)) 1)
(:method :around ((x rational))
......@@ -97,7 +89,7 @@
(deftest defgeneric-method-combination.+.6
(let ((fn
(eval '(defgeneric dg-mc.6 (x)
(eval '(defgeneric dg-mc.plus.6 (x)