浏览代码

* test for variant TValue

Michaël Van Canneyt 2 年之前
父节点
当前提交
b6a87450eb
共有 1 个文件被更改,包括 23 次插入0 次删除
  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 TestMakeNativeInt;
+    procedure TestMakeVariant;
 
 
     procedure TestMakeGenericNil;
@@ -1251,6 +1252,28 @@ begin
   o.Free;
 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;
 var
   arr, subarr: array of TValue;