1
|
/**
|
2
|
Setup initial state before running a test or a group of tests.
|
3
|
*/
|
4
|
PROCEDURE testInit PRIVATE:
|
5
|
DEFINE INPUT PARAMETER iFrame AS HANDLE NO-UNDO. // Inner frame handle
|
6
|
DEFINE INPUT PARAMETER oFrame AS HANDLE NO-UNDO. // Outer frame handle
|
7
|
|
8
|
DEFAULT-WINDOW:HEIGHT-PIXELS = 500.
|
9
|
DEFAULT-WINDOW:MAX-HEIGHT-PIXELS = 500.
|
10
|
DEFAULT-WINDOW:VIRTUAL-HEIGHT-PIXELS = 500.
|
11
|
// SET window wide enough to accomodate all buttons
|
12
|
DEFAULT-WINDOW:WIDTH-PIXELS = 800.
|
13
|
|
14
|
iFrame:HEIGHT-PIXELS = 300.
|
15
|
iFrame:VIRTUAL-HEIGHT-PIXELS = 300.
|
16
|
RUN testFrameAtts(iFrame, 300, 300, "Internal Frame Reset").
|
17
|
|
18
|
oFrame:HEIGHT-PIXELS = 350.
|
19
|
oFrame:VIRTUAL-HEIGHT-PIXELS = 350.
|
20
|
RUN testFrameAtts(oFrame, 350, 350, "Outer Frame Reset").
|
21
|
END.
|
22
|
|
23
|
PROCEDURE assert PRIVATE:
|
24
|
DEFINE INPUT PARAMETER val AS LOGICAL NO-UNDO. // The result
|
25
|
DEFINE INPUT PARAMETER msg AS CHARACTER NO-UNDO. // Where description to report error
|
26
|
IF (NOT val) THEN
|
27
|
MESSAGE "Assertion error: " msg VIEW-AS ALERT-BOX ERROR.
|
28
|
END.
|
29
|
|
30
|
PROCEDURE assertIntEquals PRIVATE:
|
31
|
DEFINE INPUT PARAMETER val AS INTEGER NO-UNDO. // The result
|
32
|
DEFINE INPUT PARAMETER expected AS INTEGER NO-UNDO. // The expected value
|
33
|
DEFINE INPUT PARAMETER msg AS CHARACTER NO-UNDO. // Where description to report error
|
34
|
IF (val <> expected) THEN
|
35
|
MESSAGE "Assertion error: " msg " expected: " expected " got: " val VIEW-AS ALERT-BOX ERROR.
|
36
|
END.
|
37
|
|
38
|
/** Test DEFAULT-WINDOW attributes: HEIGHT-PIXELS, MAX-HEIGHT-PIXELS, VIRTUAL-HEIGHT-PIXELS */
|
39
|
PROCEDURE testWindowAtts PRIVATE:
|
40
|
DEFINE INPUT PARAMETER wp AS INTEGER NO-UNDO. // Expected window height pixels
|
41
|
DEFINE INPUT PARAMETER mxwp AS INTEGER NO-UNDO. // Expected window max height pixels
|
42
|
DEFINE INPUT PARAMETER vwp AS INTEGER NO-UNDO. // Expected window virtual height pixels
|
43
|
RUN assertIntEquals(DEFAULT-WINDOW:HEIGHT-PIXELS, wp, "window height").
|
44
|
RUN assertIntEquals(DEFAULT-WINDOW:MAX-HEIGHT-PIXELS, mxwp, "window max height").
|
45
|
RUN assertIntEquals(DEFAULT-WINDOW:VIRTUAL-HEIGHT-PIXELS, vwp, "window virt height").
|
46
|
END.
|
47
|
|
48
|
/** Test frame attributes: HEIGHT-PIXELS, VIRTUAL-HEIGHT-PIXELS */
|
49
|
PROCEDURE testFrameAtts PRIVATE:
|
50
|
DEFINE INPUT PARAMETER hFrame AS HANDLE NO-UNDO. // Frame handle
|
51
|
DEFINE INPUT PARAMETER wp AS INTEGER NO-UNDO. // Expected frame height pixels
|
52
|
DEFINE INPUT PARAMETER vwp AS INTEGER NO-UNDO. // Expected frame virtual height pixels
|
53
|
DEFINE INPUT PARAMETER msg AS CHARACTER NO-UNDO. // Test ID
|
54
|
RUN assertIntEquals(hFrame:HEIGHT-PIXELS, wp, msg + " height").
|
55
|
RUN assertIntEquals(hFrame:VIRTUAL-HEIGHT-PIXELS, vwp, msg + " virt height").
|
56
|
END.
|
57
|
|
58
|
/**
|
59
|
* Tests for setting window:MAX-HEIGHT-PIXELS
|
60
|
*/
|
61
|
PROCEDURE testWindowMaxHeight PRIVATE:
|
62
|
// #5809
|
63
|
MESSAGE "MHP 1".
|
64
|
DEFAULT-WINDOW:MAX-HEIGHT-PIXELS = 350.
|
65
|
RUN testWindowAtts(300, 350, 400).
|
66
|
|
67
|
MESSAGE "MHP 2".
|
68
|
DEFAULT-WINDOW:MAX-HEIGHT-PIXELS = 300.
|
69
|
RUN testWindowAtts(300, 300, 400).
|
70
|
|
71
|
MESSAGE "MHP 3".
|
72
|
DEFAULT-WINDOW:MAX-HEIGHT-PIXELS = 250.
|
73
|
RUN testWindowAtts(250, 250, 400).
|
74
|
|
75
|
MESSAGE "MHP 4".
|
76
|
DEFAULT-WINDOW:MAX-HEIGHT-PIXELS = 0.
|
77
|
RUN testWindowAtts(124, 0, 400).
|
78
|
END.
|
79
|
|
80
|
/**
|
81
|
* Tests for setting outer frame HEIGHT-PIXELS
|
82
|
*/
|
83
|
PROCEDURE testOuterFrameHeight PRIVATE:
|
84
|
DEFINE INPUT PARAMETER hFrame AS HANDLE NO-UNDO. // Frame handle
|
85
|
DEFINE INPUT PARAMETER realized AS LOGICAL NO-UNDO. // Is frame realized?
|
86
|
|
87
|
// Check initial values
|
88
|
RUN testFrameAtts(hFrame, 350, 350, "OFH 0").
|
89
|
|
90
|
// Reduce the HEIGHT, the VIRTUAL-HEIGHT should NOT change
|
91
|
hFrame:HEIGHT-PIXELS = 150.
|
92
|
RUN testFrameAtts(hFrame, 150, 350, "OFH 1").
|
93
|
|
94
|
// Restore the HEIGHT to initial value
|
95
|
hFrame:HEIGHT-PIXELS = 350.
|
96
|
RUN testFrameAtts(hFrame, 350, 350, "OFH 2").
|
97
|
|
98
|
// Try to make it bigger than the window
|
99
|
hFrame:HEIGHT-PIXELS = 600.
|
100
|
IF realized THEN
|
101
|
RUN testFrameAtts(hFrame, 500, 600, "OFH 3"). // If realized, height is limited by window height
|
102
|
ELSE
|
103
|
RUN testFrameAtts(hFrame, 600, 600, "OFH 3"). // If unrealized, no limiting by window sizes
|
104
|
|
105
|
hFrame:HEIGHT-PIXELS = 0 NO-ERROR.
|
106
|
RUN assertIntEquals(ERROR-STATUS:GET-NUMBER(1), 4084, "outerFrame:HEIGHT-PIXELS = 0").
|
107
|
IF realized THEN
|
108
|
RUN testFrameAtts(hFrame, 500, 600, "OFH 4"). // Frame height restricted by window virt height
|
109
|
ELSE
|
110
|
RUN testFrameAtts(hFrame, 600, 600, "OFH 4").
|
111
|
END.
|
112
|
|
113
|
/**
|
114
|
* Tests for setting inner frame HEIGHT-PIXELS
|
115
|
*/
|
116
|
PROCEDURE testInnerFrameHeight PRIVATE:
|
117
|
DEFINE INPUT PARAMETER hFrame AS HANDLE NO-UNDO. // Frame handle
|
118
|
DEFINE INPUT PARAMETER realized AS LOGICAL NO-UNDO. // Is frame realized?
|
119
|
|
120
|
// Check initial values
|
121
|
RUN testFrameAtts(hFrame, 300, 300, "IFW 0").
|
122
|
|
123
|
// Reduce the HEIGHT, the VIRTUAL-HEIGHT should NOT change
|
124
|
hFrame:HEIGHT-PIXELS = 150.
|
125
|
RUN testFrameAtts(hFrame, 150, 300, "IFW 1").
|
126
|
|
127
|
// Restore the HEIGHT to initial value
|
128
|
hFrame:HEIGHT-PIXELS = 300.
|
129
|
RUN testFrameAtts(hFrame, 300, 300, "IFW 2").
|
130
|
|
131
|
// Try to make it bigger than the window
|
132
|
hFrame:HEIGHT-PIXELS = 600.
|
133
|
IF realized THEN
|
134
|
RUN testFrameAtts(hFrame, 500, 600, "IFW 3").
|
135
|
ELSE
|
136
|
RUN testFrameAtts(hFrame, 600, 600, "IFW 3"). // If unrealized, no limiting by window sizes
|
137
|
|
138
|
// Setting size to zero: an error is reported, no changes occurs
|
139
|
hFrame:HEIGHT-PIXELS = 0 NO-ERROR.
|
140
|
RUN assertIntEquals(ERROR-STATUS:GET-NUMBER(1), 4084, "innerFrame:HEIGHT-PIXELS = 0").
|
141
|
IF realized THEN
|
142
|
RUN testFrameAtts(hFrame, 500, 600, "IFW 4"). // Frame height restricted by window virt height
|
143
|
ELSE
|
144
|
RUN testFrameAtts(hFrame, 600, 600, "IFW 4").
|
145
|
END.
|
146
|
|
147
|
/** Buttons */
|
148
|
DEFINE BUTTON bWindowHeightPixels LABEL "Window Height Pixels".
|
149
|
DEFINE BUTTON bWindowMaxHeightPixels LABEL "Window Max Height Pixels".
|
150
|
DEFINE BUTTON bWindowVirtualHeightPixels LABEL "Window Virtual Height Pixels".
|
151
|
|
152
|
DEFINE BUTTON bInnerFrameHeightPixels LABEL "Inner Frame Height Pixels".
|
153
|
DEFINE BUTTON bInnerFrameVirtualHeightPixels LABEL "Inner Frame Virtual Height Pixels".
|
154
|
DEFINE BUTTON bInnerFrameLeftPixels LABEL "Inner Frame Left".
|
155
|
|
156
|
DEFINE BUTTON bOuterFrameHeightPixels LABEL "Outer Frame Height Pixels".
|
157
|
DEFINE BUTTON bOuterFrameVirtualHeightPixels LABEL "Outer Frame Virtual Height Pixels".
|
158
|
DEFINE BUTTON bOuterFrameLeftPixels LABEL "Outer Frame Left".
|
159
|
|
160
|
DEFINE BUTTON bOuterFrameHeightChars LABEL "Outer Frame Height Chars".
|
161
|
DEFINE BUTTON bOuterFrameVirtualHeightChars LABEL "Outer Frame Virtual Height Chars".
|
162
|
DEFINE BUTTON bOuterFrameLeftChars LABEL "Outer Frame Left".
|
163
|
|
164
|
DEFINE BUTTON bButtonHeightPixels LABEL "Button Height Pixels".
|
165
|
|
166
|
DEFINE BUTTON bRunTests LABEL "RunTests".
|
167
|
|
168
|
DEFINE VARIABLE bFramesScrollable AS LOGICAL NO-UNDO VIEW-AS TOGGLE-BOX LABEL "FramesScrollable".
|
169
|
|
170
|
/** Print all related values */
|
171
|
DEFINE BUTTON bPrint LABEL "Print Heights".
|
172
|
|
173
|
DEFINE FRAME innerFrame
|
174
|
bWindowHeightPixels AT X 5 Y 5 NO-LABEL
|
175
|
bWindowMaxHeightPixels AT X 5 Y 30 NO-LABEL
|
176
|
bWindowVirtualHeightPixels AT X 5 Y 55 NO-LABEL
|
177
|
|
178
|
bInnerFrameHeightPixels AT X 5 Y 90 NO-LABEL
|
179
|
bInnerFrameVirtualHeightPixels AT X 5 Y 115 NO-LABEL
|
180
|
bInnerFrameLeftPixels AT X 5 Y 140 NO-LABEL
|
181
|
|
182
|
bOuterFrameHeightPixels AT X 205 Y 5 NO-LABEL
|
183
|
bOuterFrameVirtualHeightPixels AT X 205 Y 30 NO-LABEL
|
184
|
bOuterFrameLeftPixels AT X 205 Y 55 NO-LABEL
|
185
|
|
186
|
bOuterFrameHeightChars AT X 205 Y 90 NO-LABEL
|
187
|
bOuterFrameVirtualHeightChars AT X 205 Y 115 NO-LABEL
|
188
|
bOuterFrameLeftChars AT X 205 Y 140 NO-LABEL
|
189
|
|
190
|
bButtonHeightPixels AT X 405 Y 5 NO-LABEL
|
191
|
bPrint AT X 405 Y 30 NO-LABEL
|
192
|
bFramesScrollable AT X 405 Y 55 NO-LABEL
|
193
|
bRunTests AT X 405 Y 80 NO-LABEL
|
194
|
WITH
|
195
|
SIZE-PIXELS 600 BY 300
|
196
|
SCROLLABLE
|
197
|
.
|
198
|
|
199
|
DEFINE FRAME outerFrame
|
200
|
WITH
|
201
|
SCROLLABLE
|
202
|
SIZE-PIXELS 600 BY 350
|
203
|
.
|
204
|
FRAME innerFrame:FRAME = FRAME outerFrame:HANDLE.
|
205
|
|
206
|
// Note: we set virtual height to the value explicitly here to workaround a bug #5809, issue 4
|
207
|
// In 4gl this happens automatically when the frame is realized.
|
208
|
// Remove this assignmens as soon the #5809 issue 4 is fixed.
|
209
|
FRAME innerFrame:VIRTUAL-HEIGHT-PIXELS = 300.
|
210
|
FRAME outerFrame:VIRTUAL-HEIGHT-PIXELS = 350.
|
211
|
|
212
|
// Run tests on un-realized window/frame
|
213
|
RUN testWindowAtts(462, 462, 462).
|
214
|
|
215
|
RUN testInit(FRAME innerFrame:HANDLE, FRAME outerFrame:HANDLE).
|
216
|
|
217
|
// Test inner frame before outer frame
|
218
|
RUN testInnerFrameHeight(FRAME innerFrame:HANDLE, FALSE).
|
219
|
RUN testOuterFrameHeight(FRAME outerFrame:HANDLE, FALSE).
|
220
|
|
221
|
ENABLE ALL WITH FRAME innerFrame.
|
222
|
ENABLE ALL WITH FRAME outerFrame.
|
223
|
|
224
|
|
225
|
// FIXME In FWD the outerFrame is automatically placed at 20 pixels along ther Y coordinate.
|
226
|
// Until this fixed, explicitly SET FRAME Y TO zero.
|
227
|
// RUN assertIntEquals(FRAME outerFrame:Y, 0, "outerFrame Y").
|
228
|
// FRAME outerFrame:Y = 0.
|
229
|
|
230
|
bFramesScrollable:SCREEN-VALUE = "yes".
|
231
|
|
232
|
VIEW FRAME innerFrame.
|
233
|
|
234
|
RUN assertIntEquals(FRAME outerFrame:Y, 0, "outerFrame Y 4").
|
235
|
|
236
|
ON CHOOSE OF bWindowHeightPixels DO:
|
237
|
DEFINE VARIABLE newValue AS INTEGER.
|
238
|
newValue = ?.
|
239
|
MESSAGE "New Window Height Pixels (" DEFAULT-WINDOW:HEIGHT-PIXELS "):" SET newValue.
|
240
|
DEFAULT-WINDOW:HEIGHT-PIXELS = newValue.
|
241
|
END.
|
242
|
|
243
|
ON CHOOSE OF bWindowMaxHeightPixels DO:
|
244
|
DEFINE VARIABLE newValue AS INTEGER.
|
245
|
newValue = ?.
|
246
|
MESSAGE "New Window Max Height Pixels (" DEFAULT-WINDOW:MAX-HEIGHT-PIXELS "):" SET newValue.
|
247
|
DEFAULT-WINDOW:MAX-HEIGHT-PIXELS = newValue.
|
248
|
END.
|
249
|
|
250
|
ON CHOOSE OF bWindowVirtualHeightPixels DO:
|
251
|
DEFINE VARIABLE newValue AS INTEGER.
|
252
|
newValue = ?.
|
253
|
MESSAGE "New Window Virtual Height Pixels ("
|
254
|
DEFAULT-WINDOW:VIRTUAL-HEIGHT-PIXELS "):" SET newValue.
|
255
|
DEFAULT-WINDOW:VIRTUAL-HEIGHT-PIXELS = newValue.
|
256
|
END.
|
257
|
|
258
|
ON CHOOSE OF bInnerFrameHeightPixels DO:
|
259
|
DEFINE VARIABLE newValue AS INTEGER.
|
260
|
newValue = ?.
|
261
|
MESSAGE "New Inner Frame Height Pixels (" FRAME innerFrame:HEIGHT-PIXELS "):" SET newValue.
|
262
|
FRAME innerFrame:HEIGHT-PIXELS = newValue.
|
263
|
END.
|
264
|
|
265
|
ON CHOOSE OF bInnerFrameVirtualHeightPixels DO:
|
266
|
DEFINE VARIABLE newValue AS INTEGER.
|
267
|
newValue = ?.
|
268
|
MESSAGE "New Inner Frame Virtual Height Pixels (" FRAME innerFrame:VIRTUAL-HEIGHT-PIXELS "):" SET newValue.
|
269
|
FRAME innerFrame:VIRTUAL-HEIGHT-PIXELS = newValue.
|
270
|
END.
|
271
|
|
272
|
ON CHOOSE OF bInnerFrameLeftPixels DO:
|
273
|
DEFINE VARIABLE newValue AS INTEGER.
|
274
|
newValue = ?.
|
275
|
MESSAGE "New Inner Frame Left Pixels (" FRAME innerFrame:X "):" SET newValue.
|
276
|
FRAME innerFrame:X = newValue.
|
277
|
END.
|
278
|
|
279
|
ON CHOOSE OF bOuterFrameHeightPixels DO:
|
280
|
DEFINE VARIABLE newValue AS INTEGER.
|
281
|
newValue = ?.
|
282
|
MESSAGE "New Outer Frame Height Pixels (" FRAME outerFrame:HEIGHT-PIXELS "):" SET newValue.
|
283
|
FRAME outerFrame:HEIGHT-PIXELS = newValue.
|
284
|
END.
|
285
|
|
286
|
ON CHOOSE OF bOuterFrameVirtualHeightPixels DO:
|
287
|
DEFINE VARIABLE newValue AS INTEGER.
|
288
|
newValue = ?.
|
289
|
MESSAGE "New Outer Frame Virtual Height Pixels (" FRAME outerFrame:VIRTUAL-HEIGHT-PIXELS "):" SET newValue.
|
290
|
FRAME outerFrame:VIRTUAL-HEIGHT-PIXELS = newValue.
|
291
|
END.
|
292
|
|
293
|
ON CHOOSE OF bOuterFrameLeftPixels DO:
|
294
|
DEFINE VARIABLE newValue AS INTEGER.
|
295
|
newValue = ?.
|
296
|
MESSAGE "New Outer Frame Left Pixels (" FRAME outerFrame:X "):" SET newValue.
|
297
|
FRAME outerFrame:X = newValue.
|
298
|
END.
|
299
|
|
300
|
ON CHOOSE OF bOuterFrameHeightChars DO:
|
301
|
DEFINE VARIABLE newValue AS DECIMAL FORMAT ">>9.99999999".
|
302
|
MESSAGE "New Outer Frame Height Chars (" FRAME outerFrame:HEIGHT-CHARS "):" SET newValue.
|
303
|
FRAME outerFrame:HEIGHT-CHARS = newValue.
|
304
|
END.
|
305
|
|
306
|
ON CHOOSE OF bOuterFrameVirtualHeightChars DO:
|
307
|
DEFINE VARIABLE newValue AS DECIMAL FORMAT ">>9.99999999".
|
308
|
MESSAGE "New Outer Frame Virtual Height Chars (" FRAME outerFrame:VIRTUAL-HEIGHT-CHARS "):" SET newValue.
|
309
|
FRAME outerFrame:VIRTUAL-HEIGHT-CHARS = newValue.
|
310
|
END.
|
311
|
|
312
|
ON CHOOSE OF bOuterFrameLeftChars DO:
|
313
|
DEFINE VARIABLE newValue AS DECIMAL FORMAT ">>9.99999999".
|
314
|
MESSAGE "New Outer Frame Left Chars (" FRAME outerFrame:X "):" SET newValue.
|
315
|
FRAME outerFrame:X = newValue.
|
316
|
END.
|
317
|
|
318
|
ON CHOOSE OF bPrint DO:
|
319
|
MESSAGE "IF X" FRAME innerFrame:X SKIP
|
320
|
"IF H" FRAME innerFrame:HEIGHT-PIXELS SKIP
|
321
|
"IF VH" FRAME innerFrame:VIRTUAL-HEIGHT-PIXELS SKIP
|
322
|
|
323
|
"OF X" FRAME outerFrame:X SKIP
|
324
|
"OF H" FRAME outerFrame:HEIGHT-PIXELS SKIP
|
325
|
"OF VH" FRAME outerFrame:VIRTUAL-HEIGHT-PIXELS SKIP
|
326
|
|
327
|
"OF HC" FRAME outerFrame:HEIGHT-CHARS SKIP
|
328
|
"OF VHC" FRAME outerFrame:VIRTUAL-HEIGHT-CHARS SKIP
|
329
|
|
330
|
"W H" DEFAULT-WINDOW:HEIGHT-PIXELS SKIP
|
331
|
"W MH" DEFAULT-WINDOW:MAX-HEIGHT-PIXELS SKIP
|
332
|
"W VH" DEFAULT-WINDOW:VIRTUAL-HEIGHT-PIXELS
|
333
|
VIEW-AS ALERT-BOX.
|
334
|
END.
|
335
|
|
336
|
ON CHOOSE OF bButtonHeightPixels DO:
|
337
|
DEFINE VARIABLE newValue AS INTEGER.
|
338
|
newValue = ?.
|
339
|
MESSAGE "New Button Height Pixels (" bButtonHeightPixels:HEIGHT-PIXELS "):" SET newValue.
|
340
|
bButtonHeightPixels:HEIGHT-PIXELS = newValue.
|
341
|
END.
|
342
|
|
343
|
ON CHOOSE OF bRunTests DO:
|
344
|
RUN testInit(FRAME innerFrame:HANDLE, FRAME outerFrame:HANDLE).
|
345
|
RUN testOuterFrameHeight(FRAME outerFrame:HANDLE, TRUE).
|
346
|
|
347
|
RUN testInit(FRAME innerFrame:HANDLE, FRAME outerFrame:HANDLE).
|
348
|
RUN testOuterFrameHeight(FRAME outerFrame:HANDLE, TRUE).
|
349
|
|
350
|
END.
|
351
|
|
352
|
ON VALUE-CHANGED OF bFramesScrollable
|
353
|
DO:
|
354
|
ASSIGN bFramesScrollable.
|
355
|
FRAME outerFrame:SCROLLABLE = bFramesScrollable.
|
356
|
END.
|
357
|
|
358
|
WAIT-FOR GO OF FRAME innerFrame.
|