tsetstr2.pp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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. { second version compiled with $H+ }
  7. program tsetstr;
  8. {$R+}
  9. {$Q+}
  10. {$ifndef MACOS}
  11. {$APPTYPE CONSOLE}
  12. {$else}
  13. {$APPTYPE TOOL}
  14. {$endif}
  15. {$H+}
  16. {$ifdef fpc}
  17. {$ifndef ver1_0}
  18. {$define haswidestring}
  19. {$endif}
  20. {$else}
  21. {$ifndef ver70}
  22. {$define haswidestring}
  23. {$endif}
  24. {$endif}
  25. {$ifdef fpc}
  26. uses strings;
  27. {$else}
  28. uses sysutils;
  29. {$endif}
  30. const
  31. HELLO_STRING = 'Hello my little world!';
  32. PCHAR_NULL = nil;
  33. PCHAR_EMPTY : pchar = #0;
  34. PCHAR_NORMAL : pchar = HELLO_STRING;
  35. var
  36. arr: array[0..255] of byte;
  37. str1 : shortstring;
  38. str2 : ansistring;
  39. {$ifdef haswidestring}
  40. str3 : widestring;
  41. {$endif}
  42. procedure fail;
  43. begin
  44. WriteLn('Failed!');
  45. Halt(1);
  46. end;
  47. procedure test_shortstring;
  48. var
  49. i: longint;
  50. _failed : boolean;
  51. begin
  52. _failed := false;
  53. write('Testing setstring() with shortstring...');
  54. { buffer : pchar with #0 character }
  55. { pchar = nil }
  56. { pchar = valid value }
  57. str1:='';
  58. setstring(str1, PCHAR_NULL, 0);
  59. if str1 <> '' then
  60. _failed := true;
  61. str1:='';
  62. setstring(str1,PCHAR_EMPTY,strlen(PCHAR_EMPTY));
  63. if str1 <> '' then
  64. _failed := true;
  65. setstring(str1,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  66. if str1 <> HELLO_STRING then
  67. _failed := true;
  68. { len = 0, len = normal length, len > 255 }
  69. str1:='';
  70. setstring(str1, PCHAR_NORMAL, 0);
  71. if str1 <> '' then
  72. _failed := true;
  73. str1:='';
  74. fillchar(arr,sizeof(arr),'a');
  75. setstring(str1,@arr[0],512);
  76. if length(str1) <> 255 then
  77. _failed := true;
  78. for i := 1 to length(str1) do
  79. if str1[i] <> 'a' then
  80. _failed := true;
  81. str1:='';
  82. setstring(str1,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  83. if str1 <> HELLO_STRING then
  84. _failed := true;
  85. if _failed then
  86. fail;
  87. writeln('Passed!');
  88. end;
  89. procedure test_ansistring;
  90. var
  91. _failed : boolean;
  92. begin
  93. _failed := false;
  94. write('Testing setstring() with ansistring...');
  95. { buffer : pchar with #0 character }
  96. { pchar = nil }
  97. { pchar = valid value }
  98. str2:='';
  99. setstring(str2, PCHAR_NULL, 0);
  100. if str2 <> '' then
  101. _failed := true;
  102. str2:='';
  103. setstring(str2,PCHAR_EMPTY,strlen(PCHAR_EMPTY));
  104. if str2 <> '' then
  105. _failed := true;
  106. setstring(str2,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  107. if str2 <> HELLO_STRING then
  108. _failed := true;
  109. { len = 0, len = normal length, len > 255 }
  110. str2:='';
  111. setstring(str2, PCHAR_NORMAL, 0);
  112. if str2 <> '' then
  113. _failed := true;
  114. str2:='';
  115. setstring(str2,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  116. if str2 <> HELLO_STRING then
  117. _failed := true;
  118. if _failed then
  119. fail;
  120. writeln('Passed!');
  121. end;
  122. {$ifdef haswidestring}
  123. procedure test_widestring;
  124. var
  125. _failed : boolean;
  126. begin
  127. _failed := false;
  128. write('Testing setstring() with widestring...');
  129. { buffer : pchar with #0 character }
  130. { pchar = nil }
  131. { pchar = valid value }
  132. str3:='';
  133. setstring(str3, PCHAR_NULL, 0);
  134. if str3 <> '' then
  135. _failed := true;
  136. str3:='';
  137. setstring(str3,PCHAR_EMPTY,strlen(PCHAR_EMPTY));
  138. if str3 <> '' then
  139. _failed := true;
  140. setstring(str3,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  141. if str3 <> HELLO_STRING then
  142. _failed := true;
  143. { len = 0, len = normal length, len > 255 }
  144. str3:='';
  145. setstring(str3, PCHAR_NORMAL, 0);
  146. if str3 <> '' then
  147. _failed := true;
  148. str3:='';
  149. setstring(str3,PCHAR_NORMAL,strlen(PCHAR_NORMAL));
  150. if str3 <> HELLO_STRING then
  151. _failed := true;
  152. if _failed then
  153. fail;
  154. writeln('Passed!');
  155. end;
  156. {$endif}
  157. Begin
  158. test_shortstring;
  159. test_ansistring;
  160. {$ifdef haswidestring}
  161. test_widestring;
  162. {$endif}
  163. end.