ttrunc.pp 4.3 KB

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