tsetstr.pp 3.6 KB

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