fpc/tests/test/tcpstrchar2ansistr.pp
2018-05-09 23:11:48 +00:00

73 lines
1.3 KiB
ObjectPascal

{$ifdef go32v2}
{$define USE_INTERNAL_UNICODE}
{$endif}
{$ifdef USE_INTERNAL_UNICODE}
{$define USE_FPWIDESTRING_UNIT}
{$define USE_UNICODEDUCET_UNIT}
{$define USE_CPALL_UNIT}
{$endif}
uses
{$ifdef unix}
{$ifdef darwin}iosxwstr{$else}cwstring{$endif},
{$endif unix}
{$ifdef USE_UNICODEDUCET_UNIT}
unicodeducet,
{$endif}
{$ifdef USE_FPWIDESTRING_UNIT}
fpwidestring,
{$endif}
{$ifdef USE_CPALL_UNIT}
cpall,
{$endif}
sysutils;
type
ts866 = type AnsiString(866);
procedure doerror(ANumber : Integer);
begin
WriteLn('error ',ANumber);
Halt(ANumber);
end;
var
x : ts866;
c : ansichar;
sa : ansistring;
begin
c := 'a';
sa := c;
if (StringCodePage(sa) <> DefaultSystemCodePage) then
doerror(1);
if (Length(sa) <> 1) then
doerror(2);
if (Byte(sa[1]) <> Byte(c)) then
doerror(3);
x := c;
if (StringCodePage(x) <> 866) then
doerror(4);
if (Length(x) <> 1) then
doerror(5);
if (Byte(x[1]) <> Byte(c)) then
doerror(6);
c := #156;
sa := c;
if (StringCodePage(sa) <> DefaultSystemCodePage) then
doerror(10);
if (Length(sa) <> 1) then
doerror(20);
if (Byte(sa[1]) <> Byte(c)) then
doerror(30);
x := c;
if (StringCodePage(x) <> 866) then
doerror(40);
if (Length(x) <> 1) then
doerror(50);
if (Byte(x[1]) <> Byte(c)) then
doerror(60);
WriteLn('Ok');
end.