| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- unit IdTestCoderQuotedPrintable;
- interface
- //http://www.freesoft.org/CIE/RFC/1521/6.htm
- uses
- IdCoder,
- IdCoderQuotedPrintable,
- IdObjs,
- IdStack,
- IdStream,
- IdTest,
- IdSys;
- type
- TIdTestCoderQuotedPrintable = class(TIdTest)
- private
- protected
- function EncDec(const aStr:string):boolean;
- published
- procedure TestCodec;
- end;
- implementation
- //this should be elsewhere, or a proper function
- function StrRight(const aStr:string;const aCount:integer):string;
- begin
- Result:=Copy(aStr,Length(aStr)-aCount+1,aCount);
- end;
- function TIdTestCoderQuotedPrintable.EncDec;
- //do a round-trip encode>decode, and check
- var
- aEnc,aDec:string;
- aExpect:string;
- aList:TIdStringList;
- i:Integer;
- begin
- aEnc:=EncodeString(TIdEncoderQuotedPrintable,aStr);
- //check that no lines start with a .
- aList:=TIdStringList.Create;
- try
- aList.Text:=aEnc;
- for i:=0 to aList.Count-1 do
- begin
- if aList[i]='' then Continue;
- if aList[i][1]='.' then Assert(False,aList[i]);
- end;
- finally
- Sys.FreeAndNil(aList);
- end;
- aDec:=DecodeString(TIdDecoderQuotedPrintable,aEnc);
- //seems that it adds a crlf if not already there
- if StrRight(aStr,2)=#13#10 then aExpect:=aStr
- else aExpect:=aStr+#13#10;
- Result:=(aDec=aExpect);
- end;
- procedure TIdTestCoderQuotedPrintable.TestCodec;
- var
- s:string;
- const
- cStr='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
- begin
- //should do a loop from 1..100?
- s:=cStr+#13#10;
- Assert(EncDec(s));
- Assert(EncDec('one'#13#10'.two.'#13#10));
- Assert(EncDec('='));
- Assert(EncDec('1aAzZ<>!@#$%^&*()-=/;[]"'));
- Assert(EncDec('.'));
- Assert(EncDec('.test.'));
- Assert(EncDec('.line1.'#13#10'.line2.'));
- s:=EncodeString(TIdEncoderQuotedPrintable,'abc ');
- Assert(s='abc =20'#13#10);
- s:=EncodeString(TIdEncoderQuotedPrintable,'...');
- Assert(s='=2E..'#13#10);
- s:='123456789 123456789 123456789 123456789 123456789 123456789 123456789 .23456789';
- Assert(EncDec(s));
- end;
- initialization
- TIdTest.RegisterTest(TIdTestCoderQuotedPrintable);
- end.
|