Browse Source

* test for variant TValue

Michaël Van Canneyt 2 years ago
parent
commit
b6a87450eb
1 changed files with 23 additions and 0 deletions
  1. 23 0
      packages/rtl-objpas/tests/tests.rtti.value.pas

+ 23 - 0
packages/rtl-objpas/tests/tests.rtti.value.pas

@@ -40,6 +40,7 @@ Type
     procedure TestMakeWideChar;
     procedure TestMakeWideChar;
 
 
     procedure TestMakeNativeInt;
     procedure TestMakeNativeInt;
+    procedure TestMakeVariant;
 
 
 
 
     procedure TestMakeGenericNil;
     procedure TestMakeGenericNil;
@@ -1251,6 +1252,28 @@ begin
   o.Free;
   o.Free;
 end;
 end;
 
 
+procedure TTestValueSimple.TestMakeVariant;
+var
+  vv : Variant;
+  vd : TVarData;
+  v: TValue;
+begin
+  vv := 'Some String';
+
+  TValue.Make(@vv, TypeInfo(Variant), v);
+  Check(not v.IsClass);
+  Check(not v.IsArray);
+  Check(not v.IsEmpty);
+{$ifdef fpc}
+  Check(not v.IsOpenArray);
+{$endif}
+  Check(not v.IsObject);
+  Check(not v.IsOrdinal);
+
+  Check(v.GetReferenceToRawData <> @vv);
+  Check(String(v.AsVariant) = 'Some String');
+end;
+
 procedure TTestValueArray.TestMakeFromArray;
 procedure TTestValueArray.TestMakeFromArray;
 var
 var
   arr, subarr: array of TValue;
   arr, subarr: array of TValue;