tsetstr.pp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. { Program to test system unit setstring routines
  2. Tested against Delphi 3 and (where possible)
  3. against Borland Pascal v7.01
  4. Copyright (c) 2002 Carl Eric Codere
  5. }
  6. program tsetstr;
  7. {$R+}
  8. {$Q+}
  9. {$APPTYPE CONSOLE}
  10. {$ifdef fpc}
  11. {$ifndef ver1_0}
  12. {$define haswidestring}
  13. {$endif}
  14. {$else}
  15. {$ifndef ver70}
  16. {$define haswidestring}
  17. {$endif}
  18. {$endif}
  19. {$ifdef fpc}
  20. uses strings;
  21. {$else}
  22. uses SysUtils;
  23. {$endif}
  24. const
  25. HELLO_STRING = 'Hello my little world!';
  26. PCHAR_NULL = nil;
  27. PCHAR_EMPTY : pchar = #0;
  28. PCHAR_NORMAL : pchar = HELLO_STRING;
  29. var
  30. arr: array[0..255] of byte;
  31. str1 : shortstring;
  32. str2 : ansistring;
  33. {$ifdef haswidestring}
  34. str3 : widestring;
  35. {$endif}
  36. procedure fail;
  37. begin
  38. WriteLn('Failed!');
  39. Halt(1);
  40. end;
  41. procedure test_shortstring;
  42. var
  43. i: longint;
  44. _failed : boolean;
  45. begin
  46. _failed := false;
  47. write('Testing setstring() with shortstring...');
  48. { buffer : pchar with #0 character }
  49. { pchar = nil }
  50. { pchar = valid value }
  51. str1:='';
  52. setstring(str1, PCHAR_NULL, 0);
  53. if str1 <> '' then
  54. _failed := true;
  55. str1:='';
  56. setstring(str1,PCHAR_EMPTY,strlen(PCHAR_EMPTY));
  57. if str1 <> '' then
  58. _failed := true;
  59. setstring(str1,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  60. if str1 <> HELLO_STRING then
  61. _failed := true;
  62. { len = 0, len = normal length, len > 255 }
  63. str1:='';
  64. setstring(str1, PCHAR_NORMAL, 0);
  65. if str1 <> '' then
  66. _failed := true;
  67. str1:='';
  68. fillchar(arr,sizeof(arr),'a');
  69. setstring(str1,@arr[0],512);
  70. if length(str1) <> 255 then
  71. _failed := true;
  72. for i := 1 to length(str1) do
  73. if str1[i] <> 'a' then
  74. _failed := true;
  75. str1:='';
  76. setstring(str1,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  77. if str1 <> HELLO_STRING then
  78. _failed := true;
  79. if _failed then
  80. fail;
  81. writeln('Passed!');
  82. end;
  83. procedure test_ansistring;
  84. var
  85. _failed : boolean;
  86. begin
  87. _failed := false;
  88. write('Testing setstring() with ansistring...');
  89. { buffer : pchar with #0 character }
  90. { pchar = nil }
  91. { pchar = valid value }
  92. str2:='';
  93. setstring(str2, PCHAR_NULL, 0);
  94. if str2 <> '' then
  95. _failed := true;
  96. str2:='';
  97. setstring(str2,PCHAR_EMPTY,strlen(PCHAR_EMPTY));
  98. if str2 <> '' then
  99. _failed := true;
  100. setstring(str2,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  101. if str2 <> HELLO_STRING then
  102. _failed := true;
  103. { len = 0, len = normal length, len > 255 }
  104. str2:='';
  105. setstring(str2, PCHAR_NORMAL, 0);
  106. if str2 <> '' then
  107. _failed := true;
  108. str2:='';
  109. setstring(str2,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  110. if str2 <> HELLO_STRING then
  111. _failed := true;
  112. if _failed then
  113. fail;
  114. writeln('Passed!');
  115. end;
  116. {$ifdef haswidestring}
  117. procedure test_widestring;
  118. var
  119. _failed : boolean;
  120. begin
  121. _failed := false;
  122. write('Testing setstring() with widestring...');
  123. { buffer : pchar with #0 character }
  124. { pchar = nil }
  125. { pchar = valid value }
  126. str3:='';
  127. setstring(str3, PCHAR_NULL, 0);
  128. if str3 <> '' then
  129. _failed := true;
  130. str3:='';
  131. setstring(str3,PCHAR_EMPTY,strlen(PCHAR_EMPTY));
  132. if str3 <> '' then
  133. _failed := true;
  134. setstring(str3,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  135. if str3 <> HELLO_STRING then
  136. _failed := true;
  137. { len = 0, len = normal length, len > 255 }
  138. str3:='';
  139. setstring(str3, PCHAR_NORMAL, 0);
  140. if str3 <> '' then
  141. _failed := true;
  142. str3:='';
  143. setstring(str3,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  144. if str3 <> HELLO_STRING then
  145. _failed := true;
  146. if _failed then
  147. fail;
  148. writeln('Passed!');
  149. end;
  150. {$endif}
  151. Begin
  152. test_shortstring;
  153. test_ansistring;
  154. {$ifdef haswidestring}
  155. test_widestring;
  156. {$endif}
  157. end.
  158. {
  159. $Log$
  160. Revision 1.3 2003-03-04 18:19:48 jonas
  161. * adapted tests to fixed implementation
  162. Revision 1.2 2002/12/16 20:40:36 peter
  163. * win32 fix
  164. Revision 1.1 2002/10/20 11:44:15 carl
  165. + setstring testing
  166. * args checking is not interactive
  167. + zero and negative length checking for move/fillchar
  168. }