| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655 |
- (* _ _
- * | |__ _ __ ___ ___ | | __
- * | '_ \| '__/ _ \ / _ \| |/ /
- * | |_) | | | (_) | (_) | <
- * |_.__/|_| \___/ \___/|_|\_\
- *
- * Microframework which helps to develop web Pascal applications.
- *
- * Copyright (c) 2012-2020 Silvio Clecio <[email protected]>
- *
- * Brook framework is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * Brook framework 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Brook framework; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *)
- program Test_Reader;
- {$I Tests.inc}
- {$IF DEFINED(FPC) AND DEFINED(MSWINDOWS)}
- {$CODEPAGE UTF8}
- {$ENDIF}
- uses
- RTLConsts,
- SysUtils,
- Classes,
- BrookReader,
- Test;
- const
- AI_19_CRLF = 'ABÇ'#13#10'dÉf'#13#10'GHÏ'#13#10'123'#13#10'456'#13#10'789';
- AI_19_FILE = 'TextFile.txt';
- type
- TMyStreamReader = class(TBrookStreamReader)
- end;
- { General }
- procedure Test_Encoding(AReader: TBrookTextReader);
- var
- VBytes: TBytes;
- begin
- Assert(Assigned(AReader.Encoding));
- VBytes := AReader.Encoding.GetBytes(AI_19_CRLF);
- Assert(AReader.Encoding.GetString(VBytes) = AI_19_CRLF);
- AReader.Encoding := nil;
- Assert(not Assigned(AReader.Encoding));
- AReader.Encoding := TEncoding.UTF8;
- Assert(Assigned(AReader.Encoding));
- Assert(AReader.Encoding.GetString(VBytes) = AI_19_CRLF);
- end;
- procedure Test_Reset(AReader: TBrookTextReader);
- begin
- Assert(UnicodeString(AReader.Read) = 'ABÇ');
- Assert(UnicodeString(AReader.Read) = 'dÉf');
- Assert(UnicodeString(AReader.Read) = 'GHÏ');
- AReader.Reset;
- Assert(UnicodeString(AReader.Read) = 'ABÇ');
- Assert(UnicodeString(AReader.Read) = 'dÉf');
- Assert(UnicodeString(AReader.Read) = 'GHÏ');
- end;
- procedure Test_IsEOF(AReader: TBrookTextReader);
- begin
- AReader.Reset;
- Assert(not AReader.EOF);
- AReader.ReadBytes;
- AReader.ReadBytes;
- AReader.ReadBytes;
- AReader.ReadBytes;
- AReader.ReadBytes;
- AReader.ReadBytes;
- Assert(AReader.EOF);
- AReader.Reset;
- Assert(not AReader.EOF);
- AReader.Read;
- AReader.Read;
- AReader.Read;
- AReader.Read;
- AReader.Read;
- AReader.Read;
- Assert(AReader.EOF);
- end;
- procedure Test_Close(AReader: TBrookTextReader);
- begin
- AReader.Reset;
- AReader.Close;
- Assert(AReader.IsEOF);
- end;
- procedure Test_Read(AReader: TBrookTextReader);
- var
- S: string;
- begin
- Assert(UnicodeString(AReader.Read) = 'ABÇ');
- Assert(UnicodeString(AReader.Read) = 'dÉf');
- Assert(UnicodeString(AReader.Read) = 'GHÏ');
- Assert(AReader.Read = '123');
- Assert(AReader.Read = '456');
- Assert(AReader.Read = '789');
- Assert(AReader.EOF);
- AReader.Reset;
- AReader.Read(S);
- Assert('ABÇ' = UnicodeString(S));
- AReader.Read(S);
- Assert('dÉf' = UnicodeString(S));
- AReader.Read(S);
- Assert('GHÏ' = UnicodeString(S));
- AReader.Read(S);
- Assert('123' = S);
- AReader.Read(S);
- Assert('456' = S);
- AReader.Read(S);
- Assert('789' = S);
- Assert(AReader.EOF);
- end;
- procedure Test_ReadBytes(AReader: TBrookTextReader);
- var
- B: TBytes;
- begin
- AReader.ReadBytes(B);
- Assert(TEncoding.UTF8.GetString(B) = 'ABÇ');
- AReader.ReadBytes(B);
- Assert(TEncoding.UTF8.GetString(B) = 'dÉf');
- AReader.ReadBytes(B);
- Assert(TEncoding.UTF8.GetString(B) = 'GHÏ');
- AReader.ReadBytes(B);
- Assert(string(TEncoding.UTF8.GetString(B)) = '123');
- AReader.ReadBytes(B);
- Assert(string(TEncoding.UTF8.GetString(B)) = '456');
- AReader.ReadBytes(B);
- Assert(string(TEncoding.UTF8.GetString(B)) = '789');
- Assert(AReader.EOF);
- AReader.Reset;
- Assert(TEncoding.UTF8.GetString(AReader.ReadBytes) = 'ABÇ');
- Assert(TEncoding.UTF8.GetString(AReader.ReadBytes) = 'dÉf');
- Assert(TEncoding.UTF8.GetString(AReader.ReadBytes) = 'GHÏ');
- Assert(string(TEncoding.UTF8.GetString(AReader.ReadBytes)) = '123');
- Assert(string(TEncoding.UTF8.GetString(AReader.ReadBytes)) = '456');
- Assert(string(TEncoding.UTF8.GetString(AReader.ReadBytes)) = '789');
- Assert(AReader.EOF);
- end;
- procedure Test_Create(AReader: TBrookTextReader);
- begin
- Assert(Assigned(AReader.Encoding));
- Assert(AReader.Encoding.ClassType = TUTF8Encoding);
- Assert(not AReader.IsEOF);
- Assert(TEncoding.UTF8.GetByteCount(AI_19_CRLF) = 31);
- end;
- { TTestTStreamReader }
- procedure DoStreamReaderCreateNilStream1;
- begin
- TMyStreamReader.Create(nil, nil, 0, False);
- end;
- procedure DoStreamReaderCreateNilStream2;
- begin
- TMyStreamReader.Create(nil, nil);
- end;
- procedure DoStreamReaderCreateNilStream3;
- begin
- TMyStreamReader.Create(nil);
- end;
- procedure Test_StreamReaderCreate;
- var
- VStream: TStream;
- VReader: TMyStreamReader;
- begin
- VReader := TMyStreamReader.Create(nil, TBytesStream.Create, 0, True);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VReader.Free;
- end;
- VReader := TMyStreamReader.Create(TEncoding.UTF8, TBytesStream.Create, 0, True);
- try
- Assert(Assigned(VReader.Encoding));
- Assert(Assigned(VReader.Stream));
- Assert(VReader.Stream.ClassType = TBytesStream);
- Assert(VReader.OwnsStream);
- finally
- VReader.Free;
- end;
- VReader := TMyStreamReader.Create(nil, TBytesStream.Create, 512, True);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VReader.Free;
- end;
- VReader := TMyStreamReader.Create(TEncoding.UTF8, TBytesStream.Create, 512, True);
- try
- Assert(High(VReader.Buffer) = 511);
- finally
- VReader.Free;
- end;
- VStream := TBytesStream.Create;
- VReader := TMyStreamReader.Create(nil, VStream);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VStream.Free;
- VReader.Free;
- end;
- VStream := TBytesStream.Create;
- VReader := TMyStreamReader.Create(TEncoding.UTF8, VStream);
- try
- Assert(VReader.Encoding.ClassType = TUTF8Encoding);
- Assert(not VReader.OwnsStream);
- finally
- VStream.Free;
- VReader.Free;
- end;
- VStream := TBytesStream.Create;
- VReader := TMyStreamReader.Create(VStream);
- try
- Assert(not VReader.OwnsStream);
- Assert(Assigned(VReader.Stream));
- Assert(VReader.Encoding = TEncoding.UTF8);
- finally
- VStream.Free;
- VReader.Free;
- end;
- AssertExcept(DoStreamReaderCreateNilStream1, EArgumentNilException,
- Format(SParamIsNil, ['AStream']));
- AssertExcept(DoStreamReaderCreateNilStream2, EArgumentNilException,
- Format(SParamIsNil, ['AStream']));
- AssertExcept(DoStreamReaderCreateNilStream3, EArgumentNilException,
- Format(SParamIsNil, ['AStream']));
- end;
- procedure Test_StreamReaderReset;
- var
- VBytes: TBytes;
- VStream: TStream;
- VReader: TBrookTextReader;
- begin
- VStream := TBytesStream.Create;
- VReader := TBrookStreamReader.Create(VStream);
- try
- VBytes := TEncoding.UTF8.GetBytes(AI_19_CRLF);
- VStream.Write(VBytes[0], TEncoding.UTF8.GetByteCount(AI_19_CRLF));
- VStream.Seek(0, TSeekOrigin.soBeginning);
- Test_Reset(VReader);
- finally
- VStream.Free;
- VReader.Free;
- end;
- end;
- procedure Test_StreamReaderClose;
- var
- VStream: TStream;
- VReader: TBrookTextReader;
- begin
- VStream := TBytesStream.Create;
- VReader := TBrookStreamReader.Create(nil, VStream, 0, True);
- try
- Assert(Assigned(VStream));
- VReader.Close;
- Assert(VReader.IsEOF);
- VStream := nil;
- Assert(not Assigned(VStream));
- finally
- VReader.Free;
- end;
- end;
- procedure Test_StreamReaderIsEOF;
- var
- VStream: TStream;
- VReader: TBrookTextReader;
- begin
- VStream := TStringStream.Create(AI_19_CRLF, TEncoding.UTF8);
- VReader := TBrookStreamReader.Create(VStream);
- try
- Test_IsEOF(VReader);
- finally
- VStream.Free;
- VReader.Free;
- end;
- end;
- procedure Test_StreamReaderReadBytes;
- var
- VStream: TStream;
- VReader: TBrookTextReader;
- begin
- VStream := TStringStream.Create(AI_19_CRLF, TEncoding.UTF8);
- VReader := TBrookStreamReader.Create(VStream);
- try
- Test_ReadBytes(VReader);
- finally
- VStream.Free;
- VReader.Free;
- end;
- end;
- procedure Test_StreamReaderRead;
- var
- VStream: TStream;
- VReader: TBrookTextReader;
- begin
- VStream := TStringStream.Create(AI_19_CRLF, TEncoding.UTF8);
- VReader := TBrookStreamReader.Create(VStream);
- try
- Test_Read(VReader);
- finally
- VStream.Free;
- VReader.Free;
- end;
- end;
- procedure Test_StreamReaderEncoding;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookStreamReader.Create(TEncoding.UTF8,
- TBytesStream.Create, 0, True);
- try
- Test_Encoding(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_StreamReaderStream;
- var
- VStream: TStream;
- VReader: TBrookStreamReader;
- begin
- VStream := TBytesStream.Create;
- VReader := TBrookStreamReader.Create(VStream);
- try
- Assert(Assigned(VReader.Stream));
- Assert(VReader.Stream.ClassType = TBytesStream);
- finally
- VStream.Free;
- VReader.Free;
- end;
- end;
- procedure Test_StreamReaderOwnsStream;
- var
- VStream: TStream;
- VReader: TBrookTextReader;
- begin
- VStream := TBytesStream.Create;
- VReader := TBrookStreamReader.Create(nil, VStream, 0, True);
- VReader.Free;
- VStream := nil;
- Assert(not Assigned(VStream));
- VStream := TBytesStream.Create;
- VReader := TBrookStreamReader.Create(nil, VStream);
- try
- Assert(Assigned(VStream));
- finally
- VStream.Free;
- VReader.Free;
- end;
- end;
- { TTestTStringReader }
- procedure Test_StringReaderCreate;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookStringReader.Create(TEncoding.UTF8, AI_19_CRLF, 1024);
- try
- Test_Create(VReader);
- finally
- VReader.Free;
- end;
- VReader := TBrookStringReader.Create(nil, AI_19_CRLF, 1024);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VReader.Free;
- end;
- VReader := TBrookStringReader.Create(TEncoding.UTF8, AI_19_CRLF);
- try
- Test_Create(VReader);
- finally
- VReader.Free;
- end;
- VReader := TBrookStringReader.Create(nil, AI_19_CRLF);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VReader.Free;
- end;
- VReader := TBrookStringReader.Create(AI_19_CRLF);
- try
- Assert(VReader.Encoding = TEncoding.UTF8);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_StringReaderReset;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookStringReader.Create(AI_19_CRLF);
- try
- Test_Reset(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_StringReaderClose;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookStringReader.Create(nil, AI_19_CRLF);
- try
- Test_Close(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_StringReaderIsEOF;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookStringReader.Create(AI_19_CRLF);
- try
- Test_IsEOF(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_StringReaderReadBytes;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookStringReader.Create(AI_19_CRLF);
- try
- Test_ReadBytes(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_StringReaderRead;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookStringReader.Create(AI_19_CRLF);
- try
- Test_Read(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_StringReaderEncoding;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookStringReader.Create(AI_19_CRLF);
- try
- Test_Encoding(VReader);
- finally
- VReader.Free;
- end;
- end;
- { TTestTFileReader }
- procedure Test_FileReaderCreate;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookFileReader.Create(TEncoding.UTF8, AI_19_FILE,
- fmOpenRead, 438, 1024);
- try
- Test_Create(VReader);
- finally
- VReader.Free;
- end;
- VReader := TBrookFileReader.Create(nil, AI_19_FILE, fmOpenRead, 438, 1024);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VReader.Free;
- end;
- VReader := TBrookFileReader.Create(TEncoding.UTF8, AI_19_FILE, fmOpenRead, 1024);
- try
- Test_Create(VReader);
- finally
- VReader.Free;
- end;
- VReader := TBrookFileReader.Create(nil, AI_19_FILE, fmOpenRead, 1024);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VReader.Free;
- end;
- VReader := TBrookFileReader.Create(TEncoding.UTF8, AI_19_FILE, 1024);
- try
- Test_Create(VReader);
- finally
- VReader.Free;
- end;
- VReader := TBrookFileReader.Create(nil, AI_19_FILE, 1024);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VReader.Free;
- end;
- VReader := TBrookFileReader.Create(TEncoding.UTF8, AI_19_FILE);
- try
- Test_Create(VReader);
- finally
- VReader.Free;
- end;
- VReader := TBrookFileReader.Create(nil, AI_19_FILE);
- try
- Assert(not Assigned(VReader.Encoding));
- finally
- VReader.Free;
- end;
- VReader := TBrookFileReader.Create(AI_19_FILE);
- try
- Assert(VReader.Encoding = TEncoding.UTF8);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_FileReaderReset;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookFileReader.Create(AI_19_FILE);
- try
- Test_Reset(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_FileReaderClose;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookFileReader.Create(nil, AI_19_FILE);
- try
- Test_Close(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_FileReaderIsEOF;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookFileReader.Create(AI_19_FILE);
- try
- Test_IsEOF(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_FileReaderReadBytes;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookFileReader.Create(nil, AI_19_FILE);
- try
- Test_ReadBytes(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_FileReaderRead;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookFileReader.Create(AI_19_FILE);
- try
- Test_Read(VReader);
- finally
- VReader.Free;
- end;
- end;
- procedure Test_TextReaderEncoding;
- var
- VReader: TBrookTextReader;
- begin
- VReader := TBrookFileReader.Create(AI_19_FILE);
- try
- Test_Encoding(VReader);
- finally
- VReader.Free;
- end;
- end;
- begin
- {$IF (NOT DEFINED(FPC)) AND DEFINED(DEBUG)}
- ReportMemoryLeaksOnShutdown := True;
- {$ENDIF}
- Test_StreamReaderCreate;
- Test_StreamReaderReset;
- Test_StreamReaderClose;
- Test_StreamReaderIsEOF;
- Test_StreamReaderReadBytes;
- Test_StreamReaderRead;
- Test_StreamReaderEncoding;
- Test_StreamReaderStream;
- Test_StreamReaderOwnsStream;
- Test_StringReaderCreate;
- Test_StringReaderReset;
- Test_StringReaderClose;
- Test_StringReaderIsEOF;
- Test_StringReaderReadBytes;
- Test_StringReaderRead;
- Test_StringReaderEncoding;
- Test_FileReaderCreate;
- Test_FileReaderReset;
- Test_FileReaderClose;
- Test_FileReaderIsEOF;
- Test_FileReaderReadBytes;
- Test_FileReaderRead;
- Test_TextReaderEncoding;
- end.
|