Browse Source

* test also order of properties

git-svn-id: trunk@2005 -
peter 19 years ago
parent
commit
1f2e850bea
1 changed files with 32 additions and 24 deletions
  1. 32 24
      tests/tbs/tb0498.pp

+ 32 - 24
tests/tbs/tb0498.pp

@@ -1,59 +1,67 @@
-{$mode objfpc}{$H+}
+{$IFDEF FPC}
+   {$mode objfpc}{$H+}
+{$ELSE}
+   {$APPTYPE CONSOLE}
+{$ENDIF}
 
 uses
-   Classes, SysUtils, TypInfo;
-
+   SysUtils,
+   TypInfo,
+   Classes;
 
 type
-{$M+}
-   TMyTestObject = class;
-{$M-}
-
+   TAObject = class(TPersistent)
+   private
+     FCaption: string;
+   published
+     property Caption: string read FCaption write FCaption;
+   end;
 
-   TSomeOtherClass = class(TObject)
+   TBObject = class(TAObject)
    private
-      FName: string;
-   public
-     property Name: string read FName write FName;
+     FIntProp: Integer;
+     FStrProp: String;
+   published
+     property IntProp: Integer read FIntProp write FIntProp;
+     property StrProp: String read FStrProp write FStrProp;
    end;
 
 
-   TMyTestObject = class(TObject)
+   TCObject = class(TBObject)
    private
-      FIntProp: integer;
-      FStringProp: string;
-   public
+      FAStrProp: String;
    published
-     property StringProp: string read FStringProp write FStringProp;
-     property IntProp: integer read FIntProp write FIntProp;
+     property AnotherStrProp: String read FAStrProp write FAStrProp;
    end;
 
-
 procedure ShowProperties;
 var
-   O: TMyTestObject;
+   Obj: TCObject;
    i: Longint;
    lPropFilter: TTypeKinds;
    lCount: Longint;
    lSize: Integer;
    lList: PPropList;
 begin
-   O := TMyTestObject.Create;
-   lPropFilter := [tkInteger, tkAString];
+   Obj := TCObject.Create;
+   lPropFilter := [tkInteger, tkLString {$ifdef FPC}, tkAString{$endif}];
 
-   lCount  := GetPropList(O.ClassInfo, lPropFilter, nil, false);
+   lCount  := GetPropList(Obj.ClassInfo, lPropFilter, nil, false);
    lSize   := lCount * SizeOf(Pointer);
    GetMem(lList, lSize);
 
    Writeln('Total property Count: ' + IntToStr(lCount));
-   lCount := GetPropList(O.ClassInfo, lPropFilter, lList, false);
+   lCount := GetPropList(Obj.ClassInfo, lPropFilter, lList, false);
    for i := 0 to lCount-1 do
    begin
      Writeln('Property '+IntToStr(i+1)+': ' + lList^[i]^.Name);
    end;
 
+   if (lList^[0]^.Name<>'Caption') then
+     halt(1);
+
    FreeMem(lList);
-   O.Free;
+   Obj.Free;
    Writeln('---------------');
 end;