Project

General

Profile

static-frame-set-height.p

Vladimir Tsichevski, 11/16/2021 11:03 AM

Download (12.9 KB)

 
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.