tassert5.pp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. {$C-}
  2. program tassert5;
  3. var
  4. global_boolean : boolean;
  5. counter : longint;
  6. const
  7. RESULT_BOOLEAN = false;
  8. RESULT_STRING = 'hello world';
  9. procedure fail;
  10. begin
  11. Writeln('Failure!');
  12. Halt(1);
  13. end;
  14. function get_boolean : boolean;
  15. begin
  16. get_boolean := RESULT_BOOLEAN;
  17. end;
  18. procedure test_assert_reference_global;
  19. begin
  20. global_boolean:=RESULT_BOOLEAN;
  21. assert(global_boolean,RESULT_STRING);
  22. end;
  23. procedure test_assert_reference_local;
  24. var
  25. b: boolean;
  26. begin
  27. b:=RESULT_BOOLEAN;
  28. assert(b,RESULT_STRING);
  29. end;
  30. procedure test_assert_register;
  31. begin
  32. assert(get_boolean,RESULT_STRING);
  33. end;
  34. procedure test_assert_flags;
  35. var
  36. i,j : integer;
  37. begin
  38. i:=0;
  39. j:=-12;
  40. assert(i < j,RESULT_STRING);
  41. end;
  42. procedure test_assert_constant;
  43. begin
  44. assert(RESULT_BOOLEAN,RESULT_STRING);
  45. end;
  46. { Handle the assertion failed ourselves, so we can test everything in
  47. one shot.
  48. }
  49. Procedure MyAssertRoutine(const msg,fname:ShortString;lineno:longint;erroraddr:{$ifdef VER1_0}longint{$else}pointer{$endif});
  50. begin
  51. Inc(counter);
  52. if msg <> RESULT_STRING then
  53. fail;
  54. end;
  55. begin
  56. counter:=0;
  57. AssertErrorProc := @MyAssertRoutine;
  58. Write('Assert test (FALSE) with assertions off...');
  59. test_assert_reference_global;
  60. test_assert_reference_local;
  61. test_assert_register;
  62. test_assert_flags;
  63. test_assert_constant;
  64. if counter <> 0 then
  65. fail
  66. else
  67. WriteLn('Success!');
  68. end.