mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-11 10:12:34 +02:00
147 lines
4.0 KiB
ObjectPascal
147 lines
4.0 KiB
ObjectPascal
program testreg1;
|
|
uses
|
|
regexpr;
|
|
|
|
var
|
|
r : tregexprengine;
|
|
index,len : longint;
|
|
|
|
procedure do_error(i : longint);
|
|
|
|
begin
|
|
writeln('error near ',i,' index: ',index,' len: ',len);
|
|
halt(1);
|
|
end;
|
|
|
|
begin
|
|
writeln('*** Testing unit regexpr ***');
|
|
|
|
{ basic tests }
|
|
|
|
r:=GenerateRegExprEngine('[A-Z]',[]);
|
|
if not(RegExprPos(r,'234578923457823659GHJK38',index,len)) or
|
|
(index<>18) or (len<>1) then
|
|
do_error(1000);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('[A-Z]*',[]);
|
|
if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
|
|
{ is this result correct ??? }
|
|
(index<>0) or (len<>0) then
|
|
do_error(1002);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('[A-Z]+',[]);
|
|
if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
|
|
(index<>18) or (len<>5) then
|
|
do_error(1003);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('[A-Z][A-Z]*',[]);
|
|
if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
|
|
(index<>18) or (len<>5) then
|
|
do_error(1004);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('[A-Z][A-Z]?',[]);
|
|
if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
|
|
(index<>18) or (len<>2) then
|
|
do_error(1005);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('[^\d]+',[]);
|
|
if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
|
|
(index<>18) or (len<>5) then
|
|
do_error(1006);
|
|
DestroyregExprEngine(r);
|
|
|
|
{ test chaining }
|
|
|
|
r:=GenerateRegExprEngine('[A-Z][A-Z]?[A-Z]',[]);
|
|
if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
|
|
(index<>18) or (len<>3) then
|
|
do_error(1007);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('[A-Z][A-Z]*[0-9]',[]);
|
|
if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
|
|
(index<>18) or (len<>6) then
|
|
do_error(1008);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('[A-Z]+[0-9]',[]);
|
|
if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
|
|
(index<>18) or (len<>6) then
|
|
do_error(1009);
|
|
DestroyregExprEngine(r);
|
|
|
|
{ case insensitive: }
|
|
|
|
r:=GenerateRegExprEngine('[A-Z]',[ref_caseinsensitive]);
|
|
if not(RegExprPos(r,'234578923457823659a38',index,len)) or
|
|
(index<>18) or (len<>1) then
|
|
do_error(1100);
|
|
DestroyregExprEngine(r);
|
|
|
|
{ case insensitive: }
|
|
r:=GenerateRegExprEngine('[a-z]',[ref_caseinsensitive]);
|
|
if not(RegExprPos(r,'234578923457823659A38',index,len)) or
|
|
(index<>18) or (len<>1) then
|
|
do_error(1101);
|
|
DestroyregExprEngine(r);
|
|
|
|
{ with parenthsis }
|
|
r:=GenerateRegExprEngine('(foo)1234',[]);
|
|
if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
|
|
(index<>7) or (len<>7) then
|
|
do_error(1200);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('(((foo)))1234',[]);
|
|
if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
|
|
(index<>7) or (len<>7) then
|
|
do_error(1201);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('(foo)(1234)',[]);
|
|
if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
|
|
(index<>7) or (len<>7) then
|
|
do_error(1202);
|
|
DestroyregExprEngine(r);
|
|
|
|
{ test real backtracking }
|
|
|
|
r:=GenerateRegExprEngine('nofoo|foo',[]);
|
|
if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
|
|
(index<>7) or (len<>3) then
|
|
do_error(1300);
|
|
DestroyregExprEngine(r);
|
|
|
|
{
|
|
r:=GenerateRegExprEngine('(nofoo|foo)1234',[]);
|
|
if not(RegExprPos(r,'1234 nofoo1234XXXX',index,len)) or
|
|
(index<>8) or (len<>9) then
|
|
do_error(1008);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('(nofoo|foo|anotherfoo)1234',[]);
|
|
if not(RegExprPos(r,'1234 nofoo1234XXXX',index,len)) or
|
|
(index<>8) or (len<>9) then
|
|
do_error(1009);
|
|
DestroyregExprEngine(r);
|
|
|
|
r:=GenerateRegExprEngine('nofoo1234|foo1234',[]);
|
|
if (r.data=nil) or not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
|
|
(index<>7) or (len<>7) then
|
|
do_error(1010);
|
|
DestroyregExprEngine(r);
|
|
}
|
|
writeln('*** Testing unit regexpr was successful ***');
|
|
end.
|
|
{
|
|
$Log$
|
|
Revision 1.3 2002-09-11 20:07:17 michael
|
|
+ Fixed log
|
|
|
|
}
|