Test suite results for test file test/units/system/tjmp.pp

Test run data :

Run ID:
Operating system: linux
Processor: x86_64
Version: 3.2.3
Fails/OK/Total: 27/8127/8154
Version: 3.2.3
Full version: 3.2.3-1373-gae0fe8a6a0
Comment: -gl -Fl/usr/lib -Fl/usr/lib/gcc/x86_64-linux-gnu/10 -Fl/usr/lib/x86_64-linux-gnu -O2 -dFPC_USE_LIBC -Fd
Machine: gcc13
Category: 1
SVN revisions: fdf93c5b29:c17a0e20f5:ae0fe8a6a0:d1c29e6cb9
Submitter: pierre
Date: 2024/04/19 10:31:00 <> 2024/04/09
Previous run: 934292
Next run: 935624

Hide skipped tests

Hide successful tests

Test file "test/units/system/tjmp.pp" information:

t_id 232
t_adddate 2003/10/03
t_result 0
t_knownrunerror 0

Detailed test run results:

tr_idruntr_oktr_skiptr_result
443563497934949TrueFalseSuccessfully run

Record count: 1

No log of 934949.

Source:

{ Tests the system unit routines for longjmp and setjmp }
{ By Carl Eric Codere - Copyright (c) 2002              }
program tjmp;

var
 global_envbuf: jmp_buf;


 type
   tmyobject = object
     envbuf : jmp_buf;
     j : integer;
     jmpresult : integer;
     constructor init;
     destructor done;
     procedure testlongjmp;virtual;
     procedure testsetjmp;virtual;
   end;

  pderivedobject = ^tderivedobject;
  tderivedobject = object(tmyobject)
     procedure testlongjmp; virtual;
     procedure testsetjmp; virtual;
  end;





constructor tmyobject.init;
 begin
 end;



destructor tmyobject.done;
 begin
 end;


procedure tmyobject.testlongjmp;
 begin
 end;

procedure tmyobject.testsetjmp;
 begin
 end;

procedure tderivedobject.testlongjmp;
 begin
    longjmp(envbuf, 255);
 end;

procedure tderivedobject.testsetjmp;
  var
    i : integer;
 begin
   j:=0;
   jmpresult:=setjmp(envbuf);
   case jmpresult of
   0 :
     begin
       for i:=0 to 255 do
        begin
          j:=j + 13;
          if j = 13 then
            self.testlongjmp;
        end;
     end;
   255 : WriteLn('Sucess!');
   else
     begin
       WriteLn('Failure!');
       halt(1);
     end
   end;
 end;

procedure testlongjmp;
 begin
    longjmp(global_envbuf, 255);
 end;


procedure testsetjmp;
  var
     i, j : integer;
     jmpresult : integer;
 begin
   j:=0;
   jmpresult:=setjmp(global_envbuf);
   case jmpresult of
   0 :
     begin
       for i:=0 to 255 do
        begin
          j:=j + 13;
          if j = 13 then
            testlongjmp;
        end;
     end;
   255 : WriteLn('Sucess!');
   else
     begin
       WriteLn('Failure!');
       halt(1);
     end
   end;
 end;

var
 pobj : pderivedobject;
begin
  Write('Testing setjmp/longjmp simple case...');
  testsetjmp;
  Write('Testing setjmp/longjmp in virtual method...');
  pobj:=new(pderivedobject, init);
  pobj^.testsetjmp;
  dispose(pobj, done);
end.

{
  $Log: tjmp.pp,v $
  Revision 1.2  2003/05/10 09:55:00  peter
    * fix loop variable

  Revision 1.1  2002/09/15 09:53:05  carl
    * initial revision of longjmp/setjmp testing

}

Link to SVN view of test/units/system/tjmp.pp source.