Browse Source

* share types to reduce unnecessary duplication

git-svn-id: trunk@37067 -
svenbarth 8 years ago
parent
commit
b1439c066a
1 changed files with 52 additions and 75 deletions
  1. 52 75
      packages/rtl-objpas/tests/tests.rtti.pas

+ 52 - 75
packages/rtl-objpas/tests/tests.rtti.pas

@@ -138,6 +138,15 @@ type
   TArrayOfNonManagedRec = array[0..0] of TNonManagedRec;
   TArrayOfNonManagedRec = array[0..0] of TNonManagedRec;
   TArrayOfByte = array[0..0] of byte;
   TArrayOfByte = array[0..0] of byte;
 
 
+  TArrayOfLongintDyn = array of LongInt;
+  TArrayOfLongintStatic = array[0..3] of LongInt;
+
+  TTestRecord = record
+    Value1: LongInt;
+    Value2: String;
+  end;
+  PTestRecord = ^TTestRecord;
+
 {$ifdef fpc}
 {$ifdef fpc}
 {$PUSH}
 {$PUSH}
 {$INTERFACES CORBA}
 {$INTERFACES CORBA}
@@ -294,16 +303,14 @@ begin
 end;
 end;
 
 
 procedure TTestCase1.TestMakeArrayDynamic;
 procedure TTestCase1.TestMakeArrayDynamic;
-type
-  TArrDyn = array of LongInt;
 var
 var
-  arr: TArrDyn;
+  arr: TArrayOfLongintDyn;
   value: TValue;
   value: TValue;
 begin
 begin
   SetLength(arr, 2);
   SetLength(arr, 2);
   arr[0] := 42;
   arr[0] := 42;
   arr[1] := 21;
   arr[1] := 21;
-  TValue.Make(@arr, TypeInfo(TArrDyn), value);
+  TValue.Make(@arr, TypeInfo(TArrayOfLongintDyn), value);
   CheckEquals(value.IsArray, True);
   CheckEquals(value.IsArray, True);
   CheckEquals(value.IsObject, False);
   CheckEquals(value.IsObject, False);
   CheckEquals(value.IsOrdinal, False);
   CheckEquals(value.IsOrdinal, False);
@@ -861,25 +868,14 @@ begin
 end;
 end;
 
 
 procedure TTestCase1.TestReferenceRawData;
 procedure TTestCase1.TestReferenceRawData;
-type
-  TTest = record
-    a: LongInt;
-    b: String;
-  end;
-  PTest = ^TTest;
-
-  TArrDyn = array of LongInt;
-
-  TArrStat = array[0..2] of LongInt;
-
 var
 var
   value: TValue;
   value: TValue;
   str: String;
   str: String;
   intf: IInterface;
   intf: IInterface;
   i: LongInt;
   i: LongInt;
-  test: TTest;
-  arrdyn: TArrDyn;
-  arrstat: TArrStat;
+  test: TTestRecord;
+  arrdyn: TArrayOfLongintDyn;
+  arrstat: TArrayOfLongintStatic;
 begin
 begin
   str := 'Hello World';
   str := 'Hello World';
   UniqueString(str);
   UniqueString(str);
@@ -895,39 +891,30 @@ begin
   Check(value.GetReferenceToRawData <> @i, 'Reference to longint is equal');
   Check(value.GetReferenceToRawData <> @i, 'Reference to longint is equal');
   Check(PLongInt(value.GetReferenceToRawData)^ = PLongInt(@i)^, 'Reference to longint data differs');
   Check(PLongInt(value.GetReferenceToRawData)^ = PLongInt(@i)^, 'Reference to longint data differs');
 
 
-  test.a := 42;
-  test.b := 'Hello World';
-  TValue.Make(@test, TypeInfo(TTest), value);
+  test.value1 := 42;
+  test.value2 := 'Hello World';
+  TValue.Make(@test, TypeInfo(TTestRecord), value);
   Check(value.GetReferenceToRawData <> @test, 'Reference to record is equal');
   Check(value.GetReferenceToRawData <> @test, 'Reference to record is equal');
-  Check(PTest(value.GetReferenceToRawData)^.a = PTest(@test)^.a, 'Reference to record data a differs');
-  Check(PTest(value.GetReferenceToRawData)^.b = PTest(@test)^.b, 'Reference to record data b differs');
+  Check(PTestRecord(value.GetReferenceToRawData)^.value1 = PTestRecord(@test)^.value1, 'Reference to record data value1 differs');
+  Check(PTestRecord(value.GetReferenceToRawData)^.value2 = PTestRecord(@test)^.value2, 'Reference to record data value2 differs');
 
 
   SetLength(arrdyn, 3);
   SetLength(arrdyn, 3);
   arrdyn[0] := 42;
   arrdyn[0] := 42;
   arrdyn[1] := 23;
   arrdyn[1] := 23;
   arrdyn[2] := 49;
   arrdyn[2] := 49;
