mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-02 18:20:37 +01:00
83 lines
1.3 KiB
ObjectPascal
83 lines
1.3 KiB
ObjectPascal
{$C+}
|
|
program tassert2;
|
|
|
|
var
|
|
global_boolean : boolean;
|
|
counter : longint;
|
|
|
|
const
|
|
RESULT_BOOLEAN = false;
|
|
|
|
|
|
|
|
procedure fail;
|
|
begin
|
|
Writeln('Failure!');
|
|
Halt(1);
|
|
end;
|
|
|
|
function get_boolean : boolean;
|
|
begin
|
|
get_boolean := RESULT_BOOLEAN;
|
|
end;
|
|
|
|
procedure test_assert_reference_global;
|
|
begin
|
|
global_boolean:=RESULT_BOOLEAN;
|
|
assert(global_boolean);
|
|
end;
|
|
|
|
procedure test_assert_reference_local;
|
|
var
|
|
b: boolean;
|
|
begin
|
|
b:=RESULT_BOOLEAN;
|
|
assert(b);
|
|
end;
|
|
|
|
|
|
procedure test_assert_register;
|
|
begin
|
|
assert(get_boolean);
|
|
end;
|
|
|
|
procedure test_assert_flags;
|
|
var
|
|
i,j : integer;
|
|
begin
|
|
i:=0;
|
|
j:=-12;
|
|
assert(i < j);
|
|
end;
|
|
|
|
procedure test_assert_constant;
|
|
begin
|
|
assert(RESULT_BOOLEAN);
|
|
end;
|
|
|
|
{ Handle the assertion failed ourselves, so we can test everything in
|
|
one shot.
|
|
}
|
|
Procedure MyAssertRoutine(const msg,fname:ShortString;lineno:longint;erroraddr:{$ifdef VER1_0}longint{$else}pointer{$endif});
|
|
begin
|
|
Inc(counter);
|
|
end;
|
|
|
|
|
|
|
|
|
|
begin
|
|
counter:=0;
|
|
AssertErrorProc := @MyAssertRoutine;
|
|
Write('Assert test (FALSE)...');
|
|
test_assert_reference_global;
|
|
test_assert_reference_local;
|
|
test_assert_register;
|
|
test_assert_flags;
|
|
test_assert_constant;
|
|
if counter <> 5 then
|
|
fail
|
|
else
|
|
WriteLn('Success!');
|
|
end.
|