1-- CXAA019.A
2--
3--                             Grant of Unlimited Rights
4--
5--     The Ada Conformity Assessment Authority (ACAA) holds unlimited
6--     rights in the software and documentation contained herein. Unlimited
7--     rights are the same as those granted by the U.S. Government for older
8--     parts of the Ada Conformity Assessment Test Suite, and are defined
9--     in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
10--     intends to confer upon all recipients unlimited rights equal to those
11--     held by the ACAA. These rights include rights to use, duplicate,
12--     release or disclose the released technical data and computer software
13--     in whole or in part, in any manner and for any purpose whatsoever, and
14--     to have or permit others to do so.
15--
16--                                    DISCLAIMER
17--
18--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23--     PARTICULAR PURPOSE OF SAID MATERIAL.
24--*
25--
26-- OBJECTIVE:
27--    Check that Standard_Output can be flushed.  Check that 'in' parameters of
28--    types Ada.Text_IO.File_Type and Ada.Streams.Stream_IO.File_Type can be
29--    flushed.  (Defect Report 8652/0051).
30--
31-- CHANGE HISTORY:
32--    12 FEB 2001   PHL   Initial version
33--    16 MAR 2001   RLB   Readied for release; fixed Not_Applicable check
34--                        to terminate test gracefully.
35--
36--!
37with Ada.Streams.Stream_Io;
38use Ada.Streams;
39with Ada.Text_Io;
40with Ada.Wide_Text_Io;
41with Report;
42use Report;
43procedure CXAA019 is
44
45    procedure Check (File : in Ada.Text_Io.File_Type) is
46    begin
47        Ada.Text_Io.Put_Line
48           (File, "   - CXAA019 About to flush a Text_IO file passed " &
49                  "as 'in' parameter");
50        Ada.Text_Io.Flush (File);
51    end Check;
52
53    procedure Check (File : in Ada.Wide_Text_Io.File_Type) is
54    begin
55        Ada.Wide_Text_Io.Put_Line
56           (File, "   - CXAA019 About to flush a Wide_Text_IO file passed " &
57                  "as 'in' parameter");
58        Ada.Wide_Text_Io.Flush (File);
59    end Check;
60
61    procedure Check (File : in Stream_Io.File_Type) is
62        S : Stream_Element_Array (1 .. 10);
63    begin
64        for I in S'Range loop
65            S (I) := Stream_Element (Character'Pos ('A') + I);
66        end loop;
67        Stream_Io.Write (File, S);
68        Comment ("About to flush a Stream_IO file passed as 'in' parameter");
69        Stream_Io.Flush (File);
70    end Check;
71
72
73begin
74    Test ("CXAA019",
75          "Check that Standard_Output can be flushed; check that " &
76             "'in' Ada.Text_IO.File_Type and Ada.Streams.Stream_IO.File_Type" &
77             "parameters can be flushed");
78
79    Ada.Text_Io.Put_Line (Ada.Text_Io.Standard_Output,
80                          "   - CXAA019 About to flush Standard_Output");
81    Ada.Text_Io.Flush (Ada.Text_Io.Standard_Output);
82
83    Check (Ada.Text_Io.Current_Output);
84
85    declare
86        TC_OK : Boolean := False;
87        F : Ada.Text_Io.File_Type;
88    begin
89        begin
90            Ada.Text_Io.Create (F, Name => Legal_File_Name (X => 1));
91            TC_OK := True;
92        exception
93            when others =>
94                Not_Applicable ("Unable to create Out mode Text_IO file");
95        end;
96        if TC_OK then
97            Check (F);
98            Ada.Text_Io.Delete (F);
99        end if;
100    end;
101
102    declare
103        TC_OK : Boolean := False;
104        F : Ada.Wide_Text_Io.File_Type;
105    begin
106        begin
107            Ada.Wide_Text_Io.Create (F, Name => Legal_File_Name (X => 2));
108            TC_OK := True;
109        exception
110            when others =>
111                Not_Applicable ("Unable to create Out mode Wide_Text_IO file");
112        end;
113        if TC_OK then
114            Check (F);
115            Ada.Wide_Text_Io.Delete (F);
116        end if;
117    end;
118
119    declare
120        TC_OK : Boolean := False;
121        F : Stream_Io.File_Type;
122    begin
123        begin
124            Stream_Io.Create (F, Name => Legal_File_Name (X => 3));
125            TC_OK := True;
126        exception
127            when others =>
128                Not_Applicable ("Unable to create Out mode Stream_IO file");
129        end;
130        if TC_OK then
131            Check (F);
132            Stream_Io.Delete (F);
133        end if;
134    end;
135
136    Result;
137end CXAA019;
138
139