repos
/
qt.tests
/ annotate_shade
summary
|
shortlog
|
log
|
tree
|
commit
|
commitdiff
|
headdiff
|
annotate
|
headblob
|
headfilediff
|
filehistory
normal
|
plain
|
shade
|
zebra
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