123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892 |
- {$IFDEF FPC}
- {$MODE OBJFPC}
- {$ENDIF}
- program testreg1;
- uses
- regexpr;
- var
- r : tregexprengine;
- index,len : longint;
- S : String;
- Dest : AnsiString;
- procedure do_error(i : longint);
- begin
- writeln('error near ',i,' index: ',index,' len: ',len);
- halt(1);
- end;
- var
- initok: boolean;
- begin
- writeln('*** Testing unit regexpr ***');
- writeln('*** Searching tests ***');
- { basic tests }
- initok:=GenerateRegExprEngine('.*',[],r);
- if not initok then
- do_error(90);
- if not(RegExprPos(r,'CXXXX',index,len)) or
- (index<>0) or (len<>5) then
- do_error(91);
- DestroyregExprEngine(r);
- { java package name }
- initok:=GenerateRegExprEngine('[A-Za-z]+([.][0-9A-Za-z]+)*',[],r);
- if not initok then
- do_error(92);
- if not(RegExprPos(r,'CXXXX',index,len)) or
- (index<>0) or (len<>5) then
- do_error(92);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('[A-Za-z]+([.][0-9A-Za-z]+)*',[],r);
- if not initok then
- do_error(92);
- if not(RegExprPos(r,'CXXXX.A',index,len)) or
- (index<>0) or (len<>7) then
- do_error(92);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('[A-Za-z]+([.][0-9A-Za-z]+)*',[],r);
- if not initok then
- do_error(92);
- if not(RegExprPos(r,'CXXXX.A9Package',index,len)) or
- (index<>0) or (len<>15) then
- do_error(92);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('[A-Za-z]+([.][0-9A-Za-z]+)*',[],r);
- if not initok then
- do_error(92);
- if not(RegExprPos(r,'1CXXXX.A9Package',index,len)) or
- (index<>1) or (len<>15) then
- do_error(92);
- DestroyregExprEngine(r);
- { singleline }
- initok:=GenerateRegExprEngine('^TEST1',[],r);
- if not initok then
- do_error(101);
- if (RegExprPos(r,'THISISATEST1TEST1THIS',index,len)) then
- do_error(101);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^TEST1(ANOTHER)',[],r);
- if not initok then
- do_error(102);
- if (RegExprPos(r,'THISISATEST1ANOTHER',index,len)) then
- do_error(102);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^TEST1(ANOTHER)',[],r);
- if not initok then
- do_error(103);
- if not(RegExprPos(r,'TEST1ANOTHER',index,len)) or
- (index<>0) or (len<>12) then
- do_error(103);
- DestroyregExprEngine(r);
- { multiline }
- { UNIX Newline }
- initok:=GenerateRegExprEngine('^TEST1',[ref_multiline],r);
- if not initok then
- do_error(120);
- if not(RegExprPos(r,'THISISATEST1'#10'TEST12',index,len)) or
- (index<>13) or (len<>5) then
- do_error(120);
- DestroyregExprEngine(r);
- { Apple Newline }
- initok:=GenerateRegExprEngine('^TEST1',[ref_multiline],r);
- if not initok then
- do_error(121);
- if not(RegExprPos(r,'THISISATEST1'#13'TEST12',index,len)) or
- (index<>13) or (len<>5) then
- do_error(121);
- DestroyregExprEngine(r);
- { DOS Newline }
- initok:=GenerateRegExprEngine('^TEST1',[ref_multiline],r);
- if not initok then
- do_error(122);
- if not(RegExprPos(r,'THISISATEST1'#13#10'TEST12',index,len)) or
- (index<>14) or (len<>5) then
- do_error(122);
- DestroyregExprEngine(r);
- { IBM Mainframe Newline }
- initok:=GenerateRegExprEngine('^TEST1',[ref_multiline],r);
- if not initok then
- do_error(123);
- if not(RegExprPos(r,'THISISATEST1'#$85'TEST12',index,len)) or
- (index<>13) or (len<>5) then
- do_error(123);
- DestroyregExprEngine(r);
- { Some weird cases }
- initok:=GenerateRegExprEngine('^TEST1',[ref_multiline],r);
- if not initok then
- do_error(124);
- if not(RegExprPos(r,#13#10#13#10'TEST12',index,len)) or
- (index<>4) or (len<>5) then
- do_error(124);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^TEST1',[ref_multiline],r);
- if not initok then
- do_error(125);
- if RegExprPos(r,#13#10#13#10'F',index,len) then
- do_error(125);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^TEST1(ANOTHER)',[ref_multiline],r);
- if not initok then
- do_error(102);
- if (RegExprPos(r,'THISISATEST1ANOTHER',index,len)) then
- do_error(102);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^TEST1(ANOTHER)',[],r);
- if not initok then
- do_error(103);
- if not(RegExprPos(r,'TEST1ANOTHER',index,len)) or
- (index<>0) or (len<>12) then
- do_error(103);
- DestroyregExprEngine(r);
- { END OF LINE CASES }
- initok:=GenerateRegExprEngine('TEST1$',[],r);
- if not initok then
- do_error(101);
- if (RegExprPos(r,'THISISATEST1TEST1THIS',index,len)) then
- do_error(101);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('TEST1(ANOTHER)$',[],r);
- if not initok then
- do_error(102);
- if not(RegExprPos(r,'!TEST1ANOTHER',index,len)) or
- (index<>1) or (len<>12) then
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('TEST1(ANOTHER)$',[],r);
- if not initok then
- do_error(102);
- if not(RegExprPos(r,'!TEST1ANOTHERFOOBARTEST1ANOTHER',index,len)) or
- (index<>19) or (len<>12) then
- DestroyregExprEngine(r);
- { UNIX Newline }
- initok:=GenerateRegExprEngine('TEST1$',[ref_multiline],r);
- if not initok then
- do_error(120);
- if not(RegExprPos(r,'THISISATEST1'#10'TEST12',index,len)) or
- (index<>7) or (len<>5) then
- do_error(120);
- DestroyregExprEngine(r);
- { Apple Newline }
- initok:=GenerateRegExprEngine('TEST1$',[ref_multiline],r);
- if not initok then
- do_error(121);
- if not(RegExprPos(r,'THISISATEST1'#13'TEST12',index,len)) or
- (index<>7) or (len<>5) then
- do_error(121);
- DestroyregExprEngine(r);
- { DOS Newline }
- initok:=GenerateRegExprEngine('TEST1$',[ref_multiline],r);
- if not initok then
- do_error(122);
- if not(RegExprPos(r,'THISISATEST1'#13#10'TEST12',index,len)) or
- (index<>7) or (len<>5) then
- do_error(122);
- DestroyregExprEngine(r);
- { IBM Mainframe Newline }
- initok:=GenerateRegExprEngine('TEST1$',[ref_multiline],r);
- if not initok then
- do_error(123);
- if not(RegExprPos(r,'THISISATEST1'#$85'TEST12',index,len)) or
- (index<>7) or (len<>5) then
- do_error(123);
- DestroyregExprEngine(r);
- { Some weird cases }
- initok:=GenerateRegExprEngine('TEST1$',[ref_multiline],r);
- if not initok then
- do_error(124);
- if not(RegExprPos(r,#13#10#13#10'TEST1'#13#10,index,len)) or
- (index<>4) or (len<>5) then
- do_error(124);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('TEST1$',[ref_multiline],r);
- if not initok then
- do_error(125);
- if RegExprPos(r,#13#10#13#10'F'#13#10#13#10,index,len) then
- do_error(125);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('TEST1(ANOTHER)$',[ref_multiline],r);
- if not initok then
- do_error(102);
- if (RegExprPos(r,'THISISATEST1ANOTHERFOO',index,len)) then
- do_error(102);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('TEST1(ANOTHER)$',[],r);
- if not initok then
- do_error(103);
- if not(RegExprPos(r,'TEST1ANOTHER',index,len)) or
- (index<>0) or (len<>12) then
- do_error(103);
- DestroyregExprEngine(r);
- { start and end of string handling }
- initok:=GenerateRegExprEngine('^TEST1(ANOTHER)$',[],r);
- if not initok then
- do_error(103);
- if not(RegExprPos(r,'TEST1ANOTHER',index,len)) or
- (index<>0) or (len<>12) then
- do_error(103);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^TEST1(ANOTHER)$',[],r);
- if not initok then
- do_error(103);
- if RegExprPos(r,'FOOTEST1ANOTHER',index,len) then
- do_error(103);
- DestroyregExprEngine(r);
- (* {n,} tests *)
- initok:=GenerateRegExprEngine('(AZ){0,}',[],r);
- if not initok then
- do_error(700);
- if not(RegExprPos(r,'C',index,len)) or
- (index<>0) or (len<>0) then
- do_error(700);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(AZ){0,}',[],r);
- if not initok then
- do_error(701);
- if not(RegExprPos(r,'AZ',index,len)) or
- (index<>0) or (len<>2) then
- do_error(701);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(AZ){0,}',[],r);
- if not initok then
- do_error(702);
- if not(RegExprPos(r,'AZAZ',index,len)) or
- (index<>0) or (len<>4) then
- do_error(702);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ){0,}',[],r);
- if not initok then
- do_error(703);
- if not(RegExprPos(r,'CatAZAZ',index,len)) or
- (index<>0) or (len<>7) then
- do_error(703);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('C(AZ){3,}',[],r);
- if not initok then
- do_error(704);
- if (RegExprPos(r,'AZAZAZ',index,len)) then
- do_error(704);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ){3,}',[],r);
- if not initok then
- do_error(705);
- if not(RegExprPos(r,'BCatAZAZAZDABCD',index,len)) or
- (index<>1) or (len<>9) then
- do_error(705);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ){2,}Q',[],r);
- if not initok then
- do_error(705);
- if not(RegExprPos(r,'BCatAZAZAZAZQDABCD',index,len)) or
- (index<>1) or (len<>12) then
- do_error(705);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('CatAZ{0,}',[],r);
- if not initok then
- do_error(706);
- if RegExprPos(r,'BCatDAZZZBCD',index,len) then
- do_error(706);
- DestroyregExprEngine(r);
- (* {n} tests *)
- initok:=GenerateRegExprEngine('Cat(AZ){3}',[],r);
- if not initok then
- do_error(715);
- if not(RegExprPos(r,'BCatAZAZAZDABCD',index,len)) or
- (index<>1) or (len<>9) then
- do_error(715);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('CatAz{5}',[],r);
- if not initok then
- do_error(716);
- if not(RegExprPos(r,'BCatAzzzzzDABCD',index,len)) or
- (index<>1) or (len<>9) then
- do_error(716);
- initok:=GenerateRegExprEngine('CatAz{5}',[],r);
- if not initok then
- do_error(717);
- if RegExprPos(r,'BCatDAzizzzzHello',index,len) then
- do_error(717);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('CatAz{0}',[],r);
- if not initok then
- do_error(718);
- if RegExprPos(r,'BCatDAzizzzzHello',index,len) then
- do_error(718);
- DestroyregExprEngine(r);
- (* {n,m} tests *)
- initok:=GenerateRegExprEngine('Cat(AZ){1,3}',[],r);
- if not initok then
- do_error(725);
- if not(RegExprPos(r,'BCatAZAZAZDABCD',index,len)) or
- (index<>1) or (len<>9) then
- do_error(725);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ){1,3}',[],r);
- if not initok then
- do_error(725);
- if not(RegExprPos(r,'BCatAZAZDABCD',index,len)) or
- (index<>1) or (len<>7) then
- do_error(725);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('CatAz{1,5}',[],r);
- if not initok then
- do_error(726);
- if not(RegExprPos(r,'BCatAzzzzzzzzzzDABCD',index,len)) or
- (index<>1) or (len<>9) then
- do_error(726);
- initok:=GenerateRegExprEngine('CatAz{1,1}',[],r);
- if not initok then
- do_error(727);
- if not(RegExprPos(r,'BCatAzzzzzzzzzzDABCD',index,len)) or
- (index<>1) or (len<>5) then
- do_error(727);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('CatAz{3,4}',[],r);
- if not initok then
- do_error(728);
- if not(RegExprPos(r,'BCatAzzzzzzzzzzDABCD',index,len)) or
- (index<>1) or (len<>8) then
- do_error(728);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('CatAz{0,0}',[],r);
- if not initok then
- do_error(729);
- if RegExprPos(r,'BCatDAzizzzzHello',index,len) then
- do_error(729);
- DestroyregExprEngine(r);
- { ()* tests }
- initok:=GenerateRegExprEngine('(AZ)*',[],r);
- if not initok then
- do_error(800);
- if not(RegExprPos(r,'C',index,len)) or
- (index<>0) or (len<>0) then
- do_error(800);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(AZ)*',[],r);
- if not initok then
- do_error(801);
- if not(RegExprPos(r,'AZ',index,len)) or
- (index<>0) or (len<>2) then
- do_error(801);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(AZ)*',[],r);
- if not initok then
- do_error(802);
- if not(RegExprPos(r,'AZAZ',index,len)) or
- (index<>0) or (len<>4) then
- do_error(802);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ)*',[],r);
- if not initok then
- do_error(803);
- if not(RegExprPos(r,'CatAZAZ',index,len)) or
- (index<>0) or (len<>7) then
- do_error(803);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('C(AZ)*',[],r);
- if not initok then
- do_error(804);
- if (RegExprPos(r,'AZAZ',index,len)) then
- do_error(804);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ)*',[],r);
- if not initok then
- do_error(805);
- if not(RegExprPos(r,'BCatAZAZDABCD',index,len)) or
- (index<>1) or (len<>7) then
- do_error(805);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ)*',[],r);
- if not initok then
- do_error(806);
- if not(RegExprPos(r,'BCatDABCD',index,len)) or
- (index<>1) or (len<>3) then
- do_error(806);
- DestroyregExprEngine(r);
- { ()+ tests }
- initok:=GenerateRegExprEngine('(AZ)+',[],r);
- if not initok then
- do_error(850);
- if (RegExprPos(r,'C',index,len)) then
- do_error(850);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(AZ)+',[],r);
- if not initok then
- do_error(851);
- if not(RegExprPos(r,'AZ',index,len)) or
- (index<>0) or (len<>2) then
- do_error(851);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(AZ)+',[],r);
- if not initok then
- do_error(852);
- if not(RegExprPos(r,'AZAZ',index,len)) or
- (index<>0) or (len<>4) then
- do_error(852);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ)+',[],r);
- if not initok then
- do_error(853);
- if not(RegExprPos(r,'CatAZAZ',index,len)) or
- (index<>0) or (len<>7) then
- do_error(853);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('C(AZ)+',[],r);
- if not initok then
- do_error(854);
- if (RegExprPos(r,'AZAZ',index,len)) then
- do_error(854);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('Cat(AZ)+',[],r);
- if not initok then
- do_error(855);
- if not(RegExprPos(r,'BCatAZAZDABCD',index,len)) or
- (index<>1) or (len<>7) then
- do_error(855);
- DestroyregExprEngine(r);
- { ()? tests }
- initok:=GenerateRegExprEngine('(AZ)?',[],r);
- if not initok then
- do_error(900);
- if not(RegExprPos(r,'C',index,len)) or
- (index<>0) or (len<>0) then
- do_error(900);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(AZ)?',[],r);
- if not initok then
- do_error(901);
- if not(RegExprPos(r,'AZ',index,len)) or
- (index<>0) or (len<>2) then
- do_error(901);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(AZ)?',[],r);
- if not initok then
- do_error(902);
- if not(RegExprPos(r,'AZAZ',index,len)) or
- (index<>0) or (len<>2) then
- do_error(902);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('Cat(AZ)?',[],r);
- if not(RegExprPos(r,'CatAZAZ',index,len)) or
- (index<>0) or (len<>5) then
- do_error(903);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('C(AZ)?',[],r);
- if (RegExprPos(r,'AZAZ',index,len)) then
- do_error(904);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('Cat(AZ)?',[],r);
- if not(RegExprPos(r,'BCatAZAZDABCD',index,len)) or
- (index<>1) or (len<>5) then
- do_error(905);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('Cat(AZ)?',[],r);
- if not(RegExprPos(r,'BCatDABCD',index,len)) or
- (index<>1) or (len<>3) then
- do_error(906);
- DestroyregExprEngine(r);
- { Character classes tests }
- GenerateRegExprEngine('[A-Z]',[],r);
- if not(RegExprPos(r,'234578923457823659GHJK38',index,len)) or
- (index<>18) or (len<>1) then
- do_error(1000);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('[A-Z]*',[],r);
- if not(RegExprPos(r,'2345ARTZU38',index,len)) or
- (index<>0) or (len<>0) then
- do_error(1002);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('[A-Z]+',[],r);
- if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
- (index<>18) or (len<>5) then
- do_error(1003);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('[A-Z][A-Z]*',[],r);
- if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
- (index<>18) or (len<>5) then
- do_error(1004);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('[A-Z][A-Z]?',[],r);
- if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
- (index<>18) or (len<>2) then
- do_error(1005);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('[^\d]+',[],r);
- if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
- (index<>18) or (len<>5) then
- do_error(1006);
- DestroyregExprEngine(r);
- { test chaining }
- GenerateRegExprEngine('[A-Z][A-Z]?[A-Z]',[],r);
- if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
- (index<>18) or (len<>3) then
- do_error(1007);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('[A-Z][A-Z]*[0-9]',[],r);
- if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
- (index<>18) or (len<>6) then
- do_error(1008);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('[A-Z]+[0-9]',[],r);
- if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
- (index<>18) or (len<>6) then
- do_error(1009);
- DestroyregExprEngine(r);
- { case insensitive: }
- GenerateRegExprEngine('[A-Z]',[ref_caseinsensitive],r);
- if not(RegExprPos(r,'234578923457823659a38',index,len)) or
- (index<>18) or (len<>1) then
- do_error(1100);
- DestroyregExprEngine(r);
- { case insensitive: }
- GenerateRegExprEngine('[a-z]',[ref_caseinsensitive],r);
- if not(RegExprPos(r,'234578923457823659A38',index,len)) or
- (index<>18) or (len<>1) then
- do_error(1101);
- DestroyregExprEngine(r);
- { with parenthsis }
- GenerateRegExprEngine('(foo)1234',[],r);
- if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
- (index<>7) or (len<>7) then
- do_error(1200);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('(((foo)))1234',[],r);
- if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
- (index<>7) or (len<>7) then
- do_error(1201);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('(foo)(1234)',[],r);
- 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);
- GenerateRegExprEngine('abc\(123\)$',[],r);
- if not (RegExprPos(r,'1234 abc(123)', index, len)) or
- (index <> 5) or (len <> 8) then
- do_error (1400);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('^\t$',[ref_singleline],r);
- if not (RegExprPos(r,#9, index, len)) or
- (index <> 0) or (len <> 1) then
- do_error (1401);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('^\n$',[ref_singleline],r);
- if not (RegExprPos(r,#10, index, len)) or
- (index <> 0) or (len <> 1) then
- do_error (1402);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('^\f$',[ref_singleline],r);
- if not (RegExprPos(r,#12, index, len)) or
- (index <> 0) or (len <> 1) then
- do_error (1403);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('^\r$',[ref_singleline],r);
- if not (RegExprPos(r,#13, index, len)) or
- (index <> 0) or (len <> 1) then
- do_error (1404);
- DestroyregExprEngine(r);
- GenerateRegExprEngine('^\a$',[ref_singleline],r);
- if not (RegExprPos(r,#7, index, len)) or
- (index <> 0) or (len <> 1) then
- do_error (1405);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^(([^:/?#]+):)',[],r);
- if not (RegExprPos(r,'http:',index, len)) or
- (index <> 0) or (len <> 5) then
- do_error (1406);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^(([^:/?#]+):)?(//([^/?#]*))?',[],r);
- if not initok then
- do_error(1407);
- if not (RegExprPos(r,'http://www.myurl.com',index, len)) or
- (index <> 0) or (len <> 20) then
- do_error (1407);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?',[],r);
- if not initok then
- do_error(1408);
- if not (RegExprPos(r,'http://www.myurl.com',index, len)) or
- (index <> 0) or (len <> 20) then
- do_error (1408);
- writeln('*** Escaping tests ***');
- s := '^Hello World \. [a-z] \D { } |() ?a*.*\\ 1 $';
- if RegExprEscapeStr(s)<>'\^Hello World \\\. \[a\-z\] \\D \{ \} \|\(\) \?a\*\.\*\\\\ 1 \$' then
- do_error(1450);
- writeln('*** More search tests ***');
- initok:=GenerateRegExprEngine('((nofoo)|(foo))1234',[],r);
- if not initok then
- do_error(1501);
- if not(RegExprPos(r,'1234 nofoo1234XXXX',index,len)) or
- (index<>7) or (len<>9) then
- do_error(1501);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('((nofoo)|(foo)|(anotherbar))1234',[],r);
- if not initok then
- do_error(1502);
- if not(RegExprPos(r,'anotherbar1234XXXX',index,len)) or
- (index<>0) or (len<>14) then
- do_error(1502);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('((nofoo)|(foo)|(anotherfoo))1234',[],r);
- if not initok then
- do_error(1503);
- if not(RegExprPos(r,'1234 anotherfoo1234XXXX',index,len)) or
- (index<>7) or (len<>14) then
- do_error(1503);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(nofoo1234)|(foo1234)',[],r);
- if not initok then
- do_error(1504);
- if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
- (index<>7) or (len<>7) then
- do_error(1504);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('((foo)|(nofoo))1234',[],r);
- if not initok then
- do_error(1505);
- if not(RegExprPos(r,'1234 nofoo1234XXXX',index,len)) or
- (index<>7) or (len<>9) then
- do_error(1505);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('\.localhost$',[],r);
- if not initok then
- do_error(1506);
- if not(RegExprPos(r,'exsample.localhost',index,len)) or
- (index<>8) or (len<>10) then
- do_error(1506);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('[^e]\.localhost$',[],r);
- if not initok then
- do_error(1507);
- if RegExprPos(r,'exsample.localhost',index,len) then
- do_error(1507);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('.*[^e]\.localhost$',[],r);
- if not initok then
- do_error(1508);
- if RegExprPos(r,'exsample.localhost',index,len) then
- do_error(1508);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('x.*[^e]\.localhost$',[],r);
- if not initok then
- do_error(1509);
- if RegExprPos(r,'exsample.localhost',index,len) then
- do_error(1509);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('(nofoo|foo)1234',[],r);
- if not initok then
- do_error(1500);
- if not(RegExprPos(r,'1234 nofoo1234XXXX',index,len)) or
- (index<>7) or (len<>9) then
- do_error(1500);
- DestroyregExprEngine(r);
- r:=GenerateRegExprEngine('(nofoo|foo|anotherfoo)1234',[]);
- if not(RegExprPos(r,'1234 nofoo1234XXXX',index,len)) or
- (index<>7) 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);
- { *************************************************************************
- replacement tests
- ************************************************************************* }
- writeln('*** Replacement tests ***');
- initok:=GenerateRegExprEngine('fa',[],r);
- if not initok then
- do_error(2000);
- if (RegExprReplaceAll(r,'asdfasdf','',Dest)<>1) or
- (Dest<>'asdsdf') then
- do_error(2001);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('fa',[],r);
- if not initok then
- do_error(2002);
- if (RegExprReplaceAll(r,'fa','',Dest)<>1) or
- (Dest<>'') then
- do_error(2003);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('fa',[],r);
- if not initok then
- do_error(2004);
- if RegExprReplaceAll(r,'','',Dest)<>0then
- do_error(2005);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('fa',[],r);
- if not initok then
- do_error(2006);
- if (RegExprReplaceAll(r,'asdfafaasd','',Dest)<>2) or
- (Dest<>'asdasd') then
- do_error(2007);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('fa',[],r);
- if not initok then
- do_error(2008);
- if (RegExprReplaceAll(r,'asdfafaasdasdfafaasd','',Dest)<>4) or
- (Dest<>'asdasdasdasd') then
- do_error(2009);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('fa',[],r);
- if not initok then
- do_error(2000);
- if (RegExprReplaceAll(r,'fasdfasdf','',Dest)<>2) or
- (Dest<>'sdsdf') then
- do_error(2010);
- DestroyregExprEngine(r);
- initok:=GenerateRegExprEngine('fa',[],r);
- if not initok then
- do_error(2011);
- if (RegExprReplaceAll(r,'fasdfafaasdasdfafaasd','',Dest)<>5) or
- (Dest<>'sdasdasdasd') then
- do_error(2012);
- DestroyregExprEngine(r);
- writeln('*** Testing unit regexpr was successful ***');
- end.
|