Mercurial > projects > qtd
comparison d2/qt/core/test/Objects.d @ 372:a032df77b6ab
Simple debug helper. Unittests. Meta-object for polymorphic non-QObjects
author | Max Samukha <maxter@spambox.com> |
---|---|
date | Thu, 08 Jul 2010 17:19:05 +0300 |
parents | |
children | bd7f485e3573 |
comparison
equal
deleted
inserted
replaced
370:7fd4b69378bf | 372:a032df77b6ab |
---|---|
1 module qt.core.test.QObject; | |
2 | |
3 // make sure QtdUnittest is defined | |
4 version (QtdUnittest) {} else { static assert(false); } | |
5 | |
6 import | |
7 core.memory, | |
8 qtd.Debug, | |
9 qtd.meta.Runtime, | |
10 qt.core.QObject, | |
11 qt.core.QMetaObject; | |
12 | |
13 import std.stdio; | |
14 | |
15 extern (C) void* qtd_test_QObject_create(void* parent); | |
16 extern (C) void qtd_test_QObject_delete(void* nativeId); | |
17 extern (C) void qtd_test_QObject_event(void* nativeId); | |
18 | |
19 class C1 : QObject | |
20 { | |
21 mixin Q_CLASSINFO!("author", "Sabrina Schweinsteiger"); | |
22 mixin Q_CLASSINFO!("url", "http://doc.moosesoft.co.uk/1.0/"); | |
23 | |
24 static int slot1Called; | |
25 static ClassInfo eventReceived; | |
26 | |
27 this(QObject parent = null) | |
28 { | |
29 super(parent); | |
30 } | |
31 | |
32 final | |
33 { | |
34 void signal_signal1(); | |
35 void signal_signal2(int); | |
36 } | |
37 | |
38 override bool event(QEvent event) | |
39 { | |
40 eventReceived = event.classinfo; | |
41 return false; | |
42 } | |
43 | |
44 void slot_slot1() | |
45 { | |
46 slot1Called++; | |
47 } | |
48 | |
49 static void reset() | |
50 { | |
51 slot1Called = 0; | |
52 eventReceived = null; | |
53 } | |
54 | |
55 mixin Q_OBJECT; | |
56 } | |
57 | |
58 void test1() | |
59 { | |
60 auto c1 = new C1; | |
61 } | |
62 | |
63 void test2() | |
64 { | |
65 scope c1 = new C1; | |
66 } | |
67 | |
68 void test3() | |
69 { | |
70 auto ptr = qtd_test_QObject_create(null); | |
71 scope obj = meta!(QObject).getWrapper(ptr); | |
72 assert (qtdDebug.wrapperCount == 1); | |
73 } | |
74 | |
75 void test4() | |
76 { | |
77 scope c1 = new C1; | |
78 qtd_test_QObject_event(c1.qtdNativeId); | |
79 assert (c1.eventReceived !is null); | |
80 assert (c1.eventReceived.classinfo == QEvent.classinfo); | |
81 } | |
82 | |
83 void test5() | |
84 { | |
85 scope c1 = new C1; | |
86 | |
87 QObject.connect(c1, "signal1", c1, "slot1"); | |
88 c1.signal1(); | |
89 assert(c1.slot1Called == 1); | |
90 | |
91 QObject.connect(c1, "signal2", c1, "slot1"); | |
92 c1.signal2(42); | |
93 assert(C1.slot1Called == 2); | |
94 } | |
95 | |
96 unittest | |
97 { | |
98 static void reset() | |
99 { | |
100 qtdDebug.reset(); | |
101 C1.reset(); | |
102 } | |
103 | |
104 qtdDebug.info("Running unittests (" ~ __FILE__ ~")"); | |
105 | |
106 | |
107 //test1 | |
108 reset(); | |
109 test1(); | |
110 GC.collect(); | |
111 | |
112 writeln("Collected"); | |
113 assert(qtdDebug.wrapperCount == 1); | |
114 | |
115 | |
116 //test2 | |
117 reset(); | |
118 test2(); | |
119 assert(qtdDebug.wrapperCount == 0); | |
120 assert(qtdDebug.nativeDeletedCount == 1); | |
121 | |
122 //test3 | |
123 reset(); | |
124 test3(); | |
125 assert(qtdDebug.wrapperCount == 0); | |
126 assert(qtdDebug.nativeDeletedCount == 1); | |
127 | |
128 //test4 | |
129 reset(); | |
130 test4(); | |
131 GC.collect(); | |
132 assert(qtdDebug.wrapperCount == 0); | |
133 assert(qtdDebug.nativeDeletedCount == 1); | |
134 | |
135 //test5 | |
136 qtdDebug.reset(); | |
137 test5(); | |
138 assert(qtdDebug.wrapperCount == 0); | |
139 | |
140 qtdDebug.info("Unittests completed (" ~ __FILE__ ~")"); | |
141 } |