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;