1-- C96006A.ADA
2
3--                             Grant of Unlimited Rights
4--
5--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7--     unlimited rights in the software and documentation contained herein.
8--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
9--     this public release, the Government intends to confer upon all
10--     recipients unlimited rights  equal to those held by the Government.
11--     These rights include rights to use, duplicate, release or disclose the
12--     released technical data and computer software in whole or in part, in
13--     any manner and for any purpose whatsoever, and to have or permit others
14--     to do so.
15--
16--                                    DISCLAIMER
17--
18--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23--     PARTICULAR PURPOSE OF SAID MATERIAL.
24--*
25-- CHECK THAT FOR THE PACKAGE CALENDAR, THE RELATIONAL OPERATORS WORK
26-- CORRECTLY FOR OPERANDS OF TYPE TIME AND TYPE DURATION. PARTICULARLY,
27--   (A) RELATIONS BASED ON YEARS.
28--   (B) RELATIONS BASED ON MONTH.
29--   (C) RELATIONS BASED ON SECONDS.
30--   (D) RELATIONS AT EXTREMES OF THE PERMITTED RANGE OF TIME.
31
32-- CPP 8/16/84
33
34WITH CALENDAR;  USE CALENDAR;
35WITH REPORT;  USE REPORT;
36PROCEDURE C96006A IS
37
38BEGIN
39     TEST ("C96006A", "CHECK THAT RELATIONAL OPERATORS WORK " &
40           "CORRECTLY IN THE PACKAGE CALENDAR");
41
42     --------------------------------------------
43
44     DECLARE   -- (A)
45     -- RELATIONS BASED ON YEARS.
46          NOW, LATER : TIME;
47     BEGIN     -- (A)
48          NOW := TIME_OF (1984, 8, 12, 500.0);
49          LATER := TIME_OF (1985, 8, 12, 500.0);
50
51          IF NOW < LATER THEN
52               COMMENT ("< OPERATOR OK - (A)");
53          ELSE
54               FAILED ("< OPERATOR INCORRECT - (A)");
55          END IF;
56
57          IF NOW <= LATER THEN
58               COMMENT ("<= OPERATOR OK - (A)");
59          ELSE
60               FAILED ("<= OPERATOR INCORRECT - (A)");
61          END IF;
62
63          IF NOW <= NOW THEN
64               COMMENT ("<= OPERATOR OK - (A)2");
65          ELSE
66               FAILED ("<= OPERATOR INCORRECT - (A)2");
67          END IF;
68
69          IF LATER > NOW THEN
70               COMMENT ("> OPERATOR OK - (A)");
71          ELSE
72               FAILED ("> OPERATOR INCORRECT - (A)");
73          END IF;
74
75          IF LATER >= NOW THEN
76               COMMENT (">= OPERATOR OK - (A)");
77          ELSE
78               FAILED (">= OPERATOR INCORRECT - (A)");
79          END IF;
80
81          IF LATER >= LATER THEN
82               COMMENT (">= OPERATOR OK - (A)2");
83          ELSE
84               FAILED (">= OPERATOR INCORRECT - (A)2");
85          END IF;
86
87     END; -- (A)
88
89     --------------------------------------------
90
91     DECLARE   -- (B)
92     -- RELATIONS BASED ON MONTH.
93          NOW, LATER : TIME;
94     BEGIN     -- (B)
95          NOW := TIME_OF (1984, 8, 12, 500.0);
96          LATER := TIME_OF (1984, 9, 12, 500.0);
97
98          IF NOW < LATER THEN
99               COMMENT ("< OPERATOR OK - (B)");
100          ELSE
101               FAILED ("< OPERATOR INCORRECT - (B)");
102          END IF;
103
104          IF NOW <= LATER THEN
105               COMMENT ("<= OPERATOR OK - (B)");
106          ELSE
107               FAILED ("<= OPERATOR INCORRECT - (B)");
108          END IF;
109
110          IF NOW <= NOW THEN
111               COMMENT ("<= OPERATOR OK - (B)2");
112          ELSE
113               FAILED ("<= OPERATOR INCORRECT - (B)2");
114          END IF;
115
116          IF LATER > NOW THEN
117               COMMENT ("> OPERATOR OK - (B)");
118          ELSE
119               FAILED ("> OPERATOR INCORRECT - (B)");
120          END IF;
121
122          IF LATER >= NOW THEN
123               COMMENT (">= OPERATOR OK - (B)");
124          ELSE
125               FAILED (">= OPERATOR INCORRECT - (B)");
126          END IF;
127
128          IF LATER >= LATER THEN
129               COMMENT (">= OPERATOR OK - (B)2");
130          ELSE
131               FAILED (">= OPERATOR INCORRECT - (B)2");
132          END IF;
133
134          IF NOW = NOW THEN
135               COMMENT ("= OPERATOR OK - (B)");
136          ELSE
137               FAILED ("= OPERATOR INCORRECT - (B)");
138          END IF;
139
140          IF LATER /= NOW THEN
141               COMMENT ("/= OPERATOR OK - (B)");
142          ELSE
143               FAILED ("/= OPERATOR INCORRECT - (B)");
144          END IF;
145
146     END; -- (B)
147
148     --------------------------------------------
149
150     DECLARE   -- (C)
151     -- RELATIONS BASED ON SECONDS.
152          NOW, LATER : TIME;
153          INCREMENT : DURATION := 99.9;
154     BEGIN     -- (C)
155          NOW := TIME_OF (1984, 8, 12, 500.0);
156          LATER := NOW + INCREMENT;
157
158          IF NOW < LATER THEN
159               COMMENT ("< OPERATOR OK - (C)");
160          ELSE
161               FAILED ("< OPERATOR INCORRECT - (C)");
162          END IF;
163
164          IF NOW <= LATER THEN
165               COMMENT ("<= OPERATOR OK - (C)");
166          ELSE
167               FAILED ("<= OPERATOR INCORRECT - (C)");
168          END IF;
169
170          IF NOW <= NOW THEN
171               COMMENT ("<= OPERATOR OK - (C)2");
172          ELSE
173               FAILED ("<= OPERATOR INCORRECT - (C)2");
174          END IF;
175
176          IF LATER > NOW THEN
177               COMMENT ("> OPERATOR OK - (C)");
178          ELSE
179               FAILED ("> OPERATOR INCORRECT - (C)");
180          END IF;
181
182          IF LATER >= NOW THEN
183               COMMENT (">= OPERATOR OK - (C)");
184          ELSE
185               FAILED (">= OPERATOR INCORRECT - (C)");
186          END IF;
187
188          IF LATER >= LATER THEN
189               COMMENT (">= OPERATOR OK - (C)2");
190          ELSE
191               FAILED (">= OPERATOR INCORRECT - (C)2");
192          END IF;
193
194          IF LATER = LATER THEN
195               COMMENT ("= OPERATOR OK - (C)");
196          ELSE
197               FAILED ("= OPERATOR INCORRECT - (C)");
198          END IF;
199
200          IF NOW /= LATER THEN
201               COMMENT ("/= OPERATOR OK - (C)");
202          ELSE
203               FAILED ("/= OPERATOR INCORRECT - (C)");
204          END IF;
205
206          IF NOW < NOW THEN
207               FAILED ("NOW < NOW INCORRECT - (C)");
208          ELSIF NOW /= NOW THEN
209               FAILED ("NOW = NOW INCORRECT - (C)");
210          ELSIF LATER < NOW THEN
211               FAILED ("LATER < NOW INCORRECT - (C)");
212          ELSIF LATER <= NOW THEN
213               FAILED ("LATER <= NOW INCORRECT - (C)");
214          ELSIF LATER = NOW THEN
215               FAILED ("NOW = LATER INCORRECT - (C)");
216          ELSIF NOW > LATER THEN
217               FAILED ("NOW > LATER INCORRECT - (C)");
218          ELSIF NOW > NOW THEN
219               FAILED ("NOW > NOW INCORRECT - (C)");
220          ELSIF NOW >= LATER THEN
221               FAILED ("NOW >= LATER INCORRECT - (C)");
222          ELSIF NOW = LATER THEN
223               FAILED ("NOW = LATER INCORRECT - (C)");
224          END IF;
225
226     END; -- (C)
227
228     --------------------------------------------
229
230     DECLARE   -- (D)
231
232          NOW, WAY_BACK_THEN : TIME;
233
234     BEGIN     -- (D)
235
236          NOW := TIME_OF (2099, 12, 31);
237          WAY_BACK_THEN := TIME_OF (1901, 1, 1);
238
239          BEGIN
240               IF NOW < WAY_BACK_THEN THEN
241                    FAILED ("TEST < AT EXTREMES INCORRECT - (D)");
242               END IF;
243          EXCEPTION
244               WHEN OTHERS =>
245                    FAILED ("< AT EXTREMES RAISED EXCEPTION - (D)");
246          END;
247
248          BEGIN
249               IF NOW <= WAY_BACK_THEN THEN
250                    FAILED ("TEST <= AT EXTREMES INCORRECT - (D)");
251               END IF;
252          EXCEPTION
253               WHEN OTHERS =>
254                    FAILED ("<= AT EXTREMES RAISED EXCEPTION - (D)");
255          END;
256
257          BEGIN
258               IF WAY_BACK_THEN > NOW THEN
259                    FAILED ("TEST > AT EXTREMES INCORRECT - (D)");
260               END IF;
261          EXCEPTION
262               WHEN OTHERS =>
263                    FAILED ("> AT EXTREMES RAISED EXCEPTION - (D)");
264          END;
265
266          BEGIN
267               IF WAY_BACK_THEN >= NOW THEN
268                    FAILED ("TEST >= AT EXTREMES INCORRECT - (D)");
269               END IF;
270          EXCEPTION
271               WHEN OTHERS =>
272                    FAILED (">= AT EXTREMES RAISED EXCEPTION - (D)");
273          END;
274
275          BEGIN
276               IF WAY_BACK_THEN /= WAY_BACK_THEN THEN
277                    FAILED ("TEST /= AT EXTREMES INCORRECT - (D)");
278               END IF;
279          EXCEPTION
280               WHEN OTHERS =>
281                    FAILED ("/= AT EXTREMES RAISED EXCEPTION - (D)");
282          END;
283
284          BEGIN
285               IF NOW = WAY_BACK_THEN THEN
286                    FAILED ("TEST = AT EXTREMES INCORRECT - (D)");
287               END IF;
288          EXCEPTION
289               WHEN OTHERS =>
290                    FAILED ("= AT EXTREMES RAISED EXCEPTION - (D)");
291          END;
292
293     END; -- (D)
294
295     --------------------------------------------
296
297     RESULT;
298END C96006A;
299