tminmax.pp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. {$mode objfpc}
  2. procedure TestSingle;
  3. function Min1(a, b: Single): Single; inline;
  4. begin
  5. if a < b then
  6. Result := a
  7. else
  8. Result := b;
  9. end;
  10. function Max1(a, b: Single): Single; inline;
  11. begin
  12. if a > b then
  13. Result := a
  14. else
  15. Result := b;
  16. end;
  17. function Min2(a, b: Single): Single; inline;
  18. begin
  19. if a <= b then
  20. Result := a
  21. else
  22. Result := b;
  23. end;
  24. function Max2(a, b: Single): Single; inline;
  25. begin
  26. if a >= b then
  27. Result := a
  28. else
  29. Result := b;
  30. end;
  31. var
  32. v1,v3 : Single;
  33. begin
  34. v1:=1;
  35. v3:=3;
  36. if Min1(1,3)<>1 then
  37. halt(1);
  38. if Max1(1,3)<>3 then
  39. halt(2);
  40. if Min2(1,3)<>1 then
  41. halt(3);
  42. if Max2(1,3)<>3 then
  43. halt(4);
  44. if Min1(1,v3)<>1 then
  45. halt(11);
  46. if Max1(1,v3)<>3 then
  47. halt(12);
  48. if Min2(1,v3)<>1 then
  49. halt(13);
  50. if Max2(1,v3)<>3 then
  51. halt(14);
  52. if Min1(1,v3)<>1 then
  53. halt(21);
  54. if Max1(1,v3)<>v3 then
  55. halt(22);
  56. if Min2(1,v3)<>1 then
  57. halt(23);
  58. if Max2(1,v3)<>v3 then
  59. halt(24);
  60. if Min1(v1,v3)<>v1 then
  61. halt(31);
  62. if Max1(v1,v3)<>v3 then
  63. halt(32);
  64. if Min2(v1,v3)<>v1 then
  65. halt(33);
  66. if Max2(v1,v3)<>v3 then
  67. halt(34);
  68. end;
  69. procedure TestDouble;
  70. function Min1(a, b: Double): Double; inline;
  71. begin
  72. if a < b then
  73. Result := a
  74. else
  75. Result := b;
  76. end;
  77. function Max1(a, b: Double): Double; inline;
  78. begin
  79. if a > b then
  80. Result := a
  81. else
  82. Result := b;
  83. end;
  84. function Min2(a, b: Double): Double; inline;
  85. begin
  86. if a <= b then
  87. Result := a
  88. else
  89. Result := b;
  90. end;
  91. function Max2(a, b: Double): Double; inline;
  92. begin
  93. if a >= b then
  94. Result := a
  95. else
  96. Result := b;
  97. end;
  98. var
  99. v1,v3 : Double;
  100. begin
  101. v1:=1;
  102. v3:=3;
  103. if Min1(1,3)<>1 then
  104. halt(1);
  105. if Max1(1,3)<>3 then
  106. halt(2);
  107. if Min2(1,3)<>1 then
  108. halt(3);
  109. if Max2(1,3)<>3 then
  110. halt(4);
  111. if Min1(1,v3)<>1 then
  112. halt(111);
  113. if Max1(1,v3)<>3 then
  114. halt(112);
  115. if Min2(1,v3)<>1 then
  116. halt(113);
  117. if Max2(1,v3)<>3 then
  118. halt(114);
  119. if Min1(1,v3)<>1 then
  120. halt(121);
  121. if Max1(1,v3)<>v3 then
  122. halt(122);
  123. if Min2(1,v3)<>1 then
  124. halt(123);
  125. if Max2(1,v3)<>v3 then
  126. halt(124);
  127. if Min1(v1,v3)<>v1 then
  128. halt(131);
  129. if Max1(v1,v3)<>v3 then
  130. halt(132);
  131. if Min2(v1,v3)<>v1 then
  132. halt(133);
  133. if Max2(v1,v3)<>v3 then
  134. halt(134);
  135. end;
  136. procedure TestDWord;
  137. function Min1(a, b: DWord): DWord; inline;
  138. begin
  139. if a < b then
  140. Result := a
  141. else
  142. Result := b;
  143. end;
  144. function Max1(a, b: DWord): DWord; inline;
  145. begin
  146. if a > b then
  147. Result := a
  148. else
  149. Result := b;
  150. end;
  151. function Min2(a, b: DWord): DWord; inline;
  152. begin
  153. if a <= b then
  154. Result := a
  155. else
  156. Result := b;
  157. end;
  158. function Max2(a, b: DWord): DWord; inline;
  159. begin
  160. if a >= b then
  161. Result := a
  162. else
  163. Result := b;
  164. end;
  165. var
  166. v1,v3 : DWord;
  167. begin
  168. v1:=1;
  169. v3:=3;
  170. if Min1(1,3)<>1 then
  171. halt(1);
  172. if Max1(1,3)<>3 then
  173. halt(2);
  174. if Min2(1,3)<>1 then
  175. halt(3);
  176. if Max2(1,3)<>3 then
  177. halt(4);
  178. if Min1(1,v3)<>1 then
  179. halt(211);
  180. if Max1(1,v3)<>3 then
  181. halt(212);
  182. if Min2(1,v3)<>1 then
  183. halt(213);
  184. if Max2(1,v3)<>3 then
  185. halt(214);
  186. if Min1(1,v3)<>1 then
  187. halt(221);
  188. if Max1(1,v3)<>v3 then
  189. halt(222);
  190. if Min2(1,v3)<>1 then
  191. halt(223);
  192. if Max2(1,v3)<>v3 then
  193. halt(224);
  194. if Min1(v1,v3)<>v1 then
  195. halt(231);
  196. if Max1(v1,v3)<>v3 then
  197. halt(232);
  198. if Min2(v1,v3)<>v1 then
  199. halt(233);
  200. if Max2(v1,v3)<>v3 then
  201. halt(234);
  202. end;
  203. procedure TestLongint;
  204. function Min1(a, b: Longint): Longint; inline;
  205. begin
  206. if a < b then
  207. Result := a
  208. else
  209. Result := b;
  210. end;
  211. function Max1(a, b: Longint): Longint; inline;
  212. begin
  213. if a > b then
  214. Result := a
  215. else
  216. Result := b;
  217. end;
  218. function Min2(a, b: Longint): Longint; inline;
  219. begin
  220. if a <= b then
  221. Result := a
  222. else
  223. Result := b;
  224. end;
  225. function Max2(a, b: Longint): Longint; inline;
  226. begin
  227. if a >= b then
  228. Result := a
  229. else
  230. Result := b;
  231. end;
  232. var
  233. v1,v3 : Longint;
  234. begin
  235. v1:=1;
  236. v3:=3;
  237. if Min1(1,3)<>1 then
  238. halt(1);
  239. if Max1(1,3)<>3 then
  240. halt(2);
  241. if Min2(1,3)<>1 then
  242. halt(3);
  243. if Max2(1,3)<>3 then
  244. halt(4);
  245. if Min1(1,v3)<>1 then
  246. halt(311);
  247. if Max1(1,v3)<>3 then
  248. halt(312);
  249. if Min2(1,v3)<>1 then
  250. halt(313);
  251. if Max2(1,v3)<>3 then
  252. halt(314);
  253. if Min1(1,v3)<>1 then
  254. halt(321);
  255. if Max1(1,v3)<>v3 then
  256. halt(322);
  257. if Min2(1,v3)<>1 then
  258. halt(323);
  259. if Max2(1,v3)<>v3 then
  260. halt(324);
  261. v1:=1;
  262. if Min1(v1,v3)<>v1 then
  263. halt(331);
  264. if Max1(v1,v3)<>v3 then
  265. halt(332);
  266. if Min2(v1,v3)<>v1 then
  267. halt(333);
  268. if Max2(v1,v3)<>v3 then
  269. halt(334);
  270. end;
  271. begin
  272. TestSingle;
  273. TestDWord;
  274. TestLongint;
  275. end.