Test suite results for test file test/texception4.pp

Test run data :

Run ID:
Operating system: linux
Processor: sparc
Version: 3.3.1
Fails/OK/Total: 70/9150/9220
Version: 3.3.1
Full version: 3.3.1-15610-gfc6d6c123d
Comment: -XR/home/muller/sys-root/sparc-linux -Xd -Xr/home/muller/sys-root/sparc-linux
Machine: cfarm421
Category: 1
SVN revisions: fc6d6c123d:a5cb0b6179:0d375c638c:61397d40ae
Submitter: muller
Date: 2024/04/26 13:12:00 <> 2024/04/25
Previous run: 939063
Next run: 940460

Hide skipped tests

Hide successful tests

Test file "test/texception4.pp" information:

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

Detailed test run results:

tr_idruntr_oktr_skiptr_result
473478131939775FalseFalseFailed to run

Record count: 1

Log of 939775:

First integer exception called Division by zero
Second integer exception called Division by zero
First real exception called Floating point division by zero
Second real exception called Floating point division by zero
exception called Division by zero
Could not generate 10000 consecutive exceptions
Only 1 exceptions were generated
exception called Invalid floating point operation
exception called Floating point division by zero
exception called Invalid floating point operation

Source:

{$mode objfpc}

uses
  sysutils;

const
  Program_has_errors : boolean = false;
  exception_called   : boolean = false;
  TestNumber : longint = 10000;

procedure test_exception(const s : string);
  begin
    if not(exception_called) then
      begin
        Writeln('Exception not called : ',s);
        Program_has_errors := true;
      end;
  end;

var
   i,j : longint;
   e : extended;
   exception_count,level : longint;
begin
   j:=0;
   i:=100;
   try
   exception_called:=false;
   j := i div j;
   except
     on e : exception do
       begin
         Writeln('First integer exception called ',e.message);
         exception_called:=true;
       end;
   end;
   test_exception('First division by zero for integers');
   try
   exception_called:=false;
   j := i div j;
   except
     on e : exception do
       begin
         Writeln('Second integer exception called ',e.message);
         exception_called:=true;
       end;
   end;
   test_exception('Second division by zero for integers');
   try
   exception_called:=false;
   e:=i/j;
   except
     on e : exception do
       begin
         Writeln('First real exception called ',e.message);
         exception_called:=true;
       end;
   end;
   test_exception('First division by zero for reals');
   try
   exception_called:=false;
   e:=i/j;
   except
     on e : exception do
       begin
         Writeln('Second real exception called ',e.message);
         exception_called:=true;
       end;
   end;
   test_exception('Second division by zero for reals');
   try
   exception_called:=false;
   j := i div j;
   except
     on e : exception do
       begin
         Writeln('exception called ',e.message);
         exception_called:=true;
       end;
   end;
   test_exception('third division by zero for integers');
   exception_count:=0;
   level:=0;
   for j:=1 to TestNumber do
     begin
       try
         i:=0;
         inc(level);
         e:=j/i;
       except
         on e : exception do
           begin
             inc(exception_count);
             if level>1 then
               Writeln('exception overrun');
             dec(level);
           end;
       end;

     end;
   if exception_count<>TestNumber then
     begin
       program_has_errors:=true;
       Writeln('Could not generate ',TestNumber,' consecutive exceptions');
       Writeln('Only ',exception_count,' exceptions were generated');
     end
   else
     begin
       Writeln(TestNumber,' consecutive exceptions generated successfully');
     end;
   try
   exception_called:=false;
   i := -1;
   e := ln(i);
   except
     on e : exception do
       begin
         Writeln('exception called ',e.message);
         exception_called:=true;
       end;
   end;
   test_exception('ln(-1)');
   if program_has_errors then
     Halt(1);
end.

Link to SVN view of test/texception4.pp source.