Figure 42.
Coordinates_Test program.
-------------------------------------------------------
with COORDINATES, CALENDAR;
with STANDARD_INTEGERS; use STANDARD_INTEGERS;
with TEXT_IO; use TEXT_IO;
procedure Coordinates_Test is
use COORDINATES; -- for Type_Convert and "+"
R, WORST_MAX_NORTH, WORST_MIN_NORTH,
WORST_MAX_EAST, WORST_MIN_EAST
: COORDINATES.Rectangular_points;
P : COORDINATES.Polar_points;
EAST, NORTH, ERROR : COORDINATES.Feet;
MAX_NORTH_ERROR, MAX_EAST_ERROR
: COORDINATES.Feet := +(Integer_32'FIRST);
MIN_NORTH_ERROR, MIN_EAST_ERROR
: COORDINATES.Feet := +(Integer_32'LAST);
START_TIME, STOP_TIME : CALENDAR.Day_Duration;
begin
put_line("Starting COORDINATES Test");
START_TIME := CALENDAR.Seconds(CALENDAR.Clock);
for i in Integer_32 range -128..127 loop
EAST := Type_Convert(i);
for j in Integer_32 range -128..127 loop
NORTH := Type_Convert(j);
R.NORTH := NORTH;
R.EAST := EAST;
P := COORDINATES.Transform(R);
R := COORDINATES.Transform(P);
ERROR := R.NORTH-NORTH;
if ERROR > MAX_NORTH_ERROR then
MAX_NORTH_ERROR := ERROR;
WORST_MAX_NORTH.NORTH := NORTH;
WORST_MAX_NORTH.EAST := EAST;
end if;
if ERROR < MIN_NORTH_ERROR then
MIN_NORTH_ERROR := ERROR;
WORST_MIN_NORTH.NORTH := NORTH;
WORST_MIN_NORTH.EAST := EAST;
end if;
ERROR := R.EAST-EAST;
if ERROR > MAX_EAST_ERROR then
MAX_EAST_ERROR := ERROR;
WORST_MAX_EAST.NORTH := NORTH;
WORST_MAX_EAST.EAST := EAST;
end if;
if ERROR < MIN_EAST_ERROR then
MIN_EAST_ERROR := ERROR;
WORST_MIN_EAST.NORTH := NORTH;
WORST_MIN_EAST.EAST := EAST;
end if;
end loop;
end loop;
STOP_TIME := CALENDAR.Seconds(CALENDAR.Clock);
put("The computed value for NORTH was");
put(Integer_32'IMAGE(Dimensionless(MAX_NORTH_ERROR)));
put(" HIGH at");
put("(" & Integer_32'IMAGE(
Dimensionless(WORST_MAX_NORTH.NORTH)));
put("," & Integer_32'IMAGE(
Dimensionless(WORST_MAX_NORTH.EAST)));
put_line(").");
put("The computed value for NORTH was");
put(Integer_32'IMAGE(Dimensionless(MIN_NORTH_ERROR)));
put(" LOW at");
put("(" & Integer_32'IMAGE(
Dimensionless(WORST_MIN_NORTH.NORTH)));
put("," & Integer_32'IMAGE(
Dimensionless(WORST_MIN_NORTH.EAST)));
put_line(").");
put("The computed value for EAST was");
put(Integer_32'IMAGE(Dimensionless(MAX_EAST_ERROR)));
put(" HIGH at");
put("(" & Integer_32'IMAGE(
Dimensionless(WORST_MAX_EAST.NORTH)));
put("," & Integer_32'IMAGE(
Dimensionless(WORST_MAX_EAST.EAST)));
put_line(").");
put("The computed value for EAST was");
put(Integer_32'IMAGE(Dimensionless(MIN_EAST_ERROR)));
put(" LOW at");
put("(" & Integer_32'IMAGE(
Dimensionless(WORST_MIN_EAST.NORTH)));
put("," & Integer_32'IMAGE(
Dimensionless(WORST_MIN_EAST.EAST)));
put_line(").");
new_line;
put("The test took");
put(integer'IMAGE(integer(STOP_TIME-START_TIME)));
put_line(" seconds to run.");
new_line;
put_line("Done.");
end Coordinates_Test;