Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 39 lines (34 sloc) 1.004 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
(in-package :cells)

(defmd tcc ()
  (tccversion 1)
  (tcc-a (c-in nil))
  (tcc-2a (c-in nil)))

(defobserver tcc-a ()
  (case (^tccversion)
    (1 (when new-value
         (with-cc :tcc-a-obs
           (setf (tcc-2a self) (* 2 new-value))
           (with-cc :aha!2
             (assert (eql (tcc-2a self) (* 2 new-value))
               () "one")
             (trc "one happy")))
         (with-cc :aha!
           (assert (eql (tcc-2a self) (* 2 new-value))
             () "two"))))
    (2 (when new-value
         (with-cc :tcc-a-obs
           (setf (tcc-2a self) (* 2 new-value))
           (with-cc :aha!2
             (assert (eql (tcc-2a self) (* 2 new-value))
               () "one")
             (trc "one happy")))))))


(defun test-with-cc ()
  (let ((self (make-instance 'tcc
                 :tccversion 2 ;:tcc-2a
                )))
    (trcx cool 42)
    (setf (tcc-a self) 42)
    (assert (and (numberp (tcc-2a self))
              (= (tcc-2a self) 84)))))

#+test
(test-with-cc)
Something went wrong with that request. Please try again.