aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/c3/c3a0013.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c3/c3a0013.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/c3/c3a0013.a347
1 files changed, 0 insertions, 347 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c3/c3a0013.a b/gcc/testsuite/ada/acats/tests/c3/c3a0013.a
deleted file mode 100644
index b23d4ee1151..00000000000
--- a/gcc/testsuite/ada/acats/tests/c3/c3a0013.a
+++ /dev/null
@@ -1,347 +0,0 @@
--- C3A0013.A
---
--- Grant of Unlimited Rights
---
--- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
--- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
--- unlimited rights in the software and documentation contained herein.
--- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
--- this public release, the Government intends to confer upon all
--- recipients unlimited rights equal to those held by the Government.
--- These rights include rights to use, duplicate, release or disclose the
--- released technical data and computer software in whole or in part, in
--- any manner and for any purpose whatsoever, and to have or permit others
--- to do so.
---
--- DISCLAIMER
---
--- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
--- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
--- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--- PARTICULAR PURPOSE OF SAID MATERIAL.
---*
---
--- OBJECTIVE:
--- Check that a general access type object may reference allocated
--- pool objects as well as aliased objects. (3,4)
--- Check that formal parameters of tagged types are implicitly
--- defined as aliased; check that the 'Access of these formal
--- parameters designates the correct object with the correct
--- tag. (5)
--- Check that the current instance of a limited type is defined as
--- aliased. (5)
---
--- TEST DESCRIPTION:
--- This test takes from the hierarchy defined in C390003; making
--- the root type Vehicle limited private. It also shifts the
--- abstraction to include the notion of a transmission, an object
--- which is contained within any vehicle. Using an access
--- discriminant, any subprogram which operates on a transmission
--- may also reference the vehicle in which it is installed.
---
--- Class Hierarchy:
--- Vehicle Transmission
--- / \
--- Truck Car
---
--- Contains:
--- Vehicle( Transmission )
---
---
---
--- CHANGE HISTORY:
--- 06 Dec 94 SAIC ACVC 2.0
--- 16 Dec 94 SAIC Fixed accessibility problems
---
---!
-
-package C3A0013_1 is
- type Vehicle is tagged limited private;
- type Vehicle_ID is access all Vehicle'Class;
-
- -- Constructors
- procedure Create ( It : in out Vehicle;
- Wheels : Natural := 4 );
- -- Modifiers
- procedure Accelerate ( It : in out Vehicle );
- procedure Decelerate ( It : in out Vehicle );
- procedure Up_Shift ( It : in out Vehicle );
- procedure Stop ( It : in out Vehicle );
-
- -- Selectors
- function Speed ( It : Vehicle ) return Natural;
- function Wheels ( It : Vehicle ) return Natural;
- function Gear_Factor( It : Vehicle ) return Natural;
-
- -- TC_Ops
- procedure TC_Validate( It : in out Vehicle; Speed_Trap : Natural );
-
- -- dispatching procedure used to check tag correctness
- procedure TC_Validate( It : Vehicle;
- TC_ID : Character);
-
-private
-
- type Transmission(Within: access Vehicle'Class) is limited record
- Engaged : Boolean := False;
- Gear : Integer range -1..5 := 0;
- end record;
-
- -- Current instance of a limited type is defined as aliased
-
- type Vehicle is tagged limited record
- Wheels: Natural;
- Speed : Natural;
- Power_Train: Transmission( Vehicle'Access );
- end record;
-end C3A0013_1;
-
-with C3A0013_1;
-package C3A0013_2 is
- type Car is new C3A0013_1.Vehicle with private;
- procedure TC_Validate( It : Car;
- TC_ID : Character);
- function Gear_Factor( It : Car ) return Natural;
-private
- type Car is new C3A0013_1.Vehicle with record
- Displacement : Natural;
- end record;
-end C3A0013_2;
-
-with C3A0013_1;
-package C3A0013_3 is
- type Truck is new C3A0013_1.Vehicle with private;
- procedure TC_Validate( It : Truck;
- TC_ID : Character);
- function Gear_Factor( It : Truck ) return Natural;
-private
- type Truck is new C3A0013_1.Vehicle with record
- Displacement : Natural;
- end record;
-end C3A0013_3;
-
-with Report;
-package body C3A0013_1 is
-
- procedure Create ( It : in out Vehicle;
- Wheels : Natural := 4 ) is
- begin
- It.Wheels := Wheels;
- It.Speed := 0;
- end Create;
-
- procedure Accelerate( It : in out Vehicle ) is
- begin
- It.Speed := It.Speed + Gear_Factor( It.Power_Train.Within.all );
- end Accelerate;
-
- procedure Decelerate( It : in out Vehicle ) is
- begin
- It.Speed := It.Speed - Gear_Factor( It.Power_Train.Within.all );
- end Decelerate;
-
- procedure Stop ( It : in out Vehicle ) is
- begin
- It.Speed := 0;
- It.Power_Train.Engaged := False;
- end Stop;
-
- function Gear_Factor( It : Vehicle ) return Natural is
- begin
- return It.Power_Train.Gear;
- end Gear_Factor;
-
- function Speed ( It : Vehicle ) return Natural is
- begin
- return It.Speed;
- end Speed;
-
- function Wheels ( It : Vehicle ) return Natural is
- begin
- return It.Wheels;
- end Wheels;
-
- -- formal tagged parameters are implicitly aliased
-
- procedure TC_Validate( It : in out Vehicle; Speed_Trap : Natural ) is
- License: Vehicle_ID := It'Unchecked_Access;
- begin
- if Speed( License.all ) /= Speed_Trap then
- Report.Failed("Speed Trap: expected: " & Natural'Image(Speed_Trap));
- end if;
- end TC_Validate;
-
- procedure TC_Validate( It : Vehicle;
- TC_ID : Character) is
- begin
- if TC_ID /= 'V' then
- Report.Failed("Dispatched to Vehicle");
- end if;
- if Wheels( It ) /= 1 then
- Report.Failed("Not a Vehicle");
- end if;
- end TC_Validate;
-
- procedure Up_Shift( It: in out Vehicle ) is
- begin
- It.Power_Train.Gear := It.Power_Train.Gear +1;
- It.Power_Train.Engaged := True;
- Accelerate( It );
- end Up_Shift;
-end C3A0013_1;
-
-with Report;
-package body C3A0013_2 is
-
- procedure TC_Validate( It : Car;
- TC_ID : Character ) is
- begin
- if TC_ID /= 'C' then
- Report.Failed("Dispatched to Car");
- end if;
- if Wheels( It ) /= 4 then
- Report.Failed("Not a Car");
- end if;
- end TC_Validate;
-
- function Gear_Factor( It : Car ) return Natural is
- begin
- return C3A0013_1.Gear_Factor( C3A0013_1.Vehicle( It ) )*2;
- end Gear_Factor;
-
-end C3A0013_2;
-
-with Report;
-package body C3A0013_3 is
-
- procedure TC_Validate( It : Truck;
- TC_ID : Character) is
- begin
- if TC_ID /= 'T' then
- Report.Failed("Dispatched to Truck");
- end if;
- if Wheels( It ) /= 3 then
- Report.Failed("Not a Truck");
- end if;
- end TC_Validate;
-
- function Gear_Factor( It : Truck ) return Natural is
- begin
- return C3A0013_1.Gear_Factor( C3A0013_1.Vehicle( It ) )*3;
- end Gear_Factor;
-
-end C3A0013_3;
-
-package C3A0013_4 is
- procedure Perform_Tests;
-end C3A0013_4;
-
-with Report;
-with C3A0013_1;
-with C3A0013_2;
-with C3A0013_3;
-package body C3A0013_4 is
- package Root renames C3A0013_1;
- package Cars renames C3A0013_2;
- package Trucks renames C3A0013_3;
-
- type Car_Pool is array(1..4) of aliased Cars.Car;
- Commuters : Car_Pool;
-
- My_Car : aliased Cars.Car;
- Company_Car : Root.Vehicle_ID;
- Repair_Shop : Root.Vehicle_ID;
-
- The_Vehicle : Root.Vehicle;
- The_Car : Cars.Car;
- The_Truck : Trucks.Truck;
-
- procedure TC_Dispatch( Ptr : Root.Vehicle_ID;
- Char : Character ) is
- begin
- Root.TC_Validate( Ptr.all, Char );
- end TC_Dispatch;
-
- procedure TC_Check_Formal_Access( Item: in out Root.Vehicle'Class;
- Char: Character) is
- begin
- TC_Dispatch( Item'Unchecked_Access, Char );
- end TC_Check_Formal_Access;
-
- procedure Perform_Tests is
- begin -- Main test procedure.
-
- for Lane in Commuters'Range loop
- Cars.Create( Commuters(Lane) );
- for Excitement in 1..Lane loop
- Cars.Up_Shift( Commuters(Lane) );
- end loop;
- end loop;
-
- Cars.Create( My_Car );
- Cars.Up_Shift( My_Car );
- Cars.TC_Validate( My_Car, 2 );
-
- Root.Create( The_Vehicle, 1 );
- Cars.Create( The_Car , 4 );
- Trucks.Create( The_Truck, 3 );
-
- TC_Check_Formal_Access( The_Vehicle, 'V' );
- TC_Check_Formal_Access( The_Car, 'C' );
- TC_Check_Formal_Access( The_Truck, 'T' );
-
- Root.Up_Shift( The_Vehicle );
- Cars.Up_Shift( The_Car );
- Trucks.Up_Shift( The_Truck );
-
- Root.TC_Validate( The_Vehicle, 1 );
- Cars.TC_Validate( The_Car, 2 );
- Trucks.TC_Validate( The_Truck, 3 );
-
- -- general access type may reference allocated objects
-
- Company_Car := new Cars.Car;
- Root.Create( Company_Car.all );
- Root.Up_Shift( Company_Car.all );
- Root.Up_Shift( Company_Car.all );
- Root.TC_Validate( Company_Car.all, 6 );
-
- -- general access type may reference aliased objects
-
- Repair_Shop := My_Car'Access;
- Root.TC_Validate( Repair_Shop.all, 2 );
-
- -- general access type may reference aliased objects
-
- Construction: declare
- type Speed_List is array(Commuters'Range) of Natural;
- Accelerations : constant Speed_List := (2, 6, 12, 20);
- begin
- for Rotation in Commuters'Range loop
- Repair_Shop := Commuters(Rotation)'Access;
- Root.TC_Validate( Repair_Shop.all, Accelerations(Rotation) );
- end loop;
- end Construction;
-
-end Perform_Tests;
-
-end C3A0013_4;
-
-with C3A0013_4;
-with Report;
-procedure C3A0013 is
-begin
-
- Report.Test ("C3A0013", "Check general access types. Check aliased "
- & "nature of formal tagged type parameters. "
- & "Check aliased nature of the current "
- & "instance of a limited type. Check the "
- & "constraining of actual subtypes for "
- & "discriminated objects" );
-
- C3A0013_4.Perform_Tests;
-
- Report.Result;
-end C3A0013;