1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-20 00:50:25 +02:00

FieldInfo SetValue/GetValue with Variant support

This commit is contained in:
Brian Fiete 2020-09-05 06:02:13 -07:00
parent 8591172bb2
commit e37e1ac687
2 changed files with 221 additions and 29 deletions

View file

@ -494,6 +494,9 @@ namespace Tests
sb.mB = "Struct B";
sb.mC = .() { mA = 1.2f, mB = 2.3f };
Variant sbVariant = .Create(sb);
defer sbVariant.Dispose();
let type = sb.GetType() as TypeInstance;
let fields = type.GetFields();
int fieldIdx = 0;
@ -501,8 +504,13 @@ namespace Tests
{
var fieldVal = field.GetValue(sb).Value;
defer fieldVal.Dispose();
var fieldVal2 = field.GetValue(&sb).Value;
defer fieldVal2.Dispose();
var fieldVal3 = field.GetValue(sbVariant).Value;
defer fieldVal3.Dispose();
switch (fieldIdx)
{
case 0:
@ -514,6 +522,26 @@ namespace Tests
Test.Assert(fieldVal2.Get<int>() == 25);
field.SetValue(&sb, newVal);
Test.Assert(sb.mA == 32);
Test.Assert(fieldVal3.Get<int>() == 25);
field.SetValue(&sb, newVal);
Test.Assert(sb.mA == 32);
field.SetValue(sbVariant, 34);
fieldVal3.Dispose();
fieldVal3 = field.GetValue(sbVariant).Value;
Test.Assert(fieldVal3.Get<int>() == 34);
Variant varInt = .Create(45);
field.SetValue(sbVariant, varInt);
fieldVal3.Dispose();
fieldVal3 = field.GetValue(sbVariant).Value;
Test.Assert(fieldVal3.Get<int>() == 45);
field.SetValue(&sb, varInt);
fieldVal2.Dispose();
fieldVal2 = field.GetValue(&sb).Value;
Test.Assert(fieldVal2.Get<int>() == 45);
case 1:
Test.Assert(fieldVal.Get<String>() === "Struct B");
field.SetValue(&sb, "Struct C");