1 /**
2 *
3 * $Header: /cvsroot/lesstif/lesstif/test/Xm/bulletinboard/test12.c,v 1.6 2001/04/24 12:07:59 amai Exp $
4 *
5 **/
6
7 #include <stdlib.h>
8 #include <stdio.h>
9 #include <Xm/Xm.h>
10 #include <Xm/Label.h>
11 #include <Xm/BulletinBP.h>
12
13 #include "../../common/Test.h"
14
15
16 Boolean GlobalResult = True;
17
18 static String FallBack[] = {
19 "*geometry: +500+500",
20 "*borderWidth: 1",
21 NULL};
22
23 typedef struct {
24 XtGeometryResult result;
25 XtWidgetGeometry geo;
26 } QueryResult;
27
28
29
QueryGeometry(Widget W,XtWidgetGeometry * request,QueryResult * Expected,XtWidgetGeometry * desired)30 static Boolean QueryGeometry(Widget W, XtWidgetGeometry *request, QueryResult *Expected, XtWidgetGeometry *desired)
31 {
32 Boolean status = True;
33 XtWidgetGeometry OriginalRequest;
34 XtGeometryResult result;
35
36 if (request)
37 OriginalRequest = *request;
38
39 printf("QueryGeometry asked for (%s) ",
40 XdbWidgetGeometry2String(request));
41
42 result = XtQueryGeometry(W, request, desired);
43
44 printf("got (%s %s) ",
45 XdbWidgetGeometry2String(desired),
46 XdbGeometryResult2String(result));
47 printf("expected (%s %s %s) ",
48 XdbWidgetGeometry2String(&Expected->geo),
49 XdbGeometryResult2String(Expected->result),
50 XdbWidgetGeometry2String(request));
51 /*
52 printf("original return (%s) ",
53 XdbWidgetGeometry2String(request));
54 */
55
56 if ((desired->request_mode & Expected->geo.request_mode) == Expected->geo.request_mode &&
57 desired->width == Expected->geo.width &&
58 desired->height == Expected->geo.height &&
59 result == Expected->result &&
60 (!request ? True : (OriginalRequest.request_mode == request->request_mode &&
61 OriginalRequest.width == request->width &&
62 OriginalRequest.height == request->height))
63 )
64 {
65 printf("Passed\n");
66 }
67 else
68 {
69 printf("Failed\n");
70 status = False;
71 }
72 return(status);
73 }
74
DoTests(Widget Form)75 static void DoTests(Widget Form)
76 {
77 XtWidgetGeometry Preferred;
78
79 { /* Ask what it wants */
80 QueryResult Expect;
81 XtWidgetGeometry desired;
82 Dimension mh, mw;
83 WidgetList children;
84 Cardinal numKids;
85
86 Expect.geo.request_mode = CWWidth | CWHeight;
87 XtVaGetValues(Form,
88 XmNchildren, &children,
89 XmNnumChildren, &numKids,
90 NULL);
91 if (numKids == 0 || !XtIsManaged(children[0]))
92 {
93 Expect.geo.width = 11;
94 Expect.geo.height = 11;
95 Expect.result = XtGeometryAlmost;
96 }
97 else
98 {
99 Dimension bw;
100
101 XtVaGetValues(children[0],
102 XmNborderWidth, &bw,
103 XmNwidth, &Expect.geo.width,
104 XmNheight, &Expect.geo.height,
105 NULL);
106 Expect.geo.width += 2 * bw + 11;
107 Expect.geo.height += 2 * bw + 11;
108
109 if (XtIsRealized(Form))
110 {
111 Expect.result = XtGeometryNo;
112 Expect.geo.width += 2 * bw + 11 - 3;
113 Expect.geo.height += 2 * bw + 11 - 3;
114 }
115 else
116 {
117 Expect.result = XtGeometryAlmost;
118 }
119 }
120
121 GlobalResult &= QueryGeometry(Form, NULL, &Expect, &desired);
122 Preferred = desired;
123 }
124 { /* Propose what it wants */
125 QueryResult Expect;
126 XtWidgetGeometry Proposed;
127 XtWidgetGeometry desired;
128
129 Expect.geo.request_mode = CWWidth | CWHeight;
130 Expect.geo.width = Preferred.width;
131 Expect.geo.height = Preferred.height;
132 Expect.result = XtGeometryYes;
133
134 Proposed.request_mode = CWWidth | CWHeight;
135 Proposed.width = Preferred.width;
136 Proposed.height = Preferred.height;
137 GlobalResult &= QueryGeometry(Form, &Proposed, &Expect, &desired);
138 }
139 { /* propose something bigger in width */
140 QueryResult Expect;
141 XtWidgetGeometry Proposed;
142 XtWidgetGeometry desired;
143
144 Expect.geo.request_mode = CWWidth | CWHeight;
145 Expect.geo.width = Preferred.width;
146 Expect.geo.height = Preferred.height;
147 if (XtIsRealized(Form))
148 {
149 Expect.result = XtGeometryNo;
150 }
151 else
152 {
153 Expect.result = XtGeometryAlmost;
154 }
155
156 Proposed.request_mode = CWWidth;
157 Proposed.width = Preferred.width + 1;
158 Proposed.height = Preferred.height;
159 GlobalResult &= QueryGeometry(Form, &Proposed, &Expect, &desired);
160 }
161 { /* propose something bigger */
162 QueryResult Expect;
163 XtWidgetGeometry Proposed;
164 XtWidgetGeometry desired;
165
166 Expect.geo.request_mode = CWWidth | CWHeight;
167 Expect.geo.width = Preferred.width;
168 Expect.geo.height = Preferred.height;
169 if (XtIsRealized(Form))
170 {
171 Expect.result = XtGeometryNo;
172 }
173 else
174 {
175 Expect.result = XtGeometryAlmost;
176 }
177
178 Proposed.request_mode = CWWidth | CWHeight;
179 Proposed.width = Preferred.width + 1;
180 Proposed.height = Preferred.height + 1;
181 GlobalResult &= QueryGeometry(Form, &Proposed, &Expect, &desired);
182 }
183 { /* propose something smaller */
184 QueryResult Expect;
185 XtWidgetGeometry Proposed;
186 XtWidgetGeometry desired;
187
188 Expect.geo.request_mode = CWWidth | CWHeight;
189 Expect.geo.width = Preferred.width;
190 Expect.geo.height = Preferred.height;
191 if (XtIsRealized(Form))
192 {
193 Expect.result = XtGeometryNo;
194 }
195 else
196 {
197 Expect.result = XtGeometryAlmost;
198 }
199
200 Proposed.request_mode = CWWidth | CWHeight;
201 Proposed.width = Preferred.width - 1;
202 Proposed.height = Preferred.height - 1;
203 GlobalResult &= QueryGeometry(Form, &Proposed, &Expect, &desired);
204 }
205 }
206
207 int
main(int argc,char ** argv)208 main(int argc, char **argv)
209 {
210 Widget toplevel;
211 Widget Form;
212 Widget label;
213 XtAppContext app;
214
215 XtSetLanguageProc(NULL, NULL, NULL);
216
217 toplevel = XtVaAppInitialize(&app, "test23", NULL, 0, &argc, argv, FallBack, NULL);
218
219 printf("Create a BulletinBoard\n");
220 Form = XmCreateBulletinBoard(toplevel, "TestWidget", NULL, 0);
221
222 DoTests(Form);
223
224 printf("\nCreate a label in the BulletinBoard\n");
225 label = XmCreateLabel(Form, "TestWidget", NULL, 0);
226
227 DoTests(Form);
228
229 printf("\nManage the label\n");
230 XtManageChild(label);
231
232 DoTests(Form);
233
234 printf("\nManage the BulletinBoard\n");
235 XtManageChild(Form);
236
237 DoTests(Form);
238
239 printf("\nRealize the Shell\n");
240 XtRealizeWidget(toplevel);
241
242 DoTests(Form);
243
244 /*
245 printf("%s\n",GlobalResult ? "All Passed" : "One or more Failed");
246 */
247
248
249 /*
250 Create a BulletinBoard
251 QueryGeometry asked for (NULL_GEOMETRY) got (w 11 h 11 Almost) expected (w 11 h 11 Almost) Passed
252 QueryGeometry asked for (w 11 h 11) got (w 11 h 11 Yes) expected (w 11 h 11 Yes) Passed
253 QueryGeometry asked for (w 12) got (w 11 h 11 Almost) expected (w 11 h 11 Almost) Passed
254 QueryGeometry asked for (w 12 h 12) got (w 11 h 11 Almost) expected (w 11 h 11 Almost) Passed
255 QueryGeometry asked for (w 10 h 10) got (w 11 h 11 Almost) expected (w 11 h 11 Almost) Passed
256
257 Create a label in the BulletinBoard
258 QueryGeometry asked for (NULL_GEOMETRY) got (w 11 h 11 Almost) expected (w 11 h 11 Almost) Passed
259 QueryGeometry asked for (w 11 h 11) got (w 11 h 11 Yes) expected (w 11 h 11 Yes) Passed
260 QueryGeometry asked for (w 12) got (w 11 h 11 Almost) expected (w 11 h 11 Almost) Passed
261 QueryGeometry asked for (w 12 h 12) got (w 11 h 11 Almost) expected (w 11 h 11 Almost) Passed
262 QueryGeometry asked for (w 10 h 10) got (w 11 h 11 Almost) expected (w 11 h 11 Almost) Passed
263
264 Manage the label
265 QueryGeometry asked for (NULL_GEOMETRY) got (w 77 h 30 Almost) expected (w 77 h 30 Almost) Passed
266 QueryGeometry asked for (w 77 h 30) got (w 77 h 30 Yes) expected (w 77 h 30 Yes) Passed
267 QueryGeometry asked for (w 78) got (w 77 h 30 Almost) expected (w 77 h 30 Almost) Passed
268 QueryGeometry asked for (w 78 h 31) got (w 77 h 30 Almost) expected (w 77 h 30 Almost) Passed
269 QueryGeometry asked for (w 76 h 29) got (w 77 h 30 Almost) expected (w 77 h 30 Almost) Passed
270
271 Manage the BulletinBoard
272 QueryGeometry asked for (NULL_GEOMETRY) got (w 77 h 30 Almost) expected (w 77 h 30 Almost) Passed
273 QueryGeometry asked for (w 77 h 30) got (w 77 h 30 Yes) expected (w 77 h 30 Yes) Passed
274 QueryGeometry asked for (w 78) got (w 77 h 30 Almost) expected (w 77 h 30 Almost) Passed
275 QueryGeometry asked for (w 78 h 31) got (w 77 h 30 Almost) expected (w 77 h 30 Almost) Passed
276 QueryGeometry asked for (w 76 h 29) got (w 77 h 30 Almost) expected (w 77 h 30 Almost) Passed
277
278 Realize the Shell
279 QueryGeometry asked for (NULL_GEOMETRY) got (w 87 h 40 No) expected (w 87 h 40 No) Passed
280 QueryGeometry asked for (w 87 h 40) got (w 87 h 40 Yes) expected (w 87 h 40 Yes) Passed
281 QueryGeometry asked for (w 88) got (w 87 h 40 No) expected (w 87 h 40 No) Passed
282 QueryGeometry asked for (w 88 h 41) got (w 87 h 40 No) expected (w 87 h 40 No) Passed
283 QueryGeometry asked for (w 86 h 39) got (w 87 h 40 No) expected (w 87 h 40 No) Passed
284 */
285 /* Note: the following values are the result of
286 * querying the current geometry.
287 */
288 {
289 static XtWidgetGeometry Expected[] = {
290 CWWidth | CWHeight , 508, 524, 87, 40, 0,0,0, /* TestWidget */
291 CWWidth | CWHeight | CWX | CWY, 10, 10, 64, 17, 0,0,0, /* TestWidget */
292 };
293 /* toplevel should be replaced with to correct applicationShell */
294 PrintDetails(toplevel, Expected);
295 }
296 LessTifTestMainLoop(toplevel);
297 exit(GlobalResult ? 0 : 1);
298 }
299