koans, looks like exception handling with signals

This commit is contained in:
efim
2022-08-07 16:13:43 +00:00
parent 6f09e0019c
commit f4759c5685
2 changed files with 41 additions and 36 deletions

View File

@@ -187,13 +187,16 @@
(:method :after ((x bigger-object))
(incf (counter x) 2)))
;; (setq object (make-instance 'bigger-object))
;; (makunbound 'object)
(define-test standard-method-combination-order
(let ((object (make-instance 'object)))
(calculate object)
(assert-equal ____ (counter object)))
(let ((object (make-instance 'object)))
(calculate object)
(assert-equal -1/94 (counter object)))
(let ((object (make-instance 'bigger-object)))
(calculate object)
(assert-equal ____ (counter object))))
(assert-equal 197/99 (counter object))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -219,13 +222,13 @@
(define-test salary-at-company-a
(let ((programmer (make-instance 'programmer)))
(assert-equal ____ (salary-at-company-a programmer)))
(assert-equal 120000 (salary-at-company-a programmer)))
(let ((programmer (make-instance 'senior-programmer)))
(assert-equal ____ (salary-at-company-a programmer)))
(assert-equal 320000 (salary-at-company-a programmer)))
(let ((programmer (make-instance 'full-stack-programmer)))
(assert-equal ____ (salary-at-company-a programmer)))
(assert-equal (+ 48000 120000) (salary-at-company-a programmer)))
(let ((programmer (make-instance 'senior-full-stack-programmer)))
(assert-equal ____ (salary-at-company-a programmer))))
(assert-equal (+ 200000 48000 120000) (salary-at-company-a programmer))))
;;; It is also possible to define custom method combinations.
@@ -239,10 +242,10 @@
(define-test salary-at-company-b
(let ((programmer (make-instance 'programmer)))
(assert-equal ____ (salary-at-company-b programmer)))
(assert-equal 120000 (salary-at-company-b programmer)))
(let ((programmer (make-instance 'senior-programmer)))
(assert-equal ____ (salary-at-company-b programmer)))
(assert-equal (* 2 120000) (salary-at-company-b programmer)))
(let ((programmer (make-instance 'full-stack-programmer)))
(assert-equal ____ (salary-at-company-b programmer)))
(assert-equal (* 7/5 120000) (salary-at-company-b programmer)))
(let ((programmer (make-instance 'senior-full-stack-programmer)))
(assert-equal ____ (salary-at-company-b programmer))))
(assert-equal (* 2 7/5 120000) (salary-at-company-b programmer))))