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 }