aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/cd/cdd2a02.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/cd/cdd2a02.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/cd/cdd2a02.a345
1 files changed, 0 insertions, 345 deletions
diff --git a/gcc/testsuite/ada/acats/tests/cd/cdd2a02.a b/gcc/testsuite/ada/acats/tests/cd/cdd2a02.a
deleted file mode 100644
index 854431c3488..00000000000
--- a/gcc/testsuite/ada/acats/tests/cd/cdd2a02.a
+++ /dev/null
@@ -1,345 +0,0 @@
--- CDD2A02.A
---
--- Grant of Unlimited Rights
---
--- The Ada Conformity Assessment Authority (ACAA) holds unlimited
--- rights in the software and documentation contained herein. Unlimited
--- rights are the same as those granted by the U.S. Government for older
--- parts of the Ada Conformity Assessment Test Suite, and are defined
--- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
--- intends to confer upon all recipients unlimited rights equal to those
--- held by the ACAA. 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 the Read, Write, Input, and Output attributes are inherited
--- for untagged derived types. (Defect Report 8652/0040,
--- as reflected in Technical Corrigendum 1, 13.13.2(8.1/1) and
--- 13.13.2(25/1)).
---
--- CHANGE HISTORY:
--- 30 JUL 2001 PHL Initial version.
--- 5 DEC 2001 RLB Reformatted for ACATS.
---
---!
-with Ada.Streams;
-use Ada.Streams;
-with FDD2A00;
-use FDD2A00;
-with Report;
-use Report;
-procedure CDD2A02 is
-
- type Int is range 1 .. 10;
- type Str is array (Int range <>) of Character;
-
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Int'Base);
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Int'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Int'Base;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Int'Base);
-
- for Int'Read use Read;
- for Int'Write use Write;
- for Int'Input use Input;
- for Int'Output use Output;
-
-
- type Parent (D1, D2 : Int; B : Boolean) is
- record
- S : Str (D1 .. D2);
- case B is
- when False =>
- C1 : Integer;
- when True =>
- C2 : Float;
- end case;
- end record;
-
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Parent);
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Parent);
- function Input (Stream : access Root_Stream_Type'Class) return Parent;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Parent);
-
- for Parent'Read use Read;
- for Parent'Write use Write;
- for Parent'Input use Input;
- for Parent'Output use Output;
-
-
- procedure Actual_Read
- (Stream : access Root_Stream_Type'Class; Item : out Int) is
- begin
- Integer'Read (Stream, Integer (Item));
- end Actual_Read;
-
- procedure Actual_Write
- (Stream : access Root_Stream_Type'Class; Item : Int) is
- begin
- Integer'Write (Stream, Integer (Item));
- end Actual_Write;
-
- function Actual_Input (Stream : access Root_Stream_Type'Class) return Int is
- begin
- return Int (Integer'Input (Stream));
- end Actual_Input;
-
- procedure Actual_Output
- (Stream : access Root_Stream_Type'Class; Item : Int) is
- begin
- Integer'Output (Stream, Integer (Item));
- end Actual_Output;
-
-
- procedure Actual_Read
- (Stream : access Root_Stream_Type'Class; Item : out Parent) is
- begin
- case Item.B is
- when False =>
- Item.C1 := 7;
- when True =>
- Float'Read (Stream, Item.C2);
- end case;
- Str'Read (Stream, Item.S);
- end Actual_Read;
-
- procedure Actual_Write
- (Stream : access Root_Stream_Type'Class; Item : Parent) is
- begin
- case Item.B is
- when False =>
- null; -- Don't write C1
- when True =>
- Float'Write (Stream, Item.C2);
- end case;
- Str'Write (Stream, Item.S);
- end Actual_Write;
-
- function Actual_Input
- (Stream : access Root_Stream_Type'Class) return Parent is
- D1, D2 : Int;
- B : Boolean;
- begin
- Int'Read (Stream, D2);
- Boolean'Read (Stream, B);
- Int'Read (Stream, D1);
-
- declare
- Item : Parent (D1 => D1, D2 => D2, B => B);
- begin
- Parent'Read (Stream, Item);
- return Item;
- end;
-
- end Actual_Input;
-
- procedure Actual_Output
- (Stream : access Root_Stream_Type'Class; Item : Parent) is
- begin
- Int'Write (Stream, Item.D2);
- Boolean'Write (Stream, Item.B);
- Int'Write (Stream, Item.D1);
- Parent'Write (Stream, Item);
- end Actual_Output;
-
- package Int_Ops is new Counting_Stream_Ops (T => Int'Base,
- Actual_Write => Actual_Write,
- Actual_Input => Actual_Input,
- Actual_Read => Actual_Read,
- Actual_Output => Actual_Output);
-
- package Parent_Ops is
- new Counting_Stream_Ops (T => Parent,
- Actual_Write => Actual_Write,
- Actual_Input => Actual_Input,
- Actual_Read => Actual_Read,
- Actual_Output => Actual_Output);
-
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Int'Base)
- renames Int_Ops.Read;
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Int'Base)
- renames Int_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Int'Base
- renames Int_Ops.Input;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Int'Base)
- renames Int_Ops.Output;
-
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Parent)
- renames Parent_Ops.Read;
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Parent)
- renames Parent_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Parent
- renames Parent_Ops.Input;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Parent)
- renames Parent_Ops.Output;
-
-begin
- Test ("CDD2A02", "Check that the Read, Write, Input, and Output " &
- "attributes are inherited for untagged derived types");
-
- Test1:
- declare
- type Derived1 is new Parent;
- S : aliased My_Stream (1000);
- X1 : Derived1 (D1 => Int (Ident_Int (2)),
- D2 => Int (Ident_Int (5)), B => Ident_Bool (True));
- Y1 : Derived1 := (D1 => 3,
- D2 => 6,
- B => False,
- S => Str (Ident_Str ("3456")),
- C1 => Ident_Int (100));
- X2 : Derived1 (D1 => Int (Ident_Int (2)),
- D2 => Int (Ident_Int (5)), B => Ident_Bool (True));
- begin
- X1.S := Str (Ident_Str ("bcde"));
- X1.C2 := Float (Ident_Int (4));
-
- Derived1'Write (S'Access, X1);
- if Int_Ops.Get_Counts /=
- (Read => 0, Write => 0, Input => 0, Output => 0) then
- Failed ("Error writing discriminants - 1");
- end if;
- if Parent_Ops.Get_Counts /=
- (Read => 0, Write => 1, Input => 0, Output => 0) then
- Failed ("Didn't call inherited Write - 1");
- end if;
-
- Derived1'Read (S'Access, X2);
- if Int_Ops.Get_Counts /=
- (Read => 0, Write => 0, Input => 0, Output => 0) then
- Failed ("Error reading discriminants - 1");
- end if;
- if Parent_Ops.Get_Counts /=
- (Read => 1, Write => 1, Input => 0, Output => 0) then
- Failed ("Didn't call inherited Read - 1");
- end if;
-
- if X2 /= (D1 => 2,
- D2 => 5,
- B => True,
- S => Str (Ident_Str ("bcde")),
- C2 => Float (Ident_Int (4))) then
- Failed
- ("Inherited Read and Write are not inverses of each other - 1");
- end if;
-
- Derived1'Output (S'Access, Y1);
- if Int_Ops.Get_Counts /=
- (Read => 0, Write => 2, Input => 0, Output => 0) then
- Failed ("Error writing discriminants - 2");
- end if;
- if Parent_Ops.Get_Counts /=
- (Read => 1, Write => 2, Input => 0, Output => 1) then
- Failed ("Didn't call inherited Output - 2");
- end if;
-
- declare
- Y2 : Derived1 := Derived1'Input (S'Access);
- begin
- if Int_Ops.Get_Counts /=
- (Read => 2, Write => 2, Input => 0, Output => 0) then
- Failed ("Error reading discriminants - 2");
- end if;
- if Parent_Ops.Get_Counts /=
- (Read => 2, Write => 2, Input => 1, Output => 1) then
- Failed ("Didn't call inherited Input - 2");
- end if;
-
- if Y2 /= (D1 => 3,
- D2 => 6,
- B => False,
- S => Str (Ident_Str ("3456")),
- C1 => Ident_Int (7)) then
- Failed
- ("Inherited Input and Output are not inverses of each other - 2");
- end if;
- end;
- end Test1;
-
- Test2:
- declare
- type Derived2 (D : Int) is new Parent (D1 => D,
- D2 => D,
- B => False);
- S : aliased My_Stream (1000);
- X1 : Derived2 (D => Int (Ident_Int (7)));
- Y1 : Derived2 := (D => 8,
- S => Str (Ident_Str ("8")),
- C1 => Ident_Int (200));
- X2 : Derived2 (D => Int (Ident_Int (7)));
- begin
- X1.S := Str (Ident_Str ("g"));
- X1.C1 := Ident_Int (4);
-
- Derived2'Write (S'Access, X1);
- if Int_Ops.Get_Counts /=
- (Read => 2, Write => 2, Input => 0, Output => 0) then
- Failed ("Error writing discriminants - 3");
- end if;
- if Parent_Ops.Get_Counts /=
- (Read => 2, Write => 3, Input => 1, Output => 1) then
- Failed ("Didn't call inherited Write - 3");
- end if;
-
- Derived2'Read (S'Access, X2);
- if Int_Ops.Get_Counts /=
- (Read => 2, Write => 2, Input => 0, Output => 0) then
- Failed ("Error reading discriminants - 3");
- end if;
- if Parent_Ops.Get_Counts /=
- (Read => 3, Write => 3, Input => 1, Output => 1) then
- Failed ("Didn't call inherited Read - 3");
- end if;
-
- if X2 /= (D => 7,
- S => Str (Ident_Str ("g")),
- C1 => Ident_Int (7)) then
- Failed
- ("Inherited Read and Write are not inverses of each other - 3");
- end if;
-
- Derived2'Output (S'Access, Y1);
- if Int_Ops.Get_Counts /=
- (Read => 2, Write => 4, Input => 0, Output => 0) then
- Failed ("Error writing discriminants - 4");
- end if;
- if Parent_Ops.Get_Counts /=
- (Read => 3, Write => 4, Input => 1, Output => 2) then
- Failed ("Didn't call inherited Output - 4");
- end if;
-
- declare
- Y2 : Derived2 := Derived2'Input (S'Access);
- begin
- if Int_Ops.Get_Counts /=
- (Read => 4, Write => 4, Input => 0, Output => 0) then
- Failed ("Error reading discriminants - 4");
- end if;
- if Parent_Ops.Get_Counts /=
- (Read => 4, Write => 4, Input => 2, Output => 2) then
- Failed ("Didn't call inherited Input - 4");
- end if;
-
- if Y2 /= (D => 8,
- S => Str (Ident_Str ("8")),
- C1 => Ident_Int (7)) then
- Failed
- ("Inherited Input and Output are not inverses of each other - 4");
- end if;
- end;
- end Test2;
-
- Result;
-end CDD2A02;