From c2a6f84384e51edd64182661511ede1a63dc757b Mon Sep 17 00:00:00 2001
From: pfdietz <pfdietz@localhost>
Date: Thu, 9 Jun 2005 12:41:56 +0000
Subject: [PATCH] Some omitted tests for DEFMETHOD

---
 ansi-tests/defmethod.lsp    | 121 ++++++++++++++++++++++++++++++++++++
 ansi-tests/load-objects.lsp |   2 +
 2 files changed, 123 insertions(+)
 create mode 100644 ansi-tests/defmethod.lsp

diff --git a/ansi-tests/defmethod.lsp b/ansi-tests/defmethod.lsp
new file mode 100644
index 00000000..e1103a1b
--- /dev/null
+++ b/ansi-tests/defmethod.lsp
@@ -0,0 +1,121 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Thu Jun  9 07:02:53 2005
+;;;; Contains: Separate tests for DEFMETHOD
+
+(in-package :cl-test)
+
+(deftest defmethod.1
+  (let ((sym (gensym)))
+    (values
+     (typep* (eval `(defmethod ,sym (x) (list x))) 'standard-method)
+     (typep* (fdefinition sym) 'standard-generic-function)
+     (funcall sym 1)))
+  t t (1))
+
+(deftest defmethod.2
+  (let* ((sym (gensym))
+	 (method
+	  (eval `(defmethod ,sym ((x integer)) (list x)))))
+    (values
+     (typep* method 'standard-method)
+     (typep* (fdefinition sym) 'standard-generic-function)
+     (funcall sym 1)))
+  t t (1))
+
+(deftest defmethod.3
+  (let* ((sym (gensym))
+	 (method
+	  (eval `(let ((x 0)) (defmethod ,sym ((x (eql (incf x)))) (list x))))))
+    (values
+     (typep* method 'standard-method)
+     (typep* (fdefinition sym) 'standard-generic-function)
+     (funcall sym 1)
+     (funcall sym 1)))
+  t t (1) (1))
+
+
+;;; Error cases
+
+;;; Lambda liss not congruent
+
+(deftest defmethod.error.1
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x y)))
+    (eval `(signals-error (defmethod ,sym ((x t)) x) error)))
+  t)
+
+(deftest defmethod.error.2
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x y)))
+    (eval `(signals-error (defmethod ,sym ((x t) (y t) (z t)) (list x y z)) error)))
+  t)
+
+(deftest defmethod.error.3
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x y &optional z)))
+    (eval `(signals-error (defmethod ,sym ((x t) (y t) (z t)) (list x y z)) error)))
+  t)
+
+(deftest defmethod.error.4
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x y &optional z)))
+    (eval `(signals-error (defmethod ,sym ((x t) (y t) &optional) (list x y)) error)))
+  t)
+
+(deftest defmethod.error.5
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x y &optional z)))
+    (eval `(signals-error (defmethod ,sym ((x t) (y t) &optional z w) (list x y z w)) error)))
+  t)
+
+(deftest defmethod.error.6
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x &rest z)))
+    (eval `(signals-error (defmethod ,sym ((x t)) (list x)) error)))
+  t)
+
+(deftest defmethod.error.7
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x)))
+    (eval `(signals-error (defmethod ,sym ((x t) &rest z) (list x z)) error)))
+  t)
+
+(deftest defmethod.error.8
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x &key z)))
+    (eval `(signals-error (defmethod ,sym ((x t)) (list x)) error)))
+  t)
+
+(deftest defmethod.error.9
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x)))
+    (eval `(signals-error (defmethod ,sym ((x t) &key z) (list x z)) error)))
+  t)
+
+(deftest defmethod.error.10
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x &key z)))
+    (eval `(signals-error (defmethod ,sym ((x t) &key) x) error)))
+  t)
+
+(deftest defmethod.error.11
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x &key)))
+    (eval `(signals-error (defmethod ,sym ((x t)) x) error)))
+  t)
+
+(deftest defmethod.error.12
+  (let ((sym (gensym)))
+    (eval `(defgeneric ,sym (x)))
+    (eval `(signals-error (defmethod ,sym ((x t) &key) x) error)))
+  t)
+
+
+
+
+
+
+
+
+
diff --git a/ansi-tests/load-objects.lsp b/ansi-tests/load-objects.lsp
index 7a0034b6..a73586bb 100644
--- a/ansi-tests/load-objects.lsp
+++ b/ansi-tests/load-objects.lsp
@@ -54,3 +54,5 @@
 (load "class-name.lsp")
 (load "class-of.lsp")
 (load "unbound-slot.lsp")
+(load "defmethod.lsp")
+
-- 
GitLab