simple_components_4.42.0_21c00530/test_components/test_parser_stream_io.adb

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
--                                                                    --
--  procedure                       Copyright (c)  Dmitry A. Kazakov  --
--     Test_Parser_Stream_IO                       Luebeck            --
--  Test program                                   Spring, 2010       --
--                                                                    --
--                                Last revision :  23:22 29 Sep 2017  --
--                                                                    --
--  This  library  is  free software; you can redistribute it and/or  --
--  modify it under the terms of  the  GNU  Library  General  Public  --
--  License  as  published  by  the Free Software Foundation; either  --
--  version 2 of the License, or (at your option) any later version.  --
--                                                                    --
--  As a special exception, if other files instantiate generics from  --
--  this unit, or you link this unit with other files to produce  an  --
--  executable, this unit does not by  itself  cause  the  resulting  --
--  executable to be covered by the GNU General Public License. This  --
--  exception  does not however invalidate any other reasons why the  --
--  executable file might be covered by the GNU Public License.       --
--                                                                    --
--  This  library is distributed in the hope that it will be useful,  --
--  but WITHOUT ANY WARRANTY; without even the implied  warranty  of  --
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU  --
--  Library General Public License for more details.                  --
--                                                                    --
--  You  should  have  received  a  copy  of the GNU Library General  --
--  Public  License  along  with  this library; if not, write to the  --
--  Free Software Foundation, Inc.,  675  Mass  Ave,  Cambridge,  MA  --
--  02139, USA.                                                       --
--____________________________________________________________________--

with Ada.Exceptions;                      use Ada.Exceptions;
with Ada.Characters.Latin_1;              use Ada.Characters.Latin_1;
with Ada.Text_IO;                         use Ada.Text_IO;
with Strings_Edit.Streams;                use Strings_Edit.Streams;
with Parsers.Multiline_Source.Stream_IO;  use Parsers.Multiline_Source;

use Parsers.Multiline_Source.Stream_IO;

procedure Test_Parser_Stream_IO is
   Text : aliased String_Stream (1024);
begin
   Set
   (  Text,
      (  "AAA" & LF
      &  "B" & CR & CR & LF
      &  LF
      &  CR & LF
      &  "C" & CR & "DEFGH" & LF
      & EOT
   )  );
   declare
      Code : Stream_IO.Source (Text'Access);
   begin
      if Get_Line (Code) /= "AAA" then
         raise Data_Error;
      end if;
      Next_Line (Code);
      if Get_Line (Code) /= "B" then
         raise Data_Error;
      end if;
      Next_Line (Code);
      if Get_Line (Code) /= "" then
         raise Data_Error;
      end if;
      Next_Line (Code);
      if Get_Line (Code) /= "" then
         raise Data_Error;
      end if;
      Next_Line (Code);
      if Get_Line (Code) /= "C" & CR & "DEFGH" then
         raise Data_Error;
      end if;
      begin
         Next_Line (Code);
         raise Data_Error;
      exception
         when End_Error =>
            null;
      end;
   end;
   Set
   (  Text,
      (  "AAA" & LF
      &  "B" & CR & CR & LF
      &  LF
      &  CR & LF
      &  "C" & CR & "DEFGH"
      & EOT
   )  );
   declare
      Code : Stream_IO.Source (Text'Access);
   begin
      if Get_Line (Code) /= "AAA" then
         raise Data_Error;
      end if;
      Next_Line (Code);
      if Get_Line (Code) /= "B" then
         raise Data_Error;
      end if;
      Next_Line (Code);
      if Get_Line (Code) /= "" then
         raise Data_Error;
      end if;
      Next_Line (Code);
      if Get_Line (Code) /= "" then
         raise Data_Error;
      end if;
      Next_Line (Code);
      if Get_Line (Code) /= "C" & CR & "DEFGH" then
         raise Data_Error;
      end if;
      begin
         Next_Line (Code);
         raise Data_Error;
      exception
         when End_Error =>
            null;
      end;
   end;
exception
   when Error : others =>
      Put_Line ("Error: " & Exception_Information (Error));
end Test_Parser_Stream_IO;