123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- unit tcnetencoding;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, fpcunit, testutils, testregistry, System.NetEncoding;
- type
- { TTestBase64Encoding }
- TTestBase64Encoding = class(TTestCase)
- private
- FBytes: TBytes;
- FEnc: TBase64Encoding;
- FEnDefBytes: TBytes;
- procedure AssertBytes(aExpected, aActual: TBytes);
- protected
- procedure SetUp; override;
- procedure TearDown; override;
- property Enc : TBase64Encoding Read FEnc;
- Property DefBytes : TBytes read FBytes;
- Property EncDefBytes : TBytes read FEnDefBytes;
- published
- procedure TestHookUp;
- procedure TestBytesToString;
- procedure TestBytesToBytes;
- procedure TestStringToString;
- end;
- { TTestURLEncoding }
- TTestURLEncoding = class(TTestCase)
- private
- FEnc: TURLEncoding;
- protected
- procedure SetUp; override;
- procedure TearDown; override;
- property Enc : TURLEncoding Read FEnc;
- published
- procedure TestHookUp;
- Procedure TestSpace;
- procedure TestEqual;
- procedure TestAmpersand;
- procedure TestQuestion;
- end;
- { TTestHTMLEncoding }
- TTestHTMLEncoding = class(TTestCase)
- private
- FEnc: THTMLEncoding;
- protected
- procedure SetUp; override;
- procedure TearDown; override;
- property Enc : THTMLEncoding Read FEnc;
- published
- procedure TestHookUp;
- procedure TestLessThan;
- procedure TestGreaterThan;
- procedure TestAmpersand;
- procedure TestBeforeAfter;
- end;
- implementation
- { TTestHTMLEncoding }
- procedure TTestHTMLEncoding.SetUp;
- begin
- inherited SetUp;
- FEnc:=THTMLEncoding.Create;
- end;
- procedure TTestHTMLEncoding.TearDown;
- begin
- inherited TearDown;
- FEnc:=THTMLEncoding.Create;
- end;
- procedure TTestHTMLEncoding.TestHookUp;
- begin
- AssertNotNull('Enc',Enc);
- end;
- procedure TTestHTMLEncoding.TestLessThan;
- begin
- AssertEquals('from lessThan','<',Enc.Encode('<'));
- AssertEquals('To lessthan','<',Enc.Decode('<'));
- end;
- procedure TTestHTMLEncoding.TestGreaterThan;
- begin
- AssertEquals('from greaterThan','>',Enc.Encode('>'));
- AssertEquals('To greaterthan','>',Enc.Decode('>'));
- end;
- procedure TTestHTMLEncoding.TestAmpersand;
- begin
- AssertEquals('from ampersand','&',Enc.Encode('&'));
- AssertEquals('To ampersand','&',Enc.Decode('&'));
- end;
- procedure TTestHTMLEncoding.TestBeforeAfter;
- begin
- AssertEquals('from ','A&B',Enc.Encode('A&B'));
- AssertEquals('To ','A&B',Enc.Decode('A&B'));
- end;
- { TTestURLEncoding }
- procedure TTestURLEncoding.SetUp;
- begin
- inherited SetUp;
- FEnc:=TURLENcoding.Create;
- end;
- procedure TTestURLEncoding.TearDown;
- begin
- FreeAndNil(FEnc);
- inherited TearDown;
- end;
- procedure TTestURLEncoding.TestHookUp;
- begin
- AssertNotNull('Enc',Enc);
- end;
- procedure TTestURLEncoding.TestSpace;
- begin
- AssertEquals('Space','+',Enc.Encode(' '));
- end;
- procedure TTestURLEncoding.TestEqual;
- begin
- AssertEquals('from Equal','%'+hexStr(Ord('='),2),Enc.Encode('='));
- AssertEquals('To Equal','=',Enc.Decode('%'+hexStr(Ord('='),2)));
- end;
- procedure TTestURLEncoding.TestAmpersand;
- begin
- AssertEquals('From Ampersand','%'+hexStr(Ord('&'),2),Enc.Encode('&'));
- AssertEquals('To Ampersand','&',Enc.Decode('%'+hexStr(Ord('&'),2)));
- end;
- procedure TTestURLEncoding.TestQuestion;
- begin
- AssertEquals('From QuestionMark','%'+hexStr(Ord('?'),2),Enc.Encode('?'));
- AssertEquals('To questionmark','?',Enc.Decode('%'+hexStr(Ord('?'),2)));
- end;
- { TTestBase64Encoding }
- Const
- // Sequence of 5 bytes: 0,1,2,3,4 base64 encoded
- SDefBytes = 'AQIDBAU=';
- // Sequence of 5 letters: ABCDE base64 encoded
- SDefLetters = 'QUJDREU=';
- procedure TTestBase64Encoding.SetUp;
- Var
- I : integer;
- begin
- Inherited;
- FEnc:=TBase64Encoding.Create;
- SetLength(FBytes,5);
- For I:=0 to 4 do
- FBytes[I]:=I+1;
- SetLength(FEnDefBytes,Length(SDefBytes));
- For I:=0 to Length(SDefBytes)-1 do
- FEnDefBytes[I]:=Ord(SDefBytes[I+1]);
- end;
- procedure TTestBase64Encoding.TearDown;
- begin
- FreeAndNil(FEnc);
- Inherited;
- end;
- procedure TTestBase64Encoding.TestHookUp;
- begin
- AssertNotNull('Enc',Enc);
- end;
- procedure TTestBase64Encoding.AssertBytes(aExpected,aActual : TBytes);
- Var
- I : Integer;
- begin
- AssertEquals('Length same',Length(aExpected),Length(aActual));
- For I:=0 to Length(aExpected)-1 do
- AssertEquals(Format('Byte at pos %d same',[i]),aExpected[i],aActual[i]);
- end;
- procedure TTestBase64Encoding.TestBytesToString;
- begin
- AssertEquals('Encoding', SDefBytes,Enc.EncodeBytesToString(DefBytes));
- end;
- procedure TTestBase64Encoding.TestBytesToBytes;
- begin
- AssertBytes(EncDefBytes,Enc.Encode(DefBytes));
- end;
- procedure TTestBase64Encoding.TestStringToString;
- begin
- AssertEquals('Encoding', SDefLetters,Enc.Encode('ABCDE'));
- end;
- initialization
- RegisterTests([TTestBase64Encoding,TTestURLEncoding,TTestHTMLEncoding]);
- end.
|