Test return QVariant on the stack
Annotate for file src/overload.lisp
2009-04-02 tobias 1 (in-package :qt.tests)
22:17:02 ' 2
' 3 (5am:in-suite :qt.suite)
' 4
' 5 (defclass my-object (qt:object)
' 6 ((counter :accessor counter :initform 0))
2009-05-31 tobias 7 (:metaclass cxx:class))
2009-04-02 tobias 8
2009-05-31 tobias 9 (defmethod cxx:timer-event ((object my-object))
22:56:59 ' 10 (incf (counter object)))
2009-04-02 tobias 11
2009-05-31 tobias 12
22:56:59 ' 13 ;;FIXME
' 14 #|(5am:test timer
2009-04-02 tobias 15 (let ((object (make-instance 'my-object)))
2009-05-31 tobias 16 (qt:init-app)
22:56:59 ' 17 (5am:is (= 0 (counter object)))
' 18 (cxx:starttimer object 50)
' 19 (sleep 3)
' 20 (5am:is (= 1 (counter object)))))
' 21 |#
2009-05-31 tobias 22 (defclass my-list-model (qt:abstract-list-model)
17:37:47 ' 23 ((counter :accessor counter :initform 0))
' 24 (:metaclass cxx:class))
' 25
' 26 (defmethod cxx:data ((list my-list-model) index role)
' 27 (incf (counter list))
' 28 (if (< (cxx:row index) 2)
' 29 (qt:make-variant (cxx:row index))
' 30 (qt:make-variant)))
' 31
' 32 (defmethod cxx:row-count ((list my-list-model) parent)
' 33 2)
' 34
' 35 (5am:test return-on-stack
' 36 "Test virtual method return value on stack."
' 37 (let ((list (make-instance 'my-list-model))
' 38 (proxy (make-instance 'qt:sort-filter-proxy-model)))
' 39 (5am:is (= 0 (counter list)))
' 40 (setf (cxx:source-model proxy) list)
' 41 (dotimes (i 10) ;; test for faulty ownership transfer
' 42 (cxx:sort proxy 0)
' 43 (gc :full t))
' 44 (5am:is (< 0 (counter list)))))
' 45
' 46 (5am:test return-on-stack-c++
' 47 (let ((list (make-instance
' 48 'qt:string-list-model :args (list #("foo" "bar"))))
' 49 (proxy (make-instance 'qt:sort-filter-proxy-model)))
' 50 (setf (cxx:source-model proxy) list)
' 51 (dotimes (i 10) ;; test for faulty ownership transfer
' 52 (cxx:sort proxy 0)
' 53 (gc :full t))
' 54 (5am:is (= 2 (cxx:row-count list)))))
' 55