(defun eieio-test-method-store ()
"Store current invocation class symbol in the invocation order list."
(let* ((keysym (aref [ :STATIC :BEFORE :PRIMARY :AFTER ]
- (or eieio-generic-call-key 0)))
- (c (list eieio-generic-call-methodname keysym (eieio--scoped-class))))
- (setq eieio-test-method-order-list
- (cons c eieio-test-method-order-list))))
+ (or eieio--generic-call-key 0)))
+ ;; FIXME: Don't depend on `eieio--scoped-class'!
+ (c (list keysym (eieio--class-symbol (eieio--scoped-class)))))
+ (push c eieio-test-method-order-list)))
(defun eieio-test-match (rightanswer)
"Do a test match."
(if (equal rightanswer eieio-test-method-order-list)
t
- (error "eieio-test-methodinvoke.el: Test Failed!")))
+ (error "eieio-test-methodinvoke.el: Test Failed: %S != %S"
+ rightanswer eieio-test-method-order-list)))
(defvar eieio-test-call-next-method-arguments nil
"List of passed to methods during execution of `call-next-method'.")
(ert-deftest eieio-test-method-order-list-3 ()
(let ((eieio-test-method-order-list nil)
(ans '(
- (eitest-F :BEFORE eitest-B)
- (eitest-F :BEFORE eitest-B-base1)
- (eitest-F :BEFORE eitest-B-base2)
+ (:BEFORE eitest-B)
+ (:BEFORE eitest-B-base1)
+ (:BEFORE eitest-B-base2)
- (eitest-F :PRIMARY eitest-B)
- (eitest-F :PRIMARY eitest-B-base1)
- (eitest-F :PRIMARY eitest-B-base2)
+ (:PRIMARY eitest-B)
+ (:PRIMARY eitest-B-base1)
+ (:PRIMARY eitest-B-base2)
- (eitest-F :AFTER eitest-B-base2)
- (eitest-F :AFTER eitest-B-base1)
- (eitest-F :AFTER eitest-B)
+ (:AFTER eitest-B-base2)
+ (:AFTER eitest-B-base1)
+ (:AFTER eitest-B)
)))
(eitest-F (eitest-B nil))
(setq eieio-test-method-order-list (nreverse eieio-test-method-order-list))
(ert-deftest eieio-test-method-order-list-4 ()
;; Both of these situations should succeed.
- (should (eitest-H eitest-A))
+ (should (eitest-H 'eitest-A))
(should (eitest-H (eitest-A nil))))
;;; Return value from :PRIMARY
(defclass C-base2 () ())
(defclass C (C-base1 C-base2) ())
+;; Just use the obsolete name once, to make sure it also works.
(defmethod constructor :STATIC ((p C-base1) &rest args)
(eieio-test-method-store)
(if (next-method-p) (call-next-method))
)
-(defmethod constructor :STATIC ((p C-base2) &rest args)
+(defmethod eieio-constructor :STATIC ((p C-base2) &rest args)
(eieio-test-method-store)
(if (next-method-p) (call-next-method))
)
-(defmethod constructor :STATIC ((p C) &rest args)
+(defmethod eieio-constructor :STATIC ((p C) &rest args)
(eieio-test-method-store)
(call-next-method)
)
(ert-deftest eieio-test-method-order-list-6 ()
(let ((eieio-test-method-order-list nil)
(ans '(
- (constructor :STATIC C)
- (constructor :STATIC C-base1)
- (constructor :STATIC C-base2)
+ (:STATIC C)
+ (:STATIC C-base1)
+ (:STATIC C-base2)
)))
(C nil)
(setq eieio-test-method-order-list (nreverse eieio-test-method-order-list))
(ert-deftest eieio-test-method-order-list-7 ()
(let ((eieio-test-method-order-list nil)
(ans '(
- (eitest-F :PRIMARY D)
- (eitest-F :PRIMARY D-base1)
- ;; (eitest-F :PRIMARY D-base2)
- (eitest-F :PRIMARY D-base0)
+ (:PRIMARY D)
+ (:PRIMARY D-base1)
+ ;; (:PRIMARY D-base2)
+ (:PRIMARY D-base0)
)))
(eitest-F (D nil))
(setq eieio-test-method-order-list (nreverse eieio-test-method-order-list))
(ert-deftest eieio-test-method-order-list-8 ()
(let ((eieio-test-method-order-list nil)
(ans '(
- (eitest-F :PRIMARY E)
- (eitest-F :PRIMARY E-base1)
- (eitest-F :PRIMARY E-base2)
- (eitest-F :PRIMARY E-base0)
+ (:PRIMARY E)
+ (:PRIMARY E-base1)
+ (:PRIMARY E-base2)
+ (:PRIMARY E-base0)
)))
(eitest-F (E nil))
(setq eieio-test-method-order-list (nreverse eieio-test-method-order-list))