lazarus/test/lazutils/testlconvencoding.pas
2013-07-08 17:57:27 +00:00

74 lines
2.0 KiB
ObjectPascal

{
Test all with:
./runtests --format=plain --suite=TTestLConvEncoding
Test specific with:
./runtests --format=plain --suite=Test_CP_UTF8_CP
}
unit TestLConvEncoding;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, fpcunit, LConvEncoding, LazLogger, testglobals, LCLProc;
type
{ TTestLConvEncoding }
TTestLConvEncoding = class(TTestCase)
public
published
procedure Test_CP_UTF8_CP;
end;
implementation
{ TTestLConvEncoding }
procedure TTestLConvEncoding.Test_CP_UTF8_CP;
procedure Test(CodePageName: string; const CP2UTF8,UTF82CP: TConvertEncodingFunction);
var
c: Char;
AsUTF8, Back: string;
l: integer;
begin
for c:=#1 to High(Char) do begin
AsUTF8:=CP2UTF8(c);
if AsUTF8='' then
AssertEquals('CodePage '+CodePageName+' to UTF8 creates empty string for character #'+IntToStr(ord(c)),true,false);
Back:=UTF82CP(AsUTF8);
if Back<>c then
AssertEquals('CodePage '+CodePageName+' ('+IntToStr(ord(c))+') to UTF8 ('+dbgs(UTF8CharacterToUnicode(PChar(AsUTF8),l))+') and back differ for character #'+IntToStr(ord(c)),DbgStr(c),dbgstr(Back));
end;
end;
begin
Test('ISO_8859_1',@ISO_8859_1ToUTF8,@UTF8ToISO_8859_1);
Test('ISO_8859_2',@ISO_8859_2ToUTF8,@UTF8ToISO_8859_2);
Test('ISO_8859_15',@ISO_8859_15ToUTF8,@UTF8ToISO_8859_15);
Test('437',@CP437ToUTF8,@UTF8ToCP437);
Test('850',@CP850ToUTF8,@UTF8ToCP850);
Test('852',@CP852ToUTF8,@UTF8ToCP852);
Test('866',@CP866ToUTF8,@UTF8ToCP866);
Test('874',@CP874ToUTF8,@UTF8ToCP874);
Test('1250',@CP1250ToUTF8,@UTF8ToCP1250);
Test('1251',@CP1251ToUTF8,@UTF8ToCP1251);
Test('1252',@CP1252ToUTF8,@UTF8ToCP1252);
Test('1253',@CP1253ToUTF8,@UTF8ToCP1253);
Test('1254',@CP1254ToUTF8,@UTF8ToCP1254);
Test('1255',@CP1255ToUTF8,@UTF8ToCP1255);
Test('1256',@CP1256ToUTF8,@UTF8ToCP1256);
Test('1257',@CP1257ToUTF8,@UTF8ToCP1257);
Test('1258',@CP1258ToUTF8,@UTF8ToCP1258);
end;
initialization
AddToLazUtilsTestSuite(TTestLConvEncoding);
end.