testunit.pp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. {$mode objfpc}
  2. {$h+}
  3. unit testunit;
  4. interface
  5. uses SysUtils, Classes;
  6. Const
  7. AnIntegerConst = 1;
  8. AStringConst = 'Hello, World!';
  9. AFLoatconst = 1.23;
  10. ABooleanConst = True;
  11. ATypedConst : Integer = 3;
  12. AnArrayConst : Array[1..3] of Integer = (1,2,3);
  13. ARecordConst : TMethod = (Code:Nil;Data:Nil);
  14. ASetConst = [true,false];
  15. ADeprecatedConst = 1 deprecated;
  16. Type
  17. TAnEnumType = (one,two,three);
  18. TASetType = Set of TAnEnumType;
  19. TAnArrayType = Array[1..10] of Integer;
  20. // TASubRangeType = one..two;
  21. TABooleanArrayType = Array[Boolean] of Integer;
  22. TARecordType = Record
  23. X,Y : Integer;
  24. Z : String;
  25. end;
  26. TAVariantRecordType = Record
  27. A : String;
  28. Case Integer of
  29. 1 : (X,Y : Integer);
  30. 2 : (phi,Omega : Real);
  31. end;
  32. TAVariantRecordType2 = Record
  33. A : String;
  34. Case Atype : Integer of
  35. 1 : (X,Y : Integer);
  36. 2 : (phi,Omega : Real);
  37. end;
  38. TADeprecatedType = Integer deprecated;
  39. Var
  40. ASimpleVar : Integer;
  41. ATypedVar : TMethod;
  42. ARecordVar : Record
  43. A,B : integer;
  44. end;
  45. AnArrayVar : Array[1..10] of Integer;
  46. ATypedArray : Array[TanEnumType] of Integer;
  47. AInitVar : Integer = 1;
  48. ADeprecatedVar : Integer deprecated;
  49. ACVarVar : Integer; cvar;
  50. AnExternalVar : Integer; external name 'avar';
  51. AnExternalLibVar : Integer; external 'library' name 'avar';
  52. Procedure SimpleProc;
  53. Procedure OverloadedProc(A : Integer);
  54. Procedure OverloadedProc(B : String);
  55. Function SimpleFunc : Integer;
  56. Function OverloadedFunc(A: Integer) : Integer;
  57. Function OverloadedFunc(B : String) : Integer;
  58. Procedure ConstArgProc(Const A : Integer);
  59. Procedure VarArgProc(Var A : Integer);
  60. Procedure OutArgProc(Out A : Integer);
  61. Procedure UntypedVarArgProc(Var A);
  62. Procedure UntypedConstArgProc(const A);
  63. Procedure UntypedOutArgProc(Out A);
  64. Procedure ArrayArgProc (A : TAnArrayType);
  65. Procedure OpenArrayArgProc(A : Array of string);
  66. Procedure ConstArrayArgProc(A : Array of const);
  67. Procedure externalproc; external;
  68. Procedure externalnameProc; external name 'aname';
  69. Procedure externallibnameProc; external 'alibrary' name 'aname';
  70. Type
  71. { TMyParentClass }
  72. TMyParentClass = Class(TComponent)
  73. Private
  74. FI : Integer;
  75. function GetA(AIndex : Integer): String;
  76. function GetIP(AIndex: integer): String;
  77. procedure SetA(AIndex : Integer; const AValue: String);
  78. procedure SetIP(AIndex: integer; const AValue: String);
  79. Procedure WriteI(AI : Integer);
  80. Function ReadI : Integer;
  81. Protected
  82. Procedure AProtectedMethod;
  83. Property AProtectedProp : Integer Read FI Write FI;
  84. Public
  85. Constructor Create(AOwner : TComponent); override;
  86. Destructor Destroy; override;
  87. Procedure AVirtualProc; virtual;
  88. Procedure AnAbstractProc; virtual; abstract;
  89. Procedure AMessageProc(Var Msg); Message 123;
  90. Procedure AStringMessageProc(Var Msg); Message '123';
  91. Procedure ADeprecatedProc; deprecated;
  92. Procedure APlatformProc; Platform;
  93. Property IntProp : Integer Read FI Write Fi;
  94. Property IntROProp : Integer Read FI;
  95. Property GetIntProp : Integer Read ReadI Write WriteI;
  96. Property AnArrayProp[AIndex : Integer] : String Read GetA write SetA;
  97. Property AnIndexProp : String Index 1 Read GetIP Write SetIP;
  98. Property AnIndexProp2 : String Index 2 Read GetIP Write SetIP;
  99. Published
  100. Procedure SomePublishedMethod;
  101. end;
  102. { TMyChildClass }
  103. TMyChildClass = Class(TMyParentClass)
  104. Public
  105. Procedure AVirtualProc; Override;
  106. Procedure AnAbstractProc; Override;
  107. Published
  108. Property AProtectedProp;
  109. end;
  110. Implementation
  111. Procedure SimpleProc;
  112. begin
  113. end;
  114. Procedure OverloadedProc(A : Integer);
  115. begin
  116. end;
  117. Procedure OverloadedProc(B : String);
  118. begin
  119. end;
  120. Function SimpleFunc : Integer;
  121. begin
  122. end;
  123. Function OverloadedFunc(A: Integer) : Integer;
  124. begin
  125. end;
  126. Function OverloadedFunc(B : String) : Integer;
  127. begin
  128. end;
  129. Procedure ArrayArgProc (A : TAnArrayType);
  130. begin
  131. end;
  132. Procedure OpenArrayArgProc(A : Array of string);
  133. begin
  134. end;
  135. Procedure ConstArrayArgProc(A : Array of const);
  136. begin
  137. end;
  138. Procedure ConstArgProc(Const A : Integer);
  139. begin
  140. end;
  141. Procedure VarArgProc(Var A : Integer);
  142. begin
  143. end;
  144. Procedure OutArgProc(Out A : Integer);
  145. begin
  146. end;
  147. Procedure UntypedVarArgProc(Var A);
  148. begin
  149. end;
  150. Procedure UntypedConstArgProc(const A);
  151. begin
  152. end;
  153. Procedure UntypedOutArgProc(Out A);
  154. begin
  155. end;
  156. { TMyChildClass }
  157. procedure TMyChildClass.AVirtualProc;
  158. begin
  159. inherited AVirtualProc;
  160. end;
  161. procedure TMyChildClass.AnAbstractProc;
  162. begin
  163. // Cannot call ancestor
  164. end;
  165. { TMyParentClass }
  166. procedure TMyParentClass.WriteI(AI: Integer);
  167. begin
  168. end;
  169. function TMyParentClass.GetA(AIndex : Integer): String;
  170. begin
  171. end;
  172. function TMyParentClass.GetIP(AIndex: integer): String;
  173. begin
  174. end;
  175. procedure TMyParentClass.SetA(AIndex : Integer; const AValue: String);
  176. begin
  177. end;
  178. procedure TMyParentClass.SetIP(AIndex: integer; const AValue: String);
  179. begin
  180. end;
  181. function TMyParentClass.ReadI: Integer;
  182. begin
  183. end;
  184. procedure TMyParentClass.AProtectedMethod;
  185. begin
  186. end;
  187. constructor TMyParentClass.Create(AOwner: TComponent);
  188. begin
  189. inherited Create(AOwner);
  190. end;
  191. destructor TMyParentClass.Destroy;
  192. begin
  193. inherited Destroy;
  194. end;
  195. procedure TMyParentClass.AVirtualProc;
  196. begin
  197. end;
  198. procedure TMyParentClass.AMessageProc(var Msg);
  199. begin
  200. end;
  201. procedure TMyParentClass.AStringMessageProc(var Msg);
  202. begin
  203. end;
  204. procedure TMyParentClass.ADeprecatedProc;
  205. begin
  206. end;
  207. procedure TMyParentClass.APlatformProc;
  208. begin
  209. end;
  210. procedure TMyParentClass.SomePublishedMethod;
  211. begin
  212. end;
  213. end.