testreg1.pp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. program testreg1;
  2. uses
  3. regexpr;
  4. var
  5. r : tregexprengine;
  6. index,len : longint;
  7. procedure do_error(i : longint);
  8. begin
  9. writeln('error near ',i,' index: ',index,' len: ',len);
  10. halt(1);
  11. end;
  12. begin
  13. writeln('*** Testing unit regexpr ***');
  14. { basic tests }
  15. r:=GenerateRegExprEngine('[A-Z]',[]);
  16. if not(RegExprPos(r,'234578923457823659GHJK38',index,len)) or
  17. (index<>18) or (len<>1) then
  18. do_error(1000);
  19. DestroyregExprEngine(r);
  20. r:=GenerateRegExprEngine('[A-Z]*',[]);
  21. if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
  22. { is this result correct ??? }
  23. (index<>0) or (len<>0) then
  24. do_error(1002);
  25. DestroyregExprEngine(r);
  26. r:=GenerateRegExprEngine('[A-Z]+',[]);
  27. if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
  28. (index<>18) or (len<>5) then
  29. do_error(1003);
  30. DestroyregExprEngine(r);
  31. r:=GenerateRegExprEngine('[A-Z][A-Z]*',[]);
  32. if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
  33. (index<>18) or (len<>5) then
  34. do_error(1004);
  35. DestroyregExprEngine(r);
  36. r:=GenerateRegExprEngine('[A-Z][A-Z]?',[]);
  37. if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
  38. (index<>18) or (len<>2) then
  39. do_error(1005);
  40. DestroyregExprEngine(r);
  41. r:=GenerateRegExprEngine('[^\d]+',[]);
  42. if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
  43. (index<>18) or (len<>5) then
  44. do_error(1006);
  45. DestroyregExprEngine(r);
  46. { test chaining }
  47. r:=GenerateRegExprEngine('[A-Z][A-Z]?[A-Z]',[]);
  48. if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
  49. (index<>18) or (len<>3) then
  50. do_error(1007);
  51. DestroyregExprEngine(r);
  52. r:=GenerateRegExprEngine('[A-Z][A-Z]*[0-9]',[]);
  53. if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
  54. (index<>18) or (len<>6) then
  55. do_error(1008);
  56. DestroyregExprEngine(r);
  57. r:=GenerateRegExprEngine('[A-Z]+[0-9]',[]);
  58. if not(RegExprPos(r,'234578923457823659ARTZU38',index,len)) or
  59. (index<>18) or (len<>6) then
  60. do_error(1009);
  61. DestroyregExprEngine(r);
  62. { case insensitive: }
  63. r:=GenerateRegExprEngine('[A-Z]',[ref_caseinsensitive]);
  64. if not(RegExprPos(r,'234578923457823659a38',index,len)) or
  65. (index<>18) or (len<>1) then
  66. do_error(1100);
  67. DestroyregExprEngine(r);
  68. { case insensitive: }
  69. r:=GenerateRegExprEngine('[a-z]',[ref_caseinsensitive]);
  70. if not(RegExprPos(r,'234578923457823659A38',index,len)) or
  71. (index<>18) or (len<>1) then
  72. do_error(1101);
  73. DestroyregExprEngine(r);
  74. { with parenthsis }
  75. r:=GenerateRegExprEngine('(foo)1234',[]);
  76. if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
  77. (index<>7) or (len<>7) then
  78. do_error(1200);
  79. DestroyregExprEngine(r);
  80. r:=GenerateRegExprEngine('(((foo)))1234',[]);
  81. if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
  82. (index<>7) or (len<>7) then
  83. do_error(1201);
  84. DestroyregExprEngine(r);
  85. r:=GenerateRegExprEngine('(foo)(1234)',[]);
  86. if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
  87. (index<>7) or (len<>7) then
  88. do_error(1202);
  89. DestroyregExprEngine(r);
  90. { test real backtracking }
  91. r:=GenerateRegExprEngine('nofoo|foo',[]);
  92. if not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
  93. (index<>7) or (len<>3) then
  94. do_error(1300);
  95. DestroyregExprEngine(r);
  96. {
  97. r:=GenerateRegExprEngine('(nofoo|foo)1234',[]);
  98. if not(RegExprPos(r,'1234 nofoo1234XXXX',index,len)) or
  99. (index<>8) or (len<>9) then
  100. do_error(1008);
  101. DestroyregExprEngine(r);
  102. r:=GenerateRegExprEngine('(nofoo|foo|anotherfoo)1234',[]);
  103. if not(RegExprPos(r,'1234 nofoo1234XXXX',index,len)) or
  104. (index<>8) or (len<>9) then
  105. do_error(1009);
  106. DestroyregExprEngine(r);
  107. r:=GenerateRegExprEngine('nofoo1234|foo1234',[]);
  108. if (r.data=nil) or not(RegExprPos(r,'1234 foo1234XXXX',index,len)) or
  109. (index<>7) or (len<>7) then
  110. do_error(1010);
  111. DestroyregExprEngine(r);
  112. }
  113. writeln('*** Testing unit regexpr was successful ***');
  114. end. $Log$
  115. end. Revision 1.2 2000-07-13 11:33:31 michael
  116. end. + removed logs
  117. end.
  118. }