testunit.pp 6.3 KB

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