ttrunc.pp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. { this tests the trunc routine }
  2. program ttrunc;
  3. {$ifdef VER1_0}
  4. {$define SKIP_CURRENCY_TEST}
  5. {$endif }
  6. {$ifndef MACOS}
  7. {$APPTYPE CONSOLE}
  8. {$else}
  9. {$APPTYPE TOOL}
  10. {$endif}
  11. const
  12. RESULT_ONE = 1234;
  13. VALUE_ONE = 1234.5678;
  14. RESULT_CONST_ONE = trunc(VALUE_ONE);
  15. RESULT_TWO = -1234;
  16. VALUE_TWO = -1234.5678;
  17. RESULT_CONST_TWO = trunc(VALUE_TWO);
  18. procedure fail;
  19. begin
  20. WriteLn('Failed!');
  21. halt(1);
  22. end;
  23. procedure test_trunc_real;
  24. var
  25. r: real;
  26. _success : boolean;
  27. l: longint;
  28. Begin
  29. Write('Trunc() real testing...');
  30. _success := true;
  31. r:=VALUE_ONE;
  32. if Trunc(r)<>RESULT_ONE then
  33. _success:=false;
  34. if Trunc(VALUE_ONE)<>RESULT_ONE then
  35. _success:=false;
  36. r:=VALUE_ONE;
  37. if Trunc(r)<>RESULT_CONST_ONE then
  38. _success := false;
  39. r:=VALUE_ONE;
  40. l:=Trunc(r);
  41. if l<>RESULT_ONE then
  42. _success:=false;
  43. l:=Trunc(VALUE_ONE);
  44. if l<>RESULT_ONE then
  45. _success:=false;
  46. r:=VALUE_TWO;
  47. if Trunc(r)<>RESULT_TWO then
  48. _success:=false;
  49. if Trunc(VALUE_TWO)<>RESULT_TWO then
  50. _success:=false;
  51. r:=VALUE_TWO;
  52. if Trunc(r)<>RESULT_CONST_TWO then
  53. _success := false;
  54. r:=VALUE_TWO;
  55. l:=Trunc(r);
  56. if l<>RESULT_TWO then
  57. _success:=false;
  58. l:=Trunc(VALUE_TWO);
  59. if l<>RESULT_TWO then
  60. _success:=false;
  61. if not _success then
  62. fail;
  63. WriteLn('Success!');
  64. end;
  65. procedure test_trunc_single;
  66. var
  67. r: single;
  68. _success : boolean;
  69. l: longint;
  70. Begin
  71. Write('Trunc() single testing...');
  72. _success := true;
  73. r:=VALUE_ONE;
  74. if Trunc(r)<>RESULT_ONE then
  75. _success:=false;
  76. if Trunc(VALUE_ONE)<>RESULT_ONE then
  77. _success:=false;
  78. r:=VALUE_ONE;
  79. if Trunc(r)<>RESULT_CONST_ONE then
  80. _success := false;
  81. r:=VALUE_ONE;
  82. l:=Trunc(r);
  83. if l<>RESULT_ONE then
  84. _success:=false;
  85. l:=Trunc(VALUE_ONE);
  86. if l<>RESULT_ONE then
  87. _success:=false;
  88. r:=VALUE_TWO;
  89. if Trunc(r)<>RESULT_TWO then
  90. _success:=false;
  91. if Trunc(VALUE_TWO)<>RESULT_TWO then
  92. _success:=false;
  93. r:=VALUE_TWO;
  94. if Trunc(r)<>RESULT_CONST_TWO then
  95. _success := false;
  96. r:=VALUE_TWO;
  97. l:=Trunc(r);
  98. if l<>RESULT_TWO then
  99. _success:=false;
  100. l:=Trunc(VALUE_TWO);
  101. if l<>RESULT_TWO then
  102. _success:=false;
  103. if not _success then
  104. fail;
  105. WriteLn('Success!');
  106. end;
  107. procedure test_trunc_double;
  108. var
  109. r: double;
  110. _success : boolean;
  111. l: longint;
  112. Begin
  113. Write('Trunc() double testing...');
  114. _success := true;
  115. r:=VALUE_ONE;
  116. if Trunc(r)<>RESULT_ONE then
  117. _success:=false;
  118. if Trunc(VALUE_ONE)<>RESULT_ONE then
  119. _success:=false;
  120. r:=VALUE_ONE;
  121. if Trunc(r)<>RESULT_CONST_ONE then
  122. _success := false;
  123. r:=VALUE_ONE;
  124. l:=Trunc(r);
  125. if l<>RESULT_ONE then
  126. _success:=false;
  127. l:=Trunc(VALUE_ONE);
  128. if l<>RESULT_ONE then
  129. _success:=false;
  130. r:=VALUE_TWO;
  131. if Trunc(r)<>RESULT_TWO then
  132. _success:=false;
  133. if Trunc(VALUE_TWO)<>RESULT_TWO then
  134. _success:=false;
  135. r:=VALUE_TWO;
  136. if Trunc(r)<>RESULT_CONST_TWO then
  137. _success := false;
  138. r:=VALUE_TWO;
  139. l:=Trunc(r);
  140. if l<>RESULT_TWO then
  141. _success:=false;
  142. l:=Trunc(VALUE_TWO);
  143. if l<>RESULT_TWO then
  144. _success:=false;
  145. if not _success then
  146. fail;
  147. WriteLn('Success!');
  148. end;
  149. {$ifndef SKIP_CURRENCY_TEST}
  150. procedure test_trunc_currency;
  151. var
  152. r: currency;
  153. _success : boolean;
  154. l: longint;
  155. Begin
  156. Write('Trunc() currency testing...');
  157. _success := true;
  158. r:=VALUE_ONE;
  159. if Trunc(r)<>RESULT_ONE then
  160. _success:=false;
  161. if Trunc(VALUE_ONE)<>RESULT_ONE then
  162. _success:=false;
  163. r:=VALUE_ONE;
  164. if Trunc(r)<>RESULT_CONST_ONE then
  165. _success := false;
  166. r:=VALUE_ONE;
  167. l:=Trunc(r);
  168. if l<>RESULT_ONE then
  169. _success:=false;
  170. l:=Trunc(VALUE_ONE);
  171. if l<>RESULT_ONE then
  172. _success:=false;
  173. r:=VALUE_TWO;
  174. if Trunc(r)<>RESULT_TWO then
  175. _success:=false;
  176. if Trunc(VALUE_TWO)<>RESULT_TWO then
  177. _success:=false;
  178. r:=VALUE_TWO;
  179. if Trunc(r)<>RESULT_CONST_TWO then
  180. _success := false;
  181. r:=VALUE_TWO;
  182. l:=Trunc(r);
  183. if l<>RESULT_TWO then
  184. _success:=false;
  185. l:=Trunc(VALUE_TWO);
  186. if l<>RESULT_TWO then
  187. _success:=false;
  188. if not _success then
  189. fail;
  190. WriteLn('Success!');
  191. end;
  192. {$endif SKIP_CURRENCY_TEST}
  193. Begin
  194. test_trunc_real;
  195. test_trunc_single;
  196. test_trunc_double;
  197. {$ifdef SKIP_CURRENCY_TEST}
  198. Writeln('Skipping currency test because its not supported by theis compiler');
  199. {$else SKIP_CURRENCY_TEST}
  200. test_trunc_currency;
  201. {$endif SKIP_CURRENCY_TEST}
  202. end.