tincdec.pp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. {$mode objfpc}
  2. {$q+}
  3. {$r+}
  4. uses
  5. sysutils;
  6. type
  7. tenum = (ea,eb,ec,ed,ef,eg,eh);
  8. procedure testbool;
  9. var
  10. b: boolean;
  11. caught: boolean;
  12. begin
  13. caught := false;
  14. b := false;
  15. inc(b);
  16. try
  17. inc(b);
  18. except
  19. on ERangeError do
  20. caught := true;
  21. end;
  22. if not caught or
  23. not b then
  24. halt(1);
  25. caught := false;
  26. dec(b);
  27. try
  28. dec(b);
  29. except
  30. on ERangeError do
  31. caught := true;
  32. end;
  33. if not caught or
  34. b then
  35. halt(2);
  36. end;
  37. procedure testchar;
  38. var
  39. b: char;
  40. caught: boolean;
  41. begin
  42. caught := false;
  43. b := #254;
  44. inc(b);
  45. try
  46. inc(b);
  47. except
  48. on ERangeError do
  49. caught := true;
  50. end;
  51. if not caught or
  52. (b <> #255) then
  53. halt(3);
  54. caught := false;
  55. b := #1;
  56. dec(b);
  57. try
  58. dec(b);
  59. except
  60. on ERangeError do
  61. caught := true;
  62. end;
  63. if not caught or
  64. (b <> #0) then
  65. halt(4);
  66. end;
  67. procedure testenum;
  68. var
  69. b: tenum;
  70. caught: boolean;
  71. begin
  72. caught := false;
  73. b := eg;
  74. inc(b);
  75. try
  76. inc(b);
  77. except
  78. on ERangeError do
  79. caught := true;
  80. end;
  81. if not caught or
  82. (b <> eh) then
  83. halt(5);
  84. caught := false;
  85. b := eb;
  86. dec(b);
  87. try
  88. dec(b);
  89. except
  90. on ERangeError do
  91. caught := true;
  92. end;
  93. if not caught or
  94. (b <> ea) then
  95. halt(6);
  96. end;
  97. begin
  98. testbool;
  99. testchar;
  100. testenum;
  101. end.