-  TValue.Make(@arrdyn, TypeInfo(TArrDyn), value);
+  TValue.Make(@arrdyn, TypeInfo(TArrayOfLongintDyn), value);
   Check(PPointer(value.GetReferenceToRawData)^ = Pointer(arrdyn), 'Reference to dynamic array data differs');
   Check(PPointer(value.GetReferenceToRawData)^ = Pointer(arrdyn), 'Reference to dynamic array data differs');
 
 
   arrstat[0] := 42;
   arrstat[0] := 42;
   arrstat[1] := 23;
   arrstat[1] := 23;
   arrstat[2] := 49;
   arrstat[2] := 49;
-  TValue.Make(@arrstat, TypeInfo(TArrStat), value);
+  arrstat[3] := 59;
+  TValue.Make(@arrstat, TypeInfo(TArrayOfLongintStatic), value);
   Check(value.GetReferenceToRawData <> @arrstat, 'Reference to static array is equal');
   Check(value.GetReferenceToRawData <> @arrstat, 'Reference to static array is equal');
   Check(PLongInt(value.GetReferenceToRawData)^ = PLongInt(@arrstat)^, 'Reference to static array data differs');
   Check(PLongInt(value.GetReferenceToRawData)^ = PLongInt(@arrstat)^, 'Reference to static array data differs');
 end;
 end;
 
 
 procedure TTestCase1.TestDataSize;
 procedure TTestCase1.TestDataSize;
-type
-  TEnum = (eOne, eTwo, eThree);
-  TSet = set of TEnum;
-  TTestRecord = record
-    Value1: LongInt;
-    Value2: Pointer;
-  end;
-  TObjProc = procedure of object;
-  TArrDyn = array of LongInt;
-  TArrStatic = array[0..3] of LongInt;
 var
 var
   u8: UInt8;
   u8: UInt8;
   u16: UInt16;
   u16: UInt16;
@@ -951,8 +938,8 @@ var
   o: TObject;
   o: TObject;
   c: TClass;
   c: TClass;
   i: IInterface;
   i: IInterface;
-  ad: TArrDyn;
-  _as: TArrStatic;
+  ad: TArrayOfLongintDyn;
+  _as: TArrayOfLongintStatic;
   b8: Boolean;
   b8: Boolean;
 {$ifdef fpc}
 {$ifdef fpc}
   b16: Boolean16;
   b16: Boolean16;
@@ -965,12 +952,12 @@ var
 {$ifdef fpc}
 {$ifdef fpc}
   bl64: QWordBool;
   bl64: QWordBool;
 {$endif}
 {$endif}
-  e: TEnum;
-  s: TSet;
+  e: TTestEnum;
+  s: TTestSet;
   t: TTestRecord;
   t: TTestRecord;
   p: Pointer;
   p: Pointer;
-  proc: TProcedure;
-  method: TObjProc;
+  proc: TTestProc;
+  method: TTestMethod;
 
 
   value: TValue;
   value: TValue;
 begin
 begin
@@ -1043,35 +1030,25 @@ begin
   TValue.Make(@t, TypeInfo(TTestRecord), value);
   TValue.Make(@t, TypeInfo(TTestRecord), value);
   CheckEquals(SizeOf(TTestRecord), value.DataSize, 'Size of TTestRecord differs');
   CheckEquals(SizeOf(TTestRecord), value.DataSize, 'Size of TTestRecord differs');
   proc := Nil;
   proc := Nil;
-  TValue.Make(@proc, TypeInfo(TProcedure), value);
-  CheckEquals(SizeOf(TProcedure), value.DataSize, 'Size of TProcedure differs');
+  TValue.Make(@proc, TypeInfo(TTestProc), value);
+  CheckEquals(SizeOf(TTestProc), value.DataSize, 'Size of TTestProc differs');
   {method := Nil;
   {method := Nil;
-  TValue.Make(@method, TypeInfo(TObjProc), value);
-  CheckEquals(SizeOf(TObjProc), value.DataSize, 'Size of TMethod differs');}
-  TValue.Make(@_as, TypeInfo(TArrStatic), value);
-  CheckEquals(SizeOf(TArrStatic), value.DataSize, 'Size of TArrStatic differs');
-  TValue.Make(@ad, TypeInfo(TArrDyn), value);
-  CheckEquals(SizeOf(TArrDyn), value.DataSize, 'Size of TArrDyn differs');
-  {TValue.Make(@e, TypeInfo(TEnum), value);
-  CheckEquals(SizeOf(TEnum), value.DataSize, 'Size of TEnum differs');
-  TValue.Make(@s, TypeInfo(TSet), value);
-  CheckEquals(SizeOf(TSet), value.DataSize, 'Size of TSet differs');}
+  TValue.Make(@method, TypeInfo(TTestMethod), value);
+  CheckEquals(SizeOf(TTestMethod), value.DataSize, 'Size of TTestMethod differs');}
+  TValue.Make(@_as, TypeInfo(TArrayOfLongintStatic), value);
+  CheckEquals(SizeOf(TArrayOfLongintStatic), value.DataSize, 'Size of TArrayOfLongintStatic differs');
+  TValue.Make(@ad, TypeInfo(TArrayOfLongintDyn), value);
+  CheckEquals(SizeOf(TArrayOfLongintDyn), value.DataSize, 'Size of TArrayOfLongintDyn differs');
+  {TValue.Make(@e, TypeInfo(TTestEnum), value);
+  CheckEquals(SizeOf(TTestEnum), value.DataSize, 'Size of TTestEnum differs');
+  TValue.Make(@s, TypeInfo(TTestSet), value);
+  CheckEquals(SizeOf(TTestSet), value.DataSize, 'Size of TTestSet differs');}
   p := Nil;
   p := Nil;
   TValue.Make(@p, TypeInfo(Pointer), value);
   TValue.Make(@p, TypeInfo(Pointer), value);
   CheckEquals(SizeOf(Pointer), value.DataSize, 'Size of Pointer differs');
   CheckEquals(SizeOf(Pointer), value.DataSize, 'Size of Pointer differs');
 end;
 end;
 
 
 procedure TTestCase1.TestDataSizeEmpty;
 procedure TTestCase1.TestDataSizeEmpty;
-type
-  TEnum = (eOne, eTwo, eThree);
-  TSet = set of TEnum;
-  TTestRecord = record
-    Value1: LongInt;
-    Value2: Pointer;
-  end;
-  TObjProc = procedure of object;
-  TArrDyn = array of LongInt;
-  TArrStatic = array[0..3] of LongInt;
 var
 var
   value: TValue;
   value: TValue;
 begin
 begin
@@ -1139,18 +1116,18 @@ begin
   CheckEquals(SizeOf(Pointer), value.DataSize, 'Size of IInterface differs');
   CheckEquals(SizeOf(Pointer), value.DataSize, 'Size of IInterface differs');
   TValue.Make(Nil, TypeInfo(TTestRecord), value);
   TValue.Make(Nil, TypeInfo(TTestRecord), value);
   CheckEquals(SizeOf(TTestRecord), value.DataSize, 'Size of TTestRecord differs');
   CheckEquals(SizeOf(TTestRecord), value.DataSize, 'Size of TTestRecord differs');
-  TValue.Make(Nil, TypeInfo(TProcedure), value);
-  CheckEquals(SizeOf(TProcedure), value.DataSize, 'Size of TProcedure differs');
-  {TValue.Make(Nil, TypeInfo(TObjProc), value);
-  CheckEquals(SizeOf(TObjProc), value.DataSize, 'Size of TMethod differs');}
-  TValue.Make(Nil, TypeInfo(TArrStatic), value);
-  CheckEquals(SizeOf(TArrStatic), value.DataSize, 'Size of TArrStatic differs');
-  TValue.Make(Nil, TypeInfo(TArrDyn), value);
-  CheckEquals(SizeOf(TArrDyn), value.DataSize, 'Size of TArrDyn differs');
-  {TValue.Make(Nil, TypeInfo(TEnum), value);
-  CheckEquals(SizeOf(TEnum), value.DataSize, 'Size of TEnum differs');
-  TValue.Make(Nil, TypeInfo(TSet), value);
-  CheckEquals(SizeOf(TSet), value.DataSize, 'Size of TSet differs');}
+  TValue.Make(Nil, TypeInfo(TTestProc), value);
+  CheckEquals(SizeOf(TTestProc), value.DataSize, 'Size of TTestProc differs');
+  {TValue.Make(Nil, TypeInfo(TTestMethod), value);
+  CheckEquals(SizeOf(TTestMethod), value.DataSize, 'Size of TTestMethod differs');}
+  TValue.Make(Nil, TypeInfo(TArrayOfLongintStatic), value);
+  CheckEquals(SizeOf(TArrayOfLongintStatic), value.DataSize, 'Size of TArrayOfLongintStatic differs');
+  TValue.Make(Nil, TypeInfo(TArrayOfLongintDyn), value);
+  CheckEquals(SizeOf(TArrayOfLongintDyn), value.DataSize, 'Size of TArrayOfLongintDyn differs');
+  {TValue.Make(Nil, TypeInfo(TTestEnum), value);
+  CheckEquals(SizeOf(TTestEnum), value.DataSize, 'Size of TTestEnum differs');
+  TValue.Make(Nil, TypeInfo(TTestSet), value);
+  CheckEquals(SizeOf(TTestSet), value.DataSize, 'Size of TTestSet differs');}
   TValue.Make(Nil, TypeInfo(Pointer), value);
   TValue.Make(Nil, TypeInfo(Pointer), value);
   CheckEquals(SizeOf(Pointer), value.DataSize, 'Size of Pointer differs');
   CheckEquals(SizeOf(Pointer), value.DataSize, 'Size of Pointer differs');
 end;
 end;