tstr.pp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. procedure test_shortstr;
  2. type
  3. tlocalstring = shortstring;
  4. var
  5. l: longint;
  6. c: cardinal;
  7. f: real;
  8. i: int64;
  9. q: qword;
  10. s: tlocalstring;
  11. len: byte;
  12. frac: word;
  13. procedure check(const ss: tlocalstring);
  14. begin
  15. if s <> ss then
  16. begin
  17. writeln('error!');
  18. halt(1);
  19. end;
  20. end;
  21. begin
  22. writeln('testing str(<value>,shortstring)...');
  23. l := -1;
  24. str(l,s);
  25. check('-1');
  26. str(l:0,s);
  27. check('-1');
  28. str(l:1,s);
  29. check('-1');
  30. str(l:2,s);
  31. check('-1');
  32. str(l:3,s);
  33. check(' -1');
  34. len := 4;
  35. str(l:len,s);
  36. check(' -1');
  37. c := 10;
  38. str(c,s);
  39. check('10');
  40. str(c:0,s);
  41. check('10');
  42. str(c:1,s);
  43. check('10');
  44. str(c:2,s);
  45. check('10');
  46. str(c:3,s);
  47. check(' 10');
  48. { for more in-depth tests of str_real, see ../tstreal[1,2].pp }
  49. f := -1.12345;
  50. str(f,s);
  51. check('-1.123450000000000E+000');
  52. str(f:0,s);
  53. check('-1.1E+000');
  54. str(f:1,s);
  55. check('-1.1E+000');
  56. str(f:2,s);
  57. check('-1.1E+000');
  58. str(f:3,s);
  59. check('-1.1E+000');
  60. str(f:4,s);
  61. check('-1.1E+000');
  62. str(f:0:0,s);
  63. check('-1');
  64. str(f:0:1,s);
  65. check('-1.1');
  66. str(f:0:2,s);
  67. check('-1.12');
  68. str(f:1:0,s);
  69. check('-1');
  70. str(f:1:1,s);
  71. check('-1.1');
  72. str(f:5:0,s);
  73. check(' -1');
  74. str(f:5:1,s);
  75. check(' -1.1');
  76. str(f:5:2,s);
  77. check('-1.12');
  78. len := 6;
  79. frac := 2;
  80. str(f:len:frac,s);
  81. check(' -1.12');
  82. i := -1;
  83. str(i,s);
  84. check('-1');
  85. str(i:0,s);
  86. check('-1');
  87. str(i:1,s);
  88. check('-1');
  89. str(i:2,s);
  90. check('-1');
  91. str(i:3,s);
  92. check(' -1');
  93. q := 10;
  94. str(q,s);
  95. check('10');
  96. str(q:0,s);
  97. check('10');
  98. str(q:1,s);
  99. check('10');
  100. str(q:2,s);
  101. check('10');
  102. str(q:3,s);
  103. check(' 10');
  104. end;
  105. procedure test_ansistr;
  106. type
  107. tlocalstring = ansistring;
  108. var
  109. l: longint;
  110. c: cardinal;
  111. f: real;
  112. i: int64;
  113. q: qword;
  114. s: tlocalstring;
  115. len: shortint;
  116. frac: smallint;
  117. procedure check(const ss: tlocalstring);
  118. begin
  119. if s <> ss then
  120. begin
  121. writeln('error!');
  122. halt(1);
  123. end;
  124. end;
  125. begin
  126. writeln('testing str(<value>,ansistring)...');
  127. l := -1;
  128. str(l,s);
  129. check('-1');
  130. str(l:0,s);
  131. check('-1');
  132. str(l:1,s);
  133. check('-1');
  134. str(l:2,s);
  135. check('-1');
  136. str(l:3,s);
  137. check(' -1');
  138. len := 4;
  139. str(l:len,s);
  140. check(' -1');
  141. c := 10;
  142. str(c,s);
  143. check('10');
  144. str(c:0,s);
  145. check('10');
  146. str(c:1,s);
  147. check('10');
  148. str(c:2,s);
  149. check('10');
  150. str(c:3,s);
  151. check(' 10');
  152. { for more in-depth tests of str_real, see ../tstreal[1,2].pp }
  153. f := -1.12345;
  154. str(f,s);
  155. check('-1.123450000000000E+000');
  156. str(f:0,s);
  157. check('-1.1E+000');
  158. str(f:1,s);
  159. check('-1.1E+000');
  160. str(f:2,s);
  161. check('-1.1E+000');
  162. str(f:3,s);
  163. check('-1.1E+000');
  164. str(f:4,s);
  165. check('-1.1E+000');
  166. str(f:0:0,s);
  167. check('-1');
  168. str(f:0:1,s);
  169. check('-1.1');
  170. str(f:0:2,s);
  171. check('-1.12');
  172. str(f:1:0,s);
  173. check('-1');
  174. str(f:1:1,s);
  175. check('-1.1');
  176. str(f:5:0,s);
  177. check(' -1');
  178. str(f:5:1,s);
  179. check(' -1.1');
  180. str(f:5:2,s);
  181. check('-1.12');
  182. len := 6;
  183. frac := 2;
  184. str(f:len:frac,s);
  185. check(' -1.12');
  186. i := -1;
  187. str(i,s);
  188. check('-1');
  189. str(i:0,s);
  190. check('-1');
  191. str(i:1,s);
  192. check('-1');
  193. str(i:2,s);
  194. check('-1');
  195. str(i:3,s);
  196. check(' -1');
  197. q := 10;
  198. str(q,s);
  199. check('10');
  200. str(q:0,s);
  201. check('10');
  202. str(q:1,s);
  203. check('10');
  204. str(q:2,s);
  205. check('10');
  206. str(q:3,s);
  207. check(' 10');
  208. end;
  209. {$ifdef haswidestring}
  210. procedure test_widestr;
  211. type
  212. tlocalstring = widestring;
  213. var
  214. l: longint;
  215. c: cardinal;
  216. f: real;
  217. i: int64;
  218. q: qword;
  219. s: tlocalstring;
  220. len: longint;
  221. frac: cardinal;
  222. procedure check(const ss: tlocalstring);
  223. begin
  224. if s <> ss then
  225. begin
  226. writeln('error!');
  227. halt(1);
  228. end;
  229. end;
  230. begin
  231. writeln('testing str(<value>,widestring)...');
  232. l := -1;
  233. str(l,s);
  234. check('-1');
  235. str(l:0,s);
  236. check('-1');
  237. str(l:1,s);
  238. check('-1');
  239. str(l:2,s);
  240. check('-1');
  241. str(l:3,s);
  242. check(' -1');
  243. len := 4;
  244. str(l:len,s);
  245. check(' -1');
  246. c := 10;
  247. str(c,s);
  248. check('10');
  249. str(c:0,s);
  250. check('10');
  251. str(c:1,s);
  252. check('10');
  253. str(c:2,s);
  254. check('10');
  255. str(c:3,s);
  256. check(' 10');
  257. { for more in-depth tests of str_real, see ../tstreal[1,2].pp }
  258. f := -1.12345;
  259. str(f,s);
  260. check('-1.123450000000000E+000');
  261. str(f:0,s);
  262. check('-1.1E+000');
  263. str(f:1,s);
  264. check('-1.1E+000');
  265. str(f:2,s);
  266. check('-1.1E+000');
  267. str(f:3,s);
  268. check('-1.1E+000');
  269. str(f:4,s);
  270. check('-1.1E+000');
  271. str(f:0:0,s);
  272. check('-1');
  273. str(f:0:1,s);
  274. check('-1.1');
  275. str(f:0:2,s);
  276. check('-1.12');
  277. str(f:1:0,s);
  278. check('-1');
  279. str(f:1:1,s);
  280. check('-1.1');
  281. str(f:5:0,s);
  282. check(' -1');
  283. str(f:5:1,s);
  284. check(' -1.1');
  285. str(f:5:2,s);
  286. check('-1.12');
  287. len := 6;
  288. frac := 2;
  289. str(f:len:frac,s);
  290. check(' -1.12');
  291. i := -1;
  292. str(i,s);
  293. check('-1');
  294. str(i:0,s);
  295. check('-1');
  296. str(i:1,s);
  297. check('-1');
  298. str(i:2,s);
  299. check('-1');
  300. str(i:3,s);
  301. check(' -1');
  302. q := 10;
  303. str(q,s);
  304. check('10');
  305. str(q:0,s);
  306. check('10');
  307. str(q:1,s);
  308. check('10');
  309. str(q:2,s);
  310. check('10');
  311. str(q:3,s);
  312. check(' 10');
  313. end;
  314. {$endif haswidestring}
  315. begin
  316. test_shortstr;
  317. test_ansistr;
  318. {$ifdef haswidestring}
  319. test_widestr;
  320. {$endif haswidestring}
  321. writeln('str tests successful!');
  322. end.