WITH CALENDAR; USE CALENDAR;
WITH REPORT; USE REPORT;
PROCEDURE C96005A IS
BEGIN
TEST ("C96005A", "CHECK THAT THE ADDITION AND SUBTRACTION " &
"FUNCTIONS FOR VALUES OF TYPE TIME WORK CORRECTLY");
BEGIN
DECLARE
NOW, NEW_TIME : TIME;
INCREMENT : DURATION := 1.0;
BEGIN
NOW := TIME_OF (1984, 8, 13, 0.0);
NEW_TIME := NOW + INCREMENT;
IF NEW_TIME /= TIME_OF (1984, 8, 13, 1.0) THEN
FAILED ("SUM OF TIMES IS INCORRECT - (A)1");
END IF;
END;
DECLARE
NOW, NEW_TIME : TIME;
INCREMENT : DURATION := 1.0;
BEGIN
NOW := TIME_OF (1984, 8, 13, 0.0);
NEW_TIME := INCREMENT + NOW;
IF NEW_TIME /= TIME_OF (1984, 8, 13, 1.0) THEN
FAILED ("SUM OF TIMES IS INCORRECT - (A)2");
END IF;
END;
DECLARE
NOW, NEW_TIME : TIME;
INCREMENT : DURATION := 1.0;
BEGIN
NOW := TIME_OF (1984, 8, 13, 0.0);
NEW_TIME := "+"(INCREMENT, NOW);
IF NEW_TIME /= TIME_OF (1984, 8, 13, 1.0) THEN
FAILED ("SUM OF TIMES IS INCORRECT - (A)3");
END IF;
END;
DECLARE
NOW, NEW_TIME : TIME;
INCREMENT : DURATION := 1.0;
BEGIN
NOW := TIME_OF (1984, 8, 13, 0.0);
NEW_TIME := "+"(LEFT => NOW,
RIGHT => INCREMENT);
IF NEW_TIME /= TIME_OF (1984, 8, 13, 1.0) THEN
FAILED ("SUM OF TIMES IS INCORRECT - (A)4");
END IF;
END;
DECLARE
NOW, ONCE : TIME;
DIFFERENCE : DURATION;
BEGIN
NOW := TIME_OF (1984, 8, 13, 45_000.0);
ONCE := TIME_OF (1984, 8, 12, 45_000.0);
DIFFERENCE := NOW - ONCE;
IF DIFFERENCE /= 86_400.0 THEN
FAILED ("DIFFERENCE OF TIMES IS INCORRECT - (A)1");
END IF;
END;
DECLARE
NOW, ONCE : TIME;
DIFFERENCE : DURATION;
BEGIN
NOW := TIME_OF (1984, 8, IDENT_INT(1), 60.0);
ONCE := TIME_OF (1984, 7, 31, 86_399.0);
DIFFERENCE := "-"(NOW, ONCE);
IF DIFFERENCE /= 61.0 THEN
FAILED ("DIFFERENCE OF TIMES IS INCORRECT - (A)2");
END IF;
END;
DECLARE
NOW, AFTER : TIME;
DIFFERENCE : DURATION;
BEGIN
NOW := TIME_OF (IDENT_INT(1999), 12, 31, 86_399.0);
AFTER := TIME_OF (2000, 1, 1, 1.0);
DIFFERENCE := "-"(LEFT => AFTER,
RIGHT => NOW);
IF DIFFERENCE /= 2.0 THEN
FAILED ("DIFFERENCE OF TIMES IS INCORRECT - (A)3");
END IF;
END;
DECLARE
NOW, LEAP : TIME;
DIFFERENCE : DURATION;
BEGIN
NOW := TIME_OF (1984, 3, 1);
LEAP := TIME_OF (1984, 2, 29, 86_399.0);
DIFFERENCE := NOW - LEAP;
IF DIFFERENCE /= 1.0 THEN
FAILED ("DIFFERENCE OF TIMES IS INCORRECT - (A)4");
END IF;
END;
DECLARE
NOW, NON_LEAP : TIME;
DIFFERENCE : DURATION;
BEGIN
NOW := TIME_OF (1983, 3, 1);
NON_LEAP := TIME_OF (1983, 2, 28, 86_399.0);
DIFFERENCE := NOW - NON_LEAP;
IF DIFFERENCE /= 1.0 THEN
FAILED ("DIFFERENCE OF TIMES IS INCORRECT - (A)5");
END IF;
END;
DECLARE
NOW, NEW_TIME : TIME;
INCREMENT : DURATION := 1.0;
BEGIN
NOW := TIME_OF (1984, 8, 13, 0.0);
NEW_TIME := NOW - INCREMENT;
IF NEW_TIME /= TIME_OF (1984, 8, 12, 86_399.0) THEN
FAILED ("DIFFERENCE OF TIME AND DURATION IS " &
"INCORRECT - (A)6");
END IF;
END;
DECLARE
NOW, NEW_TIME : TIME;
INCREMENT : DURATION := 1.0;
BEGIN
NOW := TIME_OF (1984, 8, 1, 0.0);
NEW_TIME := NOW - INCREMENT;
IF NEW_TIME /= TIME_OF (1984, 7, 31, 86_399.0) THEN
FAILED ("DIFFERENCE OF TIME AND DURATION IS " &
"INCORRECT - (A)7");
END IF;
END;
DECLARE
NOW, NEW_TIME : TIME;
INCREMENT : DURATION := 1.0;
BEGIN
NOW := TIME_OF (1984, 8, 1, 0.0);
NEW_TIME := "-"(LEFT => NOW,
RIGHT => INCREMENT);
IF NEW_TIME /= TIME_OF (1984, 7, 31, 86_399.0) THEN
FAILED ("DIFFERENCE OF TIME AND DURATION IS " &
"INCORRECT - (A)8");
END IF;
END;
DECLARE
NOW, NEW_TIME : TIME;
INCREMENT : DURATION := 1.0;
BEGIN
NOW := TIME_OF (1984, 8, 1, 0.0);
NEW_TIME := "-"(NOW, INCREMENT);
IF NEW_TIME /= TIME_OF (1984, 7, 31, 86_399.0) THEN
FAILED ("DIFFERENCE OF TIME AND DURATION IS " &
"INCORRECT - (A)7");
END IF;
END;
END;
RESULT;
END C96005A;