testreg1

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: testreg1.pp,v $
  Revision 1.4  2005/02/14 17:13:19  peter
    * truncate log
 
}
 

¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.

Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C [c]Código en C[/c]
  • Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].

De esta manera el código coloreas el código.

Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:

Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.

¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)