Example #1
0
        // Could add another POD struct nested in here but it seems to not be blittable when
        // adding a POD struct into another POD struct.

        public static void Run()
        {
            UScriptStruct unrealStruct = UScriptStruct.GetStruct <Test_SimpleBlittableStruct>();

            Tests.Assert(unrealStruct != null, "Test_SimpleBlittableStruct");

            Tests.AssertProperty <UInt8Property>(unrealStruct, "Val1");
            Tests.AssertProperty <UByteProperty>(unrealStruct, "Val2");
            Tests.AssertProperty <UInt16Property>(unrealStruct, "Val3");
            Tests.AssertProperty <UUInt16Property>(unrealStruct, "Val4");
            Tests.AssertProperty <UIntProperty>(unrealStruct, "Val5");
            Tests.AssertProperty <UUInt32Property>(unrealStruct, "Val6");
            Tests.AssertProperty <UInt64Property>(unrealStruct, "Val7");
            Tests.AssertProperty <UUInt64Property>(unrealStruct, "Val8");
            Tests.AssertProperty <UFloatProperty>(unrealStruct, "Val9");
            Tests.AssertProperty <UDoubleProperty>(unrealStruct, "Val10");
            Tests.AssertProperty <UNameProperty>(unrealStruct, "Val11");

            Tests.Assert(StructDefault <Test_SimpleBlittableStruct> .IsBlittableStruct, unrealStruct, "IsBlittableStruct");
            Tests.Assert(unrealStruct.StructFlags.HasFlag(EStructFlags.IsPlainOldData), unrealStruct, "IsPlainOldData");

            Test_SimpleBlittableStruct defaultValue = StructDefault <Test_SimpleBlittableStruct> .Value;

            Tests.AssertEqual(defaultValue, default(Test_SimpleBlittableStruct), unrealStruct, "default state");
        }
Example #2
0
 protected override string VirtualFunc1_Implementation(int param1, ref string param2)
 {
     Tests.AssertEqual(param1, 1, GetClass(), "VirtualFunc1.param1");
     base.VirtualFunc1_Implementation(param1 + 1, ref param2);
     param2 = "Test_SimpleClass3_param2_out";
     return("Test_SimpleClass3");
 }
Example #3
0
 public override string VirtualFunc1(int param1, ref string param2)
 {
     Tests.AssertEqual(param1, 0, GetClass(), "VirtualFunc1.param1");
     base.VirtualFunc1(param1 + 1, ref param2);
     param2 = "Test_SimpleClass3_param2_out";
     return("Test_SimpleClass3");
 }
Example #4
0
        private static void RunMiscTests()
        {
            // A couple of misc tests

            // Test FName finding an existing FName which doesn't exist returns FName.None
            Tests.AssertEqual(new FName("I don't exist! (C# test 123!)", FName.EFindName.Find), FName.None, "find non existing FName");
        }
Example #5
0
 private static void AssertTestArrayFuncParam(Test_FixedArrayInStruct value, UClass unrealClass, int step)
 {
     for (int i = 0; i < value.Array1.Length; i++)
     {
         Tests.AssertEqual(i + 1, value.Array1[i], unrealClass, "StructArrayFuncTestResult-" + step);
     }
     for (int i = 0; i < value.Array6.Length; i++)
     {
         Tests.AssertEqual(uint.MaxValue - (i + 1), value.Array6[i], unrealClass, "StructArrayFuncTestResult-" + step);
     }
     if (step == 4)
     {
         // check the ref func changed this, otherwise it should be default
         for (int i = 0; i < value.Array1.Length; i++)
         {
             Tests.AssertEqual(i + 2, value.Array2[i], unrealClass, "StructArrayFuncTestResult-" + step);
         }
     }
     else
     {
         for (int i = 0; i < value.Array1.Length; i++)
         {
             Tests.AssertEqual(0, value.Array2[i], unrealClass, "StructArrayFuncTestResult-" + step);
         }
     }
 }
Example #6
0
 // Make sure this signature matches Test_SimpleMulticastDelegate
 private void BindToStructMulticastDelegate3(ulong param1, string param2, ref int param3)
 {
     Tests.AssertEqual(param1, 3u, "BindToStructMulticastDelegate3");
     Tests.AssertEqual(param2, "param2", "BindToStructMulticastDelegate3");
     Tests.Assert(param3 >= 1 && param3 <= 4, "BindToStructMulticastDelegate3");
     param3++;
 }
 public TSoftClass <UObject> BindMe(int param1, string param2, ref double param3, out string param4)
 {
     Tests.AssertEqual(param1, 3, GetClass(), "BindMe.param1");
     Tests.AssertEqual(param2, "param2", GetClass(), "BindMe.param2");
     Tests.AssertEqual(param3, 4.5, GetClass(), "BindMe.param3");
     param3 += 0.5;
     param4  = "out";
     return(new TSoftClass <UObject>("/Script/Engine.Actor"));
 }
Example #8
0
        public static void Run()
        {
            UScriptStruct unrealStruct = UScriptStruct.GetStruct <Test_FixedArrayInStruct>();

            Tests.Assert(unrealStruct != null, "Test_FixedArrayInStruct");

            Tests.AssertFixedArrayProperty <UInt8Property>(unrealStruct, "Array1", 3);
            Tests.AssertFixedArrayProperty <UByteProperty>(unrealStruct, "Array2", 4);
            Tests.AssertFixedArrayProperty <UInt16Property>(unrealStruct, "Array3", 5);
            Tests.AssertFixedArrayProperty <UUInt16Property>(unrealStruct, "Array4", 6);
            Tests.AssertFixedArrayProperty <UIntProperty>(unrealStruct, "Array5", 7);
            Tests.AssertFixedArrayProperty <UUInt32Property>(unrealStruct, "Array6", 8);
            Tests.AssertFixedArrayProperty <UInt64Property>(unrealStruct, "Array7", 9);
            Tests.AssertFixedArrayProperty <UUInt64Property>(unrealStruct, "Array8", 10);
            Tests.AssertFixedArrayProperty <UFloatProperty>(unrealStruct, "Array9", 11);
            Tests.AssertFixedArrayProperty <UDoubleProperty>(unrealStruct, "Array10", 12);
            Tests.AssertFixedArrayProperty <UDelegateProperty>(unrealStruct, "Array11", 13);
            Tests.AssertFixedArrayProperty <UMulticastDelegateProperty>(unrealStruct, "Array12", 14);
            Tests.AssertFixedArrayProperty <UObjectProperty>(unrealStruct, "Array13", 15);
            Tests.AssertFixedArrayProperty <UEnumProperty>(unrealStruct, "Array14", 16);
            Tests.AssertFixedArrayProperty <UStructProperty>(unrealStruct, "Array15", 17);
            Tests.AssertFixedArrayProperty <UClassProperty>(unrealStruct, "Array16", 18);
            Tests.AssertFixedArrayProperty <ULazyObjectProperty>(unrealStruct, "Array17", 19);
            Tests.AssertFixedArrayProperty <UWeakObjectProperty>(unrealStruct, "Array18", 20);
            Tests.AssertFixedArrayProperty <USoftClassProperty>(unrealStruct, "Array19", 21);
            Tests.AssertFixedArrayProperty <USoftObjectProperty>(unrealStruct, "Array20", 22);
            Tests.AssertFixedArrayProperty <UStrProperty>(unrealStruct, "Array21", 23);
            Tests.AssertFixedArrayProperty <UNameProperty>(unrealStruct, "Array22", 24);
            //Tests.AssertFixedArrayProperty<UTextProperty>(unrealStruct, "Array23", 25);

            Test_FixedArrayInStruct defaultValue = StructDefault <Test_FixedArrayInStruct> .Value;

            Tests.AssertEqual(defaultValue.Array1.Length, 3, unrealStruct, ".Array1");
            Tests.AssertEqual(defaultValue.Array2.Length, 4, unrealStruct, ".Array2");
            Tests.AssertEqual(defaultValue.Array3.Length, 5, unrealStruct, ".Array3");
            Tests.AssertEqual(defaultValue.Array4.Length, 6, unrealStruct, ".Array4");
            Tests.AssertEqual(defaultValue.Array5.Length, 7, unrealStruct, ".Array5");
            Tests.AssertEqual(defaultValue.Array6.Length, 8, unrealStruct, ".Array6");
            Tests.AssertEqual(defaultValue.Array7.Length, 9, unrealStruct, ".Array7");
            Tests.AssertEqual(defaultValue.Array8.Length, 10, unrealStruct, ".Array8");
            Tests.AssertEqual(defaultValue.Array9.Length, 11, unrealStruct, ".Array9");
            Tests.AssertEqual(defaultValue.Array10.Length, 12, unrealStruct, ".Array10");
            Tests.AssertEqual(defaultValue.Array11.Length, 13, unrealStruct, ".Array11");
            Tests.AssertEqual(defaultValue.Array12.Length, 14, unrealStruct, ".Array12");
            Tests.AssertEqual(defaultValue.Array13.Length, 15, unrealStruct, ".Array13");
            Tests.AssertEqual(defaultValue.Array14.Length, 16, unrealStruct, ".Array14");
            Tests.AssertEqual(defaultValue.Array15.Length, 17, unrealStruct, ".Array15");
            Tests.AssertEqual(defaultValue.Array16.Length, 18, unrealStruct, ".Array16");
            Tests.AssertEqual(defaultValue.Array17.Length, 19, unrealStruct, ".Array17");
            Tests.AssertEqual(defaultValue.Array18.Length, 20, unrealStruct, ".Array18");
            Tests.AssertEqual(defaultValue.Array19.Length, 21, unrealStruct, ".Array19");
            Tests.AssertEqual(defaultValue.Array20.Length, 22, unrealStruct, ".Array20");
            Tests.AssertEqual(defaultValue.Array21.Length, 23, unrealStruct, ".Array21");
            Tests.AssertEqual(defaultValue.Array22.Length, 24, unrealStruct, ".Array22");
        }
Example #9
0
        public Dictionary <TSoftClass <UObject>, TSoftClass <UObject> > MapFunc5(ref string inStr)
        {
            Tests.AssertEqual(inStr, "inStr", GetClass(), "MapFunc5.inStr");
            inStr = "outStr";

            Dictionary <TSoftClass <UObject>, TSoftClass <UObject> > result = new Dictionary <TSoftClass <UObject>, TSoftClass <UObject> >();

            result[TSoftClass <UObject> .Null] = new TSoftClass <UObject>(Tests.ActorClass);
            result[new TSoftClass <UObject>(Tests.ActorClass)] = TSoftClass <UObject> .Null;
            return(result);
        }
Example #10
0
        public HashSet <TSoftClass <UObject> > SetFunc5(ref string inStr)
        {
            Tests.AssertEqual(inStr, "inStr", GetClass(), "SetFunc5.inStr");
            inStr = "outStr";

            HashSet <TSoftClass <UObject> > result = new HashSet <TSoftClass <UObject> >();

            result.Add(TSoftClass <UObject> .Null);
            result.Add(new TSoftClass <UObject>(Tests.ActorClass));
            return(result);
        }
Example #11
0
        // Make sure this signature matches Test_SimpleDelegate
        private TSoftClass <UObject> BindToStructDelegate(int param1, string param2, ref double param3, out string param4)
        {
            Tests.AssertEqual(param1, 13, "BindToStructDelegate.param1");
            Tests.AssertEqual(param2, "inParam2", "BindToStructDelegate.param2");
            Tests.AssertEqual(param3, 44.3, "BindToStructDelegate.param3");

            param2 = "outParam2";
            param3 = 99.88;
            param4 = "outParam4";

            return(new TSoftClass <UObject>(UClass.GetClass <Test_SimpleStructOnClass>().GetPathName()));
        }
Example #12
0
        protected override string VirtualFunc1_Implementation(int param1, ref string param2)
        {
            int count = 1;

            if (this.IsA <Test_SimpleClass3>())
            {
                count++;
            }
            Tests.AssertEqual(param1, count, GetClass(), "VirtualFunc1.param1");
            base.VirtualFunc1_Implementation(param1 + 1, ref param2);
            param2 = "Test_SimpleClass2_param2_out";
            return("Test_SimpleClass2");
        }
        private static void TestResultFuncXEquals <T>(T value, Test_SimpleFuncs obj, int func, bool isNullResult)
        {
            UClass unrealClass = obj.GetClass();
            string funcName    = "ResultFunc" + func;

            if (isNullResult)
            {
                funcName += "_Null";
            }
            UFunction func1 = unrealClass.FindFunctionByName(new FName(funcName));

            Tests.AssertNotNull(func1, unrealClass, funcName);

            Tests.AssertEqual((T)UObject.DynamicInvoke(obj, funcName), value, unrealClass, funcName);
        }
Example #14
0
        public virtual string VirtualFunc1(int param1, ref string param2)
        {
            int count = 1;

            if (this.IsA <Test_SimpleClass2>())
            {
                count++;
            }
            if (this.IsA <Test_SimpleClass3>())
            {
                count++;
            }
            Tests.AssertEqual(param1, count, GetClass(), "VirtualFunc1.param1");
            param2 = "Test_SimpleClass1_param2_out";
            return("Test_SimpleClass1");
        }
Example #15
0
        private static void TestVirtualFunc1(Test_SimpleClass1 obj, int type)
        {
            // Go through a full marshal of parameters and resolve the function from the UFunction
            object[] parameters = { 1, "inArg" };
            UObject.DynamicInvoke(obj, "VirtualFunc1", parameters);
            string arg = (string)parameters[1];

            string expectedOutArg = "Test_SimpleClass1_param2_out";

            switch (type)
            {
            case 1: expectedOutArg = "Test_SimpleClass2_param2_out"; break;

            case 2: expectedOutArg = "Test_SimpleClass3_param2_out"; break;
            }
            Tests.AssertEqual(arg, expectedOutArg, obj.GetClass(), "VirtualFunc1.parm2");
        }
Example #16
0
 public long SetFunc3(
     ref ISet <long> p1,
     ref ISet <UObject> p2,
     ref ISet <Test_SimpleEnum> p3,
     ref ISet <Test_SimpleBlittableStruct> p4,
     ref ISet <TSoftClass <UObject> > p5,
     ref ISet <string> p6,
     ref ISet <FName> p7)
 {
     Tests.AssertEqual(p1.Count, 0, GetClass(), "SetFunc3 ref empty map");
     Tests.AssertEqual(p2.Count, 0, GetClass(), "SetFunc3 ref empty map");
     Tests.AssertEqual(p3.Count, 0, GetClass(), "SetFunc3 ref empty map");
     Tests.AssertEqual(p4.Count, 0, GetClass(), "SetFunc3 ref empty map");
     Tests.AssertEqual(p5.Count, 0, GetClass(), "SetFunc3 ref empty map");
     Tests.AssertEqual(p6.Count, 0, GetClass(), "SetFunc3 ref empty map");
     Tests.AssertEqual(p7.Count, 0, GetClass(), "SetFunc3 ref empty map");
     MakeSetTest(p1, p2, p3, p4, p5, p6, p7);
     AssertSetTest(this, p1, p2, p3, p4, p5, p6, p7);
     return(13232);
 }
Example #17
0
 public long MapFunc3(
     ref IDictionary <long, string> p1,
     ref IDictionary <UObject, string> p2,
     ref IDictionary <Test_SimpleEnum, string> p3,
     ref IDictionary <Test_SimpleBlittableStruct, UObject> p4,
     ref IDictionary <TSoftClass <UObject>, TSoftClass <UObject> > p5,
     ref IDictionary <string, string> p6,
     ref IDictionary <FName, string> p7)
 {
     Tests.AssertEqual(p1.Count, 0, GetClass(), "MapFunc3 ref empty map");
     Tests.AssertEqual(p2.Count, 0, GetClass(), "MapFunc3 ref empty map");
     Tests.AssertEqual(p3.Count, 0, GetClass(), "MapFunc3 ref empty map");
     Tests.AssertEqual(p4.Count, 0, GetClass(), "MapFunc3 ref empty map");
     Tests.AssertEqual(p5.Count, 0, GetClass(), "MapFunc3 ref empty map");
     Tests.AssertEqual(p6.Count, 0, GetClass(), "MapFunc3 ref empty map");
     Tests.AssertEqual(p7.Count, 0, GetClass(), "MapFunc3 ref empty map");
     MakeMapTest(p1, p2, p3, p4, p5, p6, p7);
     AssertMapTest(this, p1, p2, p3, p4, p5, p6, p7);
     return(13232);
 }
Example #18
0
        //public HashSet<FText> Val23;

        public static void Run()
        {
            UScriptStruct unrealStruct = UScriptStruct.GetStruct <Test_SimpleStructTSet>();

            Tests.Assert(unrealStruct != null, "Test_SimpleStructTSet");

            Tests.AssertTSetProperty <UInt8Property>(unrealStruct, "Val1");
            Tests.AssertTSetProperty <UByteProperty>(unrealStruct, "Val2");
            Tests.AssertTSetProperty <UInt16Property>(unrealStruct, "Val3");
            Tests.AssertTSetProperty <UUInt16Property>(unrealStruct, "Val4");
            Tests.AssertTSetProperty <UIntProperty>(unrealStruct, "Val5");
            Tests.AssertTSetProperty <UUInt32Property>(unrealStruct, "Val6");
            Tests.AssertTSetProperty <UInt64Property>(unrealStruct, "Val7");
            Tests.AssertTSetProperty <UUInt64Property>(unrealStruct, "Val8");
            Tests.AssertTSetProperty <UFloatProperty>(unrealStruct, "Val9");
            Tests.AssertTSetProperty <UDoubleProperty>(unrealStruct, "Val10");
            //Tests.AssertTSetProperty<UDelegateProperty>(unrealStruct, "Val11");
            //Tests.AssertTSetProperty<UMulticastDelegateProperty>(unrealStruct, "Val12");
            Tests.AssertTSetProperty <UObjectProperty>(unrealStruct, "Val13");
            Tests.AssertTSetProperty <UEnumProperty>(unrealStruct, "Val14");
            Tests.AssertTSetProperty <UStructProperty>(unrealStruct, "Val15");
            Tests.AssertTSetProperty <UClassProperty>(unrealStruct, "Val16");
            Tests.AssertTSetProperty <ULazyObjectProperty>(unrealStruct, "Val17");
            //Tests.AssertTSetProperty<UWeakObjectProperty>(unrealStruct, "Val18");
            Tests.AssertTSetProperty <USoftClassProperty>(unrealStruct, "Val19");
            Tests.AssertTSetProperty <USoftObjectProperty>(unrealStruct, "Val20");
            Tests.AssertTSetProperty <UStrProperty>(unrealStruct, "Val21");
            Tests.AssertTSetProperty <UNameProperty>(unrealStruct, "Val22");
            //Tests.AssertTSetProperty<UTextProperty>(unrealStruct, "Val23");

            Test_SimpleStructTSet defaultValue = StructDefault <Test_SimpleStructTSet> .Value;

            // Check all lists default to empty (they will be constructed by the marshaler)
            foreach (FieldInfo field in defaultValue.GetType().GetFields())
            {
                // HashSet doesn't have a Count we can easily get, obtain it using reflection
                object collection = field.GetValue(defaultValue);
                int    count      = (int)collection.GetType().GetProperty("Count").GetValue(collection);
                Tests.AssertEqual(count, 0, unrealStruct, field.Name);
            }
        }
        private static void TestResultFunctions(Test_SimpleFuncs obj, UClass unrealClass)
        {
            UClass actorClass = GetActorClass();

            TestResultFuncXEquals <sbyte>(4, obj, 1);
            TestResultFuncXEquals <byte>(5, obj, 2);
            TestResultFuncXEquals <short>(6, obj, 3);
            TestResultFuncXEquals <ushort>(7, obj, 4);
            TestResultFuncXEquals <int>(8, obj, 5);
            TestResultFuncXEquals <uint>(9, obj, 6);
            TestResultFuncXEquals <long>(10, obj, 7);
            TestResultFuncXEquals <ulong>(11, obj, 8);
            TestResultFuncXEquals <float>(12.3f, obj, 9);
            TestResultFuncXEquals <double>(13.4, obj, 10);
            Tests.Assert(TestResultFuncX <Test_SimpleDelegate>(obj, 11, false).IsBound, unrealClass, "ResultFunc11");
            Tests.AssertEqual(TestResultFuncX <Test_SimpleMulticastDelegate>(obj, 12, false).Count, 3, unrealClass, "ResultFunc12");
            TestResultFuncXEquals <UObject>(actorClass, obj, 13);
            TestResultFuncXEquals <UObject>(null, obj, 13, true);
            TestResultFuncXEquals <Test_SimpleEnum>(Test_SimpleEnum.Val3, obj, 14);

            var fixedArrayStruct = obj.ResultFunc15();

            Tests.AssertEqual(fixedArrayStruct.Array1[0], 2, unrealClass, "ResultFunc15");
            Tests.AssertEqual(fixedArrayStruct.Array1[1], 5, unrealClass, "ResultFunc15");
            Tests.AssertEqual(fixedArrayStruct.Array1[2], 111, unrealClass, "ResultFunc15");

            Tests.AssertEqual(TestResultFuncX <TSubclassOf <UObject> >(obj, 16, false).Value, actorClass, unrealClass, "ResultFunc16");
            Tests.AssertEqual(TestResultFuncX <TSubclassOf <UObject> >(obj, 16, true), TSubclassOf <UObject> .Null, unrealClass, "ResultFunc16");
            Tests.AssertEqual(TestResultFuncX <TLazyObject <UObject> >(obj, 17, false).Value, actorClass, unrealClass, "ResultFunc17");
            Tests.AssertEqual(TestResultFuncX <TLazyObject <UObject> >(obj, 17, true), TLazyObject <UObject> .Null, unrealClass, "ResultFunc17_Null");
            Tests.AssertEqual(TestResultFuncX <TWeakObject <UObject> >(obj, 18, false).Value, actorClass, unrealClass, "ResultFunc18");
            Tests.AssertEqual(TestResultFuncX <TWeakObject <UObject> >(obj, 18, true), TWeakObject <UObject> .Null, unrealClass, "ResultFunc18_Null");
            Tests.AssertEqual(TestResultFuncX <TSoftClass <UObject> >(obj, 19, false).Value, actorClass, unrealClass, "ResultFunc19");
            Tests.AssertEqual(TestResultFuncX <TSoftClass <UObject> >(obj, 19, true), TSoftClass <UObject> .Null, unrealClass, "ResultFunc19_Null");
            Tests.AssertEqual(TestResultFuncX <TSoftObject <UObject> >(obj, 20, false).Value, actorClass, unrealClass, "ResultFunc20");
            Tests.AssertEqual(TestResultFuncX <TSoftObject <UObject> >(obj, 20, true), TSoftObject <UObject> .Null, unrealClass, "ResultFunc20_Null");
            Tests.AssertEqual(TestResultFuncX <string>(obj, 21, false), "result", unrealClass, "ResultFunc21");
            Tests.AssertEqual(TestResultFuncX <string>(obj, 21, true), string.Empty, unrealClass, "ResultFunc21_Null");
            Tests.AssertEqual(TestResultFuncX <FName>(obj, 22, false), new FName("result"), unrealClass, "ResultFunc22");
        }
Example #20
0
        //public List<FText> Val23;

        public static void Run()
        {
            UScriptStruct unrealStruct = UScriptStruct.GetStruct <Test_SimpleStructTArray>();

            Tests.Assert(unrealStruct != null, "Test_SimpleStructTArray");

            Tests.AssertTArrayProperty <UInt8Property>(unrealStruct, "Val1");
            Tests.AssertTArrayProperty <UByteProperty>(unrealStruct, "Val2");
            Tests.AssertTArrayProperty <UInt16Property>(unrealStruct, "Val3");
            Tests.AssertTArrayProperty <UUInt16Property>(unrealStruct, "Val4");
            Tests.AssertTArrayProperty <UIntProperty>(unrealStruct, "Val5");
            Tests.AssertTArrayProperty <UUInt32Property>(unrealStruct, "Val6");
            Tests.AssertTArrayProperty <UInt64Property>(unrealStruct, "Val7");
            Tests.AssertTArrayProperty <UUInt64Property>(unrealStruct, "Val8");
            Tests.AssertTArrayProperty <UFloatProperty>(unrealStruct, "Val9");
            Tests.AssertTArrayProperty <UDoubleProperty>(unrealStruct, "Val10");
            Tests.AssertTArrayProperty <UDelegateProperty>(unrealStruct, "Val11");
            Tests.AssertTArrayProperty <UMulticastDelegateProperty>(unrealStruct, "Val12");
            Tests.AssertTArrayProperty <UObjectProperty>(unrealStruct, "Val13");
            Tests.AssertTArrayProperty <UEnumProperty>(unrealStruct, "Val14");
            Tests.AssertTArrayProperty <UStructProperty>(unrealStruct, "Val15");
            Tests.AssertTArrayProperty <UClassProperty>(unrealStruct, "Val16");
            Tests.AssertTArrayProperty <ULazyObjectProperty>(unrealStruct, "Val17");
            Tests.AssertTArrayProperty <UWeakObjectProperty>(unrealStruct, "Val18");
            Tests.AssertTArrayProperty <USoftClassProperty>(unrealStruct, "Val19");
            Tests.AssertTArrayProperty <USoftObjectProperty>(unrealStruct, "Val20");
            Tests.AssertTArrayProperty <UStrProperty>(unrealStruct, "Val21");
            Tests.AssertTArrayProperty <UNameProperty>(unrealStruct, "Val22");
            //Tests.AssertTArrayProperty<UTextProperty>(unrealStruct, "Val23");

            Test_SimpleStructTArray defaultValue = StructDefault <Test_SimpleStructTArray> .Value;

            // Check all lists default to empty (they will be constructed by the marshaler)
            foreach (FieldInfo field in defaultValue.GetType().GetFields())
            {
                Tests.AssertEqual((field.GetValue(defaultValue) as System.Collections.IList).Count, 0,
                                  unrealStruct, field.Name);
            }
        }
Example #21
0
        public static void AssertMapTest(UObject obj,
                                         IDictionary <long, string> p1,
                                         IDictionary <UObject, string> p2,
                                         IDictionary <Test_SimpleEnum, string> p3,
                                         IDictionary <Test_SimpleBlittableStruct, UObject> p4,
                                         IDictionary <TSoftClass <UObject>, TSoftClass <UObject> > p5,
                                         IDictionary <string, string> p6,
                                         IDictionary <FName, string> p7)
        {
            UClass unrealClass = obj.GetClass();

            Tests.AssertEqual(p1[10], "tp1", unrealClass, "AssertMapTest.p1");
            Tests.AssertEqual(p2[Tests.ActorClass], "tp2", unrealClass, "AssertMapTest.p2");
            Tests.AssertEqual(p3[Test_SimpleEnum.Val3], "tp3", unrealClass, "AssertMapTest.p3");
            Tests.AssertEqual(p4[new Test_SimpleBlittableStruct()
                                 {
                                     Val3 = 99
                                 }], Tests.ActorClass, unrealClass, "AssertMapTest.p4");
            Tests.AssertEqual(p5[TSoftClass <UObject> .Null], new TSoftClass <UObject>(Tests.ActorClass), unrealClass, "AssertMapTest.p5");
            Tests.AssertEqual(p5[new TSoftClass <UObject>(Tests.ActorClass)], TSoftClass <UObject> .Null, unrealClass, "AssertMapTest.p5");
            Tests.AssertEqual(p6["test123"], "tp6", unrealClass, "AssertMapTest.p6");
            Tests.AssertEqual(p7[new FName("test1234")], "tp7", unrealClass, "AssertMapTest.p7");
        }
Example #22
0
        public static void Run()
        {
            // Another object for testing
            Test_SimpleClass1 otherObj = UObject.NewObject <Test_SimpleClass1>();

            UClass unrealClass = UClass.GetClass <Test_FixedArrayInClass>();

            Tests.Assert(unrealClass != null, "Test_FixedArrayInClass");

            Tests.AssertFixedArrayProperty <UInt8Property>(unrealClass, "Array1", 3);
            Tests.AssertFixedArrayProperty <UByteProperty>(unrealClass, "Array2", 4);
            Tests.AssertFixedArrayProperty <UInt16Property>(unrealClass, "Array3", 5);
            Tests.AssertFixedArrayProperty <UUInt16Property>(unrealClass, "Array4", 6);
            Tests.AssertFixedArrayProperty <UIntProperty>(unrealClass, "Array5", 7);
            Tests.AssertFixedArrayProperty <UUInt32Property>(unrealClass, "Array6", 8);
            Tests.AssertFixedArrayProperty <UInt64Property>(unrealClass, "Array7", 9);
            Tests.AssertFixedArrayProperty <UUInt64Property>(unrealClass, "Array8", 10);
            Tests.AssertFixedArrayProperty <UFloatProperty>(unrealClass, "Array9", 11);
            Tests.AssertFixedArrayProperty <UDoubleProperty>(unrealClass, "Array10", 12);
            Tests.AssertFixedArrayProperty <UDelegateProperty>(unrealClass, "Array11", 13);
            Tests.AssertFixedArrayProperty <UMulticastDelegateProperty>(unrealClass, "Array12", 14);
            Tests.AssertFixedArrayProperty <UObjectProperty>(unrealClass, "Array13", 15);
            Tests.AssertFixedArrayProperty <UEnumProperty>(unrealClass, "Array14", 16);
            Tests.AssertFixedArrayProperty <UStructProperty>(unrealClass, "Array15", 17);
            Tests.AssertFixedArrayProperty <UClassProperty>(unrealClass, "Array16", 18);
            Tests.AssertFixedArrayProperty <ULazyObjectProperty>(unrealClass, "Array17", 19);
            Tests.AssertFixedArrayProperty <UWeakObjectProperty>(unrealClass, "Array18", 20);
            Tests.AssertFixedArrayProperty <USoftClassProperty>(unrealClass, "Array19", 21);
            Tests.AssertFixedArrayProperty <USoftObjectProperty>(unrealClass, "Array20", 22);
            Tests.AssertFixedArrayProperty <UStrProperty>(unrealClass, "Array21", 23);
            Tests.AssertFixedArrayProperty <UNameProperty>(unrealClass, "Array22", 24);
            //Tests.AssertFixedArrayProperty<UTextProperty>(unrealClass, "Array23", 25);

            Test_FixedArrayInClass obj = UObject.NewObject <Test_FixedArrayInClass>();

            Tests.AssertEqual(obj.Array1.Length, 3, unrealClass, ".Array1");
            Tests.AssertEqual(obj.Array2.Length, 4, unrealClass, ".Array2");
            Tests.AssertEqual(obj.Array3.Length, 5, unrealClass, ".Array3");
            Tests.AssertEqual(obj.Array4.Length, 6, unrealClass, ".Array4");
            Tests.AssertEqual(obj.Array5.Length, 7, unrealClass, ".Array5");
            Tests.AssertEqual(obj.Array6.Length, 8, unrealClass, ".Array6");
            Tests.AssertEqual(obj.Array7.Length, 9, unrealClass, ".Array7");
            Tests.AssertEqual(obj.Array8.Length, 10, unrealClass, ".Array8");
            Tests.AssertEqual(obj.Array9.Length, 11, unrealClass, ".Array9");
            Tests.AssertEqual(obj.Array10.Length, 12, unrealClass, ".Array10");
            Tests.AssertEqual(obj.Array11.Length, 13, unrealClass, ".Array11");
            Tests.AssertEqual(obj.Array12.Length, 14, unrealClass, ".Array12");
            Tests.AssertEqual(obj.Array13.Length, 15, unrealClass, ".Array13");
            Tests.AssertEqual(obj.Array14.Length, 16, unrealClass, ".Array14");
            Tests.AssertEqual(obj.Array15.Length, 17, unrealClass, ".Array15");
            Tests.AssertEqual(obj.Array16.Length, 18, unrealClass, ".Array16");
            Tests.AssertEqual(obj.Array17.Length, 19, unrealClass, ".Array17");
            Tests.AssertEqual(obj.Array18.Length, 20, unrealClass, ".Array18");
            Tests.AssertEqual(obj.Array19.Length, 21, unrealClass, ".Array19");
            Tests.AssertEqual(obj.Array20.Length, 22, unrealClass, ".Array20");
            Tests.AssertEqual(obj.Array21.Length, 23, unrealClass, ".Array21");
            Tests.AssertEqual(obj.Array22.Length, 24, unrealClass, ".Array22");

            BeginMember("Array1");
            for (int i = 0; i < obj.Array1.Length; i++)
            {
                Tests.AssertEqual(obj.Array1[i], 0, unrealClass, currentMemberName);
                obj.Array1[i] += 5;
                Tests.AssertEqual(obj.Array1[i], 5, unrealClass, currentMemberName);
                obj.Array1[i] += 10;
                Tests.AssertEqual(obj.Array1[i], 15, unrealClass, currentMemberName);
            }

            BeginMember("Array2");
            for (int i = 0; i < obj.Array2.Length; i++)
            {
                Tests.AssertEqual(obj.Array2[i], 0, unrealClass, currentMemberName);
                obj.Array2[i] += 8;
                Tests.AssertEqual(obj.Array2[i], 8, unrealClass, currentMemberName);
                obj.Array2[i] += 3;
                Tests.AssertEqual(obj.Array2[i], 11, unrealClass, currentMemberName);
            }

            BeginMember("Array3");
            for (int i = 0; i < obj.Array2.Length; i++)
            {
                Tests.AssertEqual(obj.Array3[i], 0, unrealClass, currentMemberName);
                obj.Array3[i] += 4;
                Tests.AssertEqual(obj.Array3[i], 4, unrealClass, currentMemberName);
                obj.Array3[i] += 5;
                Tests.AssertEqual(obj.Array3[i], 9, unrealClass, currentMemberName);
            }

            BeginMember("Array4");
            for (int i = 0; i < obj.Array4.Length; i++)
            {
                Tests.AssertEqual(obj.Array4[i], 0, unrealClass, currentMemberName);
                obj.Array4[i] += 7;
                Tests.AssertEqual(obj.Array4[i], 7, unrealClass, currentMemberName);
                obj.Array4[i] += 3;
                Tests.AssertEqual(obj.Array4[i], 10, unrealClass, currentMemberName);
            }

            BeginMember("Array5");
            for (int i = 0; i < obj.Array5.Length; i++)
            {
                Tests.AssertEqual(obj.Array5[i], 0, unrealClass, currentMemberName);
                obj.Array5[i] += 2;
                Tests.AssertEqual(obj.Array5[i], 2, unrealClass, currentMemberName);
                obj.Array5[i] += 6;
                Tests.AssertEqual(obj.Array5[i], 8, unrealClass, currentMemberName);
            }

            BeginMember("Array6");
            for (int i = 0; i < obj.Array6.Length; i++)
            {
                Tests.AssertEqual(obj.Array6[i], 0u, unrealClass, currentMemberName);
                obj.Array6[i] += 3;
                Tests.AssertEqual(obj.Array6[i], 3u, unrealClass, currentMemberName);
                obj.Array6[i] += 7;
                Tests.AssertEqual(obj.Array6[i], 10u, unrealClass, currentMemberName);
            }

            BeginMember("Array7");
            for (int i = 0; i < obj.Array7.Length; i++)
            {
                Tests.AssertEqual(obj.Array7[i], 0, unrealClass, currentMemberName);
                obj.Array7[i] += 1;
                Tests.AssertEqual(obj.Array7[i], 1, unrealClass, currentMemberName);
                obj.Array7[i] += 1;
                Tests.AssertEqual(obj.Array7[i], 2, unrealClass, currentMemberName);
            }

            BeginMember("Array8");
            for (int i = 0; i < obj.Array8.Length; i++)
            {
                Tests.AssertEqual(obj.Array8[i], 0u, unrealClass, currentMemberName);
                obj.Array8[i] += 3;
                Tests.AssertEqual(obj.Array8[i], 3u, unrealClass, currentMemberName);
                obj.Array8[i] += 6;
                Tests.AssertEqual(obj.Array8[i], 9u, unrealClass, currentMemberName);
            }

            BeginMember("Array9");
            for (int i = 0; i < obj.Array9.Length; i++)
            {
                Tests.AssertEqual(obj.Array9[i], 0, unrealClass, currentMemberName);
                obj.Array9[i] += 1.5f;
                Tests.AssertEqual(obj.Array9[i], 1.5f, unrealClass, currentMemberName);
                obj.Array9[i] += 2.3f;
                Tests.AssertEqual(obj.Array9[i], 3.8f, unrealClass, currentMemberName);
            }

            BeginMember("Array10");
            for (int i = 0; i < obj.Array10.Length; i++)
            {
                Tests.AssertEqual(obj.Array10[i], 0, unrealClass, currentMemberName);
                obj.Array10[i] += 3.1;
                Tests.AssertEqual(obj.Array10[i], 3.1, unrealClass, currentMemberName);
                obj.Array10[i] += 1.1;
                Tests.AssertEqual(obj.Array10[i], 4.2, unrealClass, currentMemberName);
            }

            BeginMember("Array11");
            for (int i = 0; i < obj.Array11.Length; i++)
            {
                // Need to read the delegate, modify the state and write it back (can't modify directly
                // since each access to the array index will return a new delegate) - (this is because if the
                // delegate held onto the collection index address there is no guarantee it still sits at that address
                // as the collection changes) - (for fixed arrays this is valid but fixed arrays are going to be
                // rarely used anyway so it isn't really worth working in any improvement for it)
                var del = obj.Array11[i];
                Tests.Assert(!del.IsBound, unrealClass, currentMemberName);
                del.Bind(obj.SimpleFunc);
                Tests.Assert(del.IsBound, unrealClass, currentMemberName);
                obj.Array11[i] = del;

                int arg = 3;
                obj.Array11[i].Invoke(ref arg);
                Tests.AssertEqual(arg, 4, unrealClass, currentMemberName);
            }

            BeginMember("Array12");
            for (int i = 0; i < obj.Array12.Length; i++)
            {
                var del = obj.Array12[i];
                Tests.Assert(!del.IsBound, unrealClass, currentMemberName);
                del.Bind(obj.SimpleFunc1);
                del.Bind(obj.SimpleFunc2);
                Tests.Assert(del.IsBound, unrealClass, currentMemberName);
                Tests.Assert(del.Count == 2, unrealClass, currentMemberName);
                obj.Array12[i] = del;

                double arg = 0.5;
                obj.Array12[i].Invoke(ref arg);
                Tests.AssertEqual(arg, 2.6, unrealClass, currentMemberName);
            }

            BeginMember("Array13");
            for (int i = 0; i < obj.Array13.Length; i++)
            {
                Tests.AssertEqual(obj.Array13[i], null, unrealClass, currentMemberName);
            }
            obj.Array13[0] = obj;
            obj.Array13[3] = otherObj;
            Tests.AssertEqual(obj.Array13[0], obj, unrealClass, currentMemberName);
            Tests.AssertEqual(obj.Array13[3], otherObj, unrealClass, currentMemberName);
            for (int i = 0; i < obj.Array13.Length; i++)
            {
                if (i != 0 && i != 3)
                {
                    Tests.AssertEqual(obj.Array13[i], null, unrealClass, currentMemberName);
                }
            }
            obj.Array13[0] = null;
            obj.Array13[3] = null;
            for (int i = 0; i < obj.Array13.Length; i++)
            {
                Tests.AssertEqual(obj.Array13[i], null, unrealClass, currentMemberName);
            }

            BeginMember("Array14");
            for (int i = 0; i < obj.Array14.Length; i++)
            {
                Tests.AssertEqual(obj.Array14[i], default(Test_SimpleEnum), unrealClass, currentMemberName);
            }
            obj.Array14[1] = Test_SimpleEnum.Val3;
            obj.Array14[4] = Test_SimpleEnum.Val2;
            Tests.AssertEqual(obj.Array14[1], Test_SimpleEnum.Val3, unrealClass, currentMemberName);
            Tests.AssertEqual(obj.Array14[4], Test_SimpleEnum.Val2, unrealClass, currentMemberName);
            for (int i = 0; i < obj.Array13.Length; i++)
            {
                if (i != 1 && i != 4)
                {
                    Tests.AssertEqual(obj.Array14[i], default(Test_SimpleEnum), unrealClass, currentMemberName);
                }
            }

            // This is going to be slow, it has do an entire copy of the struct (which has many arrays which
            // need to be fully copied)
            BeginMember("Array15");
            // Read the struct at index 0, modify state, write it back, then validate
            var v1 = obj.Array15[0];

            v1.Array5[3]   = 1;
            v1.Array5[4]   = 2;
            v1.Array7[5]   = 3;
            v1.Array7[6]   = 4;
            obj.Array15[0] = v1;
            v1             = obj.Array15[0];
            Tests.AssertEqual(v1.Array5[1], 0, unrealClass, currentMemberName);
            Tests.AssertEqual(v1.Array5[3], 1, unrealClass, currentMemberName);
            Tests.AssertEqual(v1.Array5[4], 2, unrealClass, currentMemberName);
            Tests.AssertEqual(v1.Array7[1], 0, unrealClass, currentMemberName);
            Tests.AssertEqual(v1.Array7[5], 3, unrealClass, currentMemberName);
            Tests.AssertEqual(v1.Array7[6], 4, unrealClass, currentMemberName);

            BeginMember("Array16");
            for (int i = 0; i < obj.Array16.Length; i++)
            {
                Tests.AssertEqual(obj.Array16[i].Value, null, unrealClass, currentMemberName);
            }
            // same test but two different ways of doing the assignment
            var subclassOf = obj.Array16[1];

            subclassOf.Value = UClass.GetClass <Test_FixedArrayInClass>();
            obj.Array16[1]   = subclassOf;
            Tests.AssertEqual(obj.Array16[1].Value, UClass.GetClass <Test_FixedArrayInClass>(), unrealClass, currentMemberName);
            obj.Array16[2] = new TSubclassOf <UObject>(UClass.GetClass <Test_SimpleClass1>());
            Tests.AssertEqual(obj.Array16[2].Value, UClass.GetClass <Test_SimpleClass1>(), unrealClass, currentMemberName);
            obj.Array16[1] = TSubclassOf <UObject> .Null;
            obj.Array16[2] = TSubclassOf <UObject> .Null;
            Tests.AssertEqual(obj.Array16[1].Value, null, unrealClass, currentMemberName);
            Tests.AssertEqual(obj.Array16[2].Value, null, unrealClass, currentMemberName);

            BeginMember("Array17");
            for (int i = 0; i < obj.Array17.Length; i++)
            {
                Tests.AssertEqual(obj.Array17[i].Value, null, unrealClass, currentMemberName);
            }
            // same test but two different ways of doing the assignment
            var lazyObject = obj.Array17[3];

            lazyObject.Value = obj;
            obj.Array17[3]   = lazyObject;
            Tests.AssertEqual(obj.Array17[3].Value, obj, unrealClass, currentMemberName);
            obj.Array17[4] = new TLazyObject <UObject>(otherObj);
            Tests.AssertEqual(obj.Array17[4].Value, otherObj, unrealClass, currentMemberName);
            obj.Array17[3] = TLazyObject <UObject> .Null;
            obj.Array17[4] = TLazyObject <UObject> .Null;
            Tests.AssertEqual(obj.Array17[3].Value, null, unrealClass, currentMemberName);
            Tests.AssertEqual(obj.Array17[4].Value, null, unrealClass, currentMemberName);

            BeginMember("Array18");
            for (int i = 0; i < obj.Array18.Length; i++)
            {
                Tests.AssertEqual(obj.Array18[i].Value, null, unrealClass, currentMemberName);
            }
            var weakObject = obj.Array18[5];

            weakObject.Value = otherObj;
            obj.Array18[5]   = weakObject;
            Tests.AssertEqual(obj.Array18[5].Value, otherObj, unrealClass, currentMemberName);
            obj.Array18[6] = new TWeakObject <UObject>(obj);
            Tests.AssertEqual(obj.Array18[6].Value, obj, unrealClass, currentMemberName);
            obj.Array18[5] = TWeakObject <UObject> .Null;
            obj.Array18[6] = TWeakObject <UObject> .Null;
            Tests.AssertEqual(obj.Array18[5].Value, null, unrealClass, currentMemberName);
            Tests.AssertEqual(obj.Array18[6].Value, null, unrealClass, currentMemberName);

            BeginMember("Array19");
            for (int i = 0; i < obj.Array19.Length; i++)
            {
                Tests.AssertEqual(obj.Array19[i].Value, null, unrealClass, currentMemberName);
            }
            var softclassOf = obj.Array19[7];

            softclassOf.Value = UClass.GetClass <Test_FixedArrayInClass>();
            obj.Array19[7]    = softclassOf;
            Tests.AssertEqual(obj.Array19[7].Value, UClass.GetClass <Test_FixedArrayInClass>(), unrealClass, currentMemberName);
            obj.Array19[8] = new TSoftClass <UObject>(UClass.GetClass <Test_SimpleClass1>());
            Tests.AssertEqual(obj.Array19[8].Value, UClass.GetClass <Test_SimpleClass1>(), unrealClass, currentMemberName);
            obj.Array19[7] = TSoftClass <UObject> .Null;
            obj.Array19[8] = TSoftClass <UObject> .Null;
            Tests.AssertEqual(obj.Array19[7].Value, null, unrealClass, currentMemberName);
            Tests.AssertEqual(obj.Array19[8].Value, null, unrealClass, currentMemberName);

            BeginMember("Array20");
            for (int i = 0; i < obj.Array20.Length; i++)
            {
                Tests.AssertEqual(obj.Array20[i].Value, null, unrealClass, currentMemberName);
            }
            var softObject = obj.Array20[9];

            softObject.Value = UClass.GetClass <Test_FixedArrayInClass>();
            obj.Array20[9]   = softObject;
            Tests.AssertEqual(obj.Array20[9].Value, UClass.GetClass <Test_FixedArrayInClass>(), unrealClass, currentMemberName);
            obj.Array20[10] = new TSoftObject <UObject>(UClass.GetClass <Test_SimpleClass1>());
            Tests.AssertEqual(obj.Array20[10].Value, UClass.GetClass <Test_SimpleClass1>(), unrealClass, currentMemberName);
            obj.Array20[9]  = TSoftObject <UObject> .Null;
            obj.Array20[10] = TSoftObject <UObject> .Null;
            Tests.AssertEqual(obj.Array20[9].Value, null, unrealClass, currentMemberName);
            Tests.AssertEqual(obj.Array20[10].Value, null, unrealClass, currentMemberName);

            BeginMember("Array21");
            for (int i = 0; i < obj.Array21.Length; i++)
            {
                Tests.AssertEqual(obj.Array21[i], string.Empty, unrealClass, currentMemberName);
            }
            obj.Array21[2] = "Str1";
            Tests.AssertEqual(obj.Array21[2], "Str1", unrealClass, currentMemberName);
            obj.Array21[2] = null;// null will be "" when read back
            Tests.AssertEqual(obj.Array21[2], string.Empty, unrealClass, currentMemberName);
            obj.Array21[3] = "Str2";
            Tests.AssertEqual(obj.Array21[3], "Str2", unrealClass, currentMemberName);
            obj.Array21[3] = "";
            Tests.AssertEqual(obj.Array21[3], "", unrealClass, currentMemberName);

            BeginMember("Array22");
            for (int i = 0; i < obj.Array22.Length; i++)
            {
                Tests.AssertEqual(obj.Array22[i], FName.None, unrealClass, currentMemberName);
            }
            obj.Array22[4] = new FName("Name1");
            Tests.AssertEqual(obj.Array22[4], new FName("Name1"), unrealClass, currentMemberName);
            obj.Array22[4] = default(FName);// Same as FName.None
            Tests.AssertEqual(obj.Array22[4], FName.None, unrealClass, currentMemberName);
            obj.Array22[5] = new FName("Name2");
            Tests.AssertEqual(obj.Array22[5], new FName("Name2"), unrealClass, currentMemberName);
            obj.Array22[5] = new FName("Name2Changed");
            Tests.AssertEqual(obj.Array22[5], new FName("Name2Changed"), unrealClass, currentMemberName);

            RunParamTests(obj);
        }
Example #23
0
        public static void Run()
        {
            UClass unrealClass = UClass.GetClass <Test_SimpleClassTMap>();

            Tests.Assert(unrealClass != null, "Test_SimpleClassTMap");

            Tests.AssertTMapProperty <UInt8Property, UNameProperty>(unrealClass, "Val1");
            Tests.AssertTMapProperty <UByteProperty, UStrProperty>(unrealClass, "Val2");
            Tests.AssertTMapProperty <UInt16Property, USoftObjectProperty>(unrealClass, "Val3");
            Tests.AssertTMapProperty <UUInt16Property, USoftClassProperty>(unrealClass, "Val4");
            Tests.AssertTMapProperty <UIntProperty, USoftClassProperty>(unrealClass, "Val5");
            Tests.AssertTMapProperty <UUInt32Property, UWeakObjectProperty>(unrealClass, "Val6");
            Tests.AssertTMapProperty <UInt64Property, ULazyObjectProperty>(unrealClass, "Val7");
            Tests.AssertTMapProperty <UUInt64Property, UClassProperty>(unrealClass, "Val8");
            Tests.AssertTMapProperty <UFloatProperty, UStructProperty>(unrealClass, "Val9");
            Tests.AssertTMapProperty <UDoubleProperty, UEnumProperty>(unrealClass, "Val10");
            //Tests.AssertTMapProperty<UDelegateProperty, UObjectProperty>(unrealClass, "Val11");
            //Tests.AssertTMapProperty<UMulticastDelegateProperty, UMulticastDelegateProperty>(unrealClass, "Val12");
            Tests.AssertTMapProperty <UObjectProperty, UDelegateProperty>(unrealClass, "Val13");
            Tests.AssertTMapProperty <UEnumProperty, UDoubleProperty>(unrealClass, "Val14");
            Tests.AssertTMapProperty <UStructProperty, UFloatProperty>(unrealClass, "Val15");
            Tests.AssertTMapProperty <UClassProperty, UUInt64Property>(unrealClass, "Val16");
            Tests.AssertTMapProperty <ULazyObjectProperty, UInt64Property>(unrealClass, "Val17");
            //Tests.AssertTMapProperty<UWeakObjectProperty, UUInt32Property>(unrealClass, "Val18");
            Tests.AssertTMapProperty <USoftClassProperty, UIntProperty>(unrealClass, "Val19");
            Tests.AssertTMapProperty <USoftObjectProperty, UUInt16Property>(unrealClass, "Val20");
            Tests.AssertTMapProperty <UStrProperty, UInt16Property>(unrealClass, "Val21");
            Tests.AssertTMapProperty <UNameProperty, UByteProperty>(unrealClass, "Val22");
            //Tests.AssertTSetProperty<UTextProperty>(unrealClass, "Val23");

            Test_SimpleClassTMap obj = NewObject <Test_SimpleClassTMap>();

            obj.Val1.Add(100, new FName("test1"));
            Tests.AssertEqual(obj.Val1[100], new FName("test1"), unrealClass, "Val1");
            obj.Val1.Add(101, new FName("test2"));
            Tests.AssertEqual(obj.Val1[101], new FName("test2"), unrealClass, "Val1");
            obj.Val1.Add(101, new FName("test3"));
            IDictionary <sbyte, FName> test = obj.Val1;

            Tests.AssertEqual(obj.Val1[101], new FName("test3"), unrealClass, "Val1");
            Tests.AssertEqual(obj.Val1.Count, 2, unrealClass, "Val1");
            obj.Val1.Remove(101);
            Tests.AssertEqual(obj.Val1.Count, 1, unrealClass, "Val1");
            obj.Val1.Clear();
            Tests.AssertEqual(obj.Val1.Count, 0, unrealClass, "Val1");

            obj.Val2.Add(102, "test4");
            obj.Val2.Add(103, "test5");
            Tests.AssertEqual(obj.Val2[102], "test4", unrealClass, "Val2");
            Tests.AssertEqual(obj.Val2[103], "test5", unrealClass, "Val2");
            Tests.AssertEqual(obj.Val2.Count, 2, unrealClass, "Val2");

            obj.Val3.Add(103, new TSoftObject <UObject>(Tests.ActorClass));
            obj.Val3.Add(104, TSoftObject <UObject> .Null);
            Tests.AssertEqual(obj.Val3[103], new TSoftObject <UObject>(Tests.ActorClass), unrealClass, "Val3");
            Tests.AssertEqual(obj.Val3[104], TSoftObject <UObject> .Null, unrealClass, "Val3");
            obj.Val3[103] = TSoftObject <UObject> .Null;
            obj.Val3[104] = new TSoftObject <UObject>(Tests.ActorClass);
            Tests.AssertEqual(obj.Val3[103], TSoftObject <UObject> .Null, unrealClass, "Val3");
            Tests.AssertEqual(obj.Val3[104], new TSoftObject <UObject>(Tests.ActorClass), unrealClass, "Val3");

            obj.Val4.Add(105, new TSoftClass <UObject>(Tests.ActorClass));
            obj.Val4.Add(106, TSoftClass <UObject> .Null);
            Tests.AssertEqual(obj.Val4[105], new TSoftClass <UObject>(Tests.ActorClass), unrealClass, "Val4");
            Tests.AssertEqual(obj.Val4[106], TSoftClass <UObject> .Null, unrealClass, "Val4");

            obj.Val5.Add(107, new TSoftClass <UObject>(Tests.ActorClass));
            obj.Val5.Add(108, TSoftClass <UObject> .Null);
            Tests.AssertEqual(obj.Val5[107], new TSoftClass <UObject>(Tests.ActorClass), unrealClass, "Val5");
            Tests.AssertEqual(obj.Val5[108], TSoftClass <UObject> .Null, unrealClass, "Val5");

            obj.Val6.Add(109, new TWeakObject <UObject>(Tests.ActorClass));
            obj.Val6.Add(110, TWeakObject <UObject> .Null);
            Tests.AssertEqual(obj.Val6[109], new TWeakObject <UObject>(Tests.ActorClass), unrealClass, "Val6");
            Tests.AssertEqual(obj.Val6[110], TWeakObject <UObject> .Null, unrealClass, "Val6");

            obj.Val7.Add(111, new TLazyObject <UObject>(Tests.ActorClass));
            obj.Val7.Add(112, TLazyObject <UObject> .Null);
            Tests.AssertEqual(obj.Val7[111], new TLazyObject <UObject>(Tests.ActorClass), unrealClass, "Val7");
            Tests.AssertEqual(obj.Val7[112], TLazyObject <UObject> .Null, unrealClass, "Val7");

            obj.Val8.Add(113, new TSubclassOf <UObject>(Tests.ActorClass));
            obj.Val8.Add(114, TSubclassOf <UObject> .Null);
            Tests.AssertEqual(obj.Val8[113], new TSubclassOf <UObject>(Tests.ActorClass), unrealClass, "Val8");
            Tests.AssertEqual(obj.Val8[114], TSubclassOf <UObject> .Null, unrealClass, "Val8");

            Test_SimpleBlittableStruct blitt1 = StructDefault <Test_SimpleBlittableStruct> .Value;

            blitt1.Val1 = 10;
            blitt1.Val2 = 11;
            obj.Val9.Add(115.5f, blitt1);
            obj.Val9.Add(116.5f, default(Test_SimpleBlittableStruct));
            Tests.AssertEqual(obj.Val9[115.5f], blitt1, unrealClass, "Val9");
            Tests.AssertEqual(obj.Val9[116.5f], default(Test_SimpleBlittableStruct), unrealClass, "Val9");

            obj.Val10.Add(117.2, Test_SimpleEnum.Val2);
            obj.Val10.Add(118.2, Test_SimpleEnum.Val3);
            Tests.AssertEqual(obj.Val10[117.2], Test_SimpleEnum.Val2, unrealClass, "Val10");
            Tests.AssertEqual(obj.Val10[118.2], Test_SimpleEnum.Val3, unrealClass, "Val10");

            Test_SimpleDelegate simpleDelegate = new Test_SimpleDelegate();

            simpleDelegate.Bind(obj.BindSimpleDelegate);
            obj.Val13.Add(Tests.ActorClass, simpleDelegate);
            obj.Val13.Add(null, null);
            Tests.Assert(obj.Val13[Tests.ActorClass].IsTargetBound(obj, new FName("BindSimpleDelegate")), unrealClass, "Val13");
            Tests.Assert(!obj.Val13[null].IsBound, unrealClass, "Val13");

            obj.Val14.Add(Test_SimpleEnum.Val3, 0.3);
            obj.Val14.Add(Test_SimpleEnum.Val2, 0.6);
            Tests.AssertEqual(obj.Val14[Test_SimpleEnum.Val3], 0.3, unrealClass, "Val14");
            Tests.AssertEqual(obj.Val14[Test_SimpleEnum.Val2], 0.6, unrealClass, "Val14");

            obj.Val15.Add(blitt1, 0.4f);
            obj.Val15.Add(default(Test_SimpleBlittableStruct), 0.8f);
            Tests.AssertEqual(obj.Val15[blitt1], 0.4f, unrealClass, "Val15");
            Tests.AssertEqual(obj.Val15[default(Test_SimpleBlittableStruct)], 0.8f, unrealClass, "Val15");

            obj.Val16.Add(new TSubclassOf <UObject>(Tests.ActorClass), 22u);
            obj.Val16.Add(TSubclassOf <UObject> .Null, 24u);
            Tests.AssertEqual(obj.Val16[new TSubclassOf <UObject>(Tests.ActorClass)], 22u, unrealClass, "Val16");
            Tests.AssertEqual(obj.Val16[TSubclassOf <UObject> .Null], 24u, unrealClass, "Val16");

            obj.Val17.Add(new TLazyObject <UObject>(Tests.ActorClass), 25);
            obj.Val17.Add(TLazyObject <UObject> .Null, 26);
            Tests.AssertEqual(obj.Val17[new TLazyObject <UObject>(Tests.ActorClass)], 25, unrealClass, "Val17");
            Tests.AssertEqual(obj.Val17[TLazyObject <UObject> .Null], 26, unrealClass, "Val17");

            obj.Val19.Add(new TSoftClass <UObject>(Tests.ActorClass), 29);
            obj.Val19.Add(TSoftClass <UObject> .Null, 30);
            Tests.AssertEqual(obj.Val19[new TSoftClass <UObject>(Tests.ActorClass)], 29, unrealClass, "Val19");
            Tests.AssertEqual(obj.Val19[TSoftClass <UObject> .Null], 30, unrealClass, "Val19");

            obj.Val20.Add(new TSoftObject <UObject>(Tests.ActorClass), 31);
            obj.Val20.Add(TSoftObject <UObject> .Null, 32);
            Tests.AssertEqual(obj.Val20[new TSoftObject <UObject>(Tests.ActorClass)], 31, unrealClass, "Val20");
            Tests.AssertEqual(obj.Val20[TSoftObject <UObject> .Null], 32, unrealClass, "Val20");

            obj.Val21.Add("test1", 33);
            obj.Val21.Add("test2", 34);
            Tests.AssertEqual(obj.Val21["test1"], 33, unrealClass, "Val21");
            Tests.AssertEqual(obj.Val21["test2"], 34, unrealClass, "Val21");

            obj.Val22.Add(new FName("test3"), 35);
            obj.Val22.Add(new FName("test4"), 36);
            Tests.AssertEqual(obj.Val22[new FName("test3")], 35, unrealClass, "Val22");
            Tests.AssertEqual(obj.Val22[new FName("test4")], 36, unrealClass, "Val22");
        }
Example #24
0
        public static void Run()
        {
            UClass unrealClass = UClass.GetClass <Test_SimpleClassTSet>();

            Tests.Assert(unrealClass != null, "Test_SimpleClassTSet");

            Tests.AssertTSetProperty <UInt8Property>(unrealClass, "Val1");
            Tests.AssertTSetProperty <UByteProperty>(unrealClass, "Val2");
            Tests.AssertTSetProperty <UInt16Property>(unrealClass, "Val3");
            Tests.AssertTSetProperty <UUInt16Property>(unrealClass, "Val4");
            Tests.AssertTSetProperty <UIntProperty>(unrealClass, "Val5");
            Tests.AssertTSetProperty <UUInt32Property>(unrealClass, "Val6");
            Tests.AssertTSetProperty <UInt64Property>(unrealClass, "Val7");
            Tests.AssertTSetProperty <UUInt64Property>(unrealClass, "Val8");
            Tests.AssertTSetProperty <UFloatProperty>(unrealClass, "Val9");
            Tests.AssertTSetProperty <UDoubleProperty>(unrealClass, "Val10");
            //Tests.AssertTSetProperty<UDelegateProperty>(unrealClass, "Val11");
            //Tests.AssertTSetProperty<UMulticastDelegateProperty>(unrealClass, "Val12");
            Tests.AssertTSetProperty <UObjectProperty>(unrealClass, "Val13");
            Tests.AssertTSetProperty <UEnumProperty>(unrealClass, "Val14");
            Tests.AssertTSetProperty <UStructProperty>(unrealClass, "Val15");
            Tests.AssertTSetProperty <UClassProperty>(unrealClass, "Val16");
            Tests.AssertTSetProperty <ULazyObjectProperty>(unrealClass, "Val17");
            //Tests.AssertTSetProperty<UWeakObjectProperty>(unrealClass, "Val18");
            Tests.AssertTSetProperty <USoftClassProperty>(unrealClass, "Val19");
            Tests.AssertTSetProperty <USoftObjectProperty>(unrealClass, "Val20");
            Tests.AssertTSetProperty <UStrProperty>(unrealClass, "Val21");
            Tests.AssertTSetProperty <UNameProperty>(unrealClass, "Val22");
            //Tests.AssertTSetProperty<UTextProperty>(unrealClass, "Val23");

            Test_SimpleClassTSet obj = NewObject <Test_SimpleClassTSet>();

            obj.Val1.Add(100);
            Tests.Assert(obj.Val1.Contains(100), unrealClass, "Val1");
            obj.Val1.Add(101);
            Tests.Assert(obj.Val1.Contains(101), unrealClass, "Val1");
            Tests.Assert(!obj.Val1.Add(101), unrealClass, "Val1");
            Tests.AssertEqual(obj.Val1.Count, 2, unrealClass, "Val1");
            obj.Val1.Remove(101);
            Tests.AssertEqual(obj.Val1.Count, 1, unrealClass, "Val1");
            obj.Val1.Clear();
            Tests.AssertEqual(obj.Val1.Count, 0, unrealClass, "Val1");

            obj.Val2.Add(102);
            obj.Val2.Add(103);
            Tests.Assert(obj.Val2.Contains(102), unrealClass, "Val2");
            Tests.Assert(obj.Val2.Contains(102), unrealClass, "Val2");
            Tests.AssertEqual(obj.Val2.Count, 2, unrealClass, "Val2");

            obj.Val3.Add(103);
            obj.Val3.Add(104);
            Tests.Assert(obj.Val3.Contains(103), unrealClass, "Val3");
            Tests.Assert(obj.Val3.Contains(104), unrealClass, "Val3");

            obj.Val4.Add(105);
            obj.Val4.Add(106);
            Tests.Assert(obj.Val4.Contains(105), unrealClass, "Val4");
            Tests.Assert(obj.Val4.Contains(106), unrealClass, "Val4");

            obj.Val5.Add(107);
            obj.Val5.Add(108);
            Tests.Assert(obj.Val5.Contains(107), unrealClass, "Val5");
            Tests.Assert(obj.Val5.Contains(108), unrealClass, "Val5");

            obj.Val6.Add(109);
            obj.Val6.Add(110);
            Tests.Assert(obj.Val6.Contains(109), unrealClass, "Val6");
            Tests.Assert(obj.Val6.Contains(110), unrealClass, "Val6");

            obj.Val7.Add(111);
            obj.Val7.Add(112);
            Tests.Assert(obj.Val7.Contains(111), unrealClass, "Val7");
            Tests.Assert(obj.Val7.Contains(112), unrealClass, "Val7");

            obj.Val8.Add(113);
            obj.Val8.Add(114);
            Tests.Assert(obj.Val8.Contains(113), unrealClass, "Val8");
            Tests.Assert(obj.Val8.Contains(114), unrealClass, "Val8");

            obj.Val9.Add(115.5f);
            obj.Val9.Add(116.5f);
            Tests.Assert(obj.Val9.Contains(115.5f), unrealClass, "Val9");
            Tests.Assert(obj.Val9.Contains(116.5f), unrealClass, "Val9");

            obj.Val10.Add(117.2);
            obj.Val10.Add(118.2);
            Tests.Assert(obj.Val10.Contains(117.2), unrealClass, "Val10");
            Tests.Assert(obj.Val10.Contains(118.2), unrealClass, "Val10");

            Tests.Assert(!obj.Val13.Contains(Tests.ActorClass), unrealClass, "Val13");
            Tests.Assert(!obj.Val13.Contains(null), unrealClass, "Val13");
            obj.Val13.Add(Tests.ActorClass);
            obj.Val13.Add(null);
            Tests.Assert(obj.Val13.Contains(Tests.ActorClass), unrealClass, "Val13");
            Tests.Assert(obj.Val13.Contains(null), unrealClass, "Val13");

            obj.Val14.Add(Test_SimpleEnum.Val3);
            obj.Val14.Add(Test_SimpleEnum.Val2);
            Tests.Assert(obj.Val14.Contains(Test_SimpleEnum.Val3), unrealClass, "Val14");
            Tests.Assert(obj.Val14.Contains(Test_SimpleEnum.Val2), unrealClass, "Val14");

            Test_SimpleBlittableStruct blitt1 = StructDefault <Test_SimpleBlittableStruct> .Value;

            blitt1.Val1 = 10;
            blitt1.Val2 = 11;
            obj.Val15.Add(blitt1);
            obj.Val15.Add(default(Test_SimpleBlittableStruct));
            Tests.Assert(obj.Val15.Contains(blitt1), unrealClass, "Val15");
            Tests.Assert(obj.Val15.Contains(default(Test_SimpleBlittableStruct)), unrealClass, "Val15");

            obj.Val16.Add(new TSubclassOf <UObject>(Tests.ActorClass));
            obj.Val16.Add(TSubclassOf <UObject> .Null);
            Tests.Assert(obj.Val16.Contains(new TSubclassOf <UObject>(Tests.ActorClass)), unrealClass, "Val16");
            Tests.Assert(obj.Val16.Contains(TSubclassOf <UObject> .Null), unrealClass, "Val16");

            obj.Val17.Add(new TLazyObject <UObject>(Tests.ActorClass));
            obj.Val17.Add(TLazyObject <UObject> .Null);
            Tests.Assert(obj.Val17.Contains(new TLazyObject <UObject>(Tests.ActorClass)), unrealClass, "Val17");
            Tests.Assert(obj.Val17.Contains(TLazyObject <UObject> .Null), unrealClass, "Val17");

            obj.Val19.Add(new TSoftClass <UObject>(Tests.ActorClass));
            obj.Val19.Add(TSoftClass <UObject> .Null);
            Tests.Assert(obj.Val19.Contains(new TSoftClass <UObject>(Tests.ActorClass)), unrealClass, "Val19");
            Tests.Assert(obj.Val19.Contains(TSoftClass <UObject> .Null), unrealClass, "Val19");

            obj.Val20.Add(new TSoftObject <UObject>(Tests.ActorClass));
            obj.Val20.Add(TSoftObject <UObject> .Null);
            Tests.Assert(obj.Val20.Contains(new TSoftObject <UObject>(Tests.ActorClass)), unrealClass, "Val20");
            Tests.Assert(obj.Val20.Contains(TSoftObject <UObject> .Null), unrealClass, "Val20");

            obj.Val21.Add("test1");
            obj.Val21.Add("test2");
            Tests.Assert(obj.Val21.Contains("test1"), unrealClass, "Val21");
            Tests.Assert(obj.Val21.Contains("test2"), unrealClass, "Val21");

            obj.Val22.Add(new FName("test3"));
            obj.Val22.Add(new FName("test4"));
            Tests.Assert(obj.Val22.Contains(new FName("test3")), unrealClass, "Val22");
            Tests.Assert(obj.Val22.Contains(new FName("test4")), unrealClass, "Val22");
        }
Example #25
0
 public static void AssertEnumValue(UEnum unrealEnum, string name, long value)
 {
     Tests.AssertEqual(unrealEnum.GetValueByNameString(name), value, unrealEnum.GetName() + "." + name);
 }
Example #26
0
        private static void RunMapTest(Test_CollectionsFuncs obj, UClass unrealClass)
        {
            var p1 = new Dictionary <long, string>();
            var p2 = new Dictionary <UObject, string>();
            var p3 = new Dictionary <Test_SimpleEnum, string>();
            var p4 = new Dictionary <Test_SimpleBlittableStruct, UObject>();
            var p5 = new Dictionary <TSoftClass <UObject>, TSoftClass <UObject> >();
            var p6 = new Dictionary <string, string>();
            var p7 = new Dictionary <FName, string>();

            Test_CollectionsFuncs.MakeMapTest(p1, p2, p3, p4, p5, p6, p7);

            // Normal
            {
                object[] parameters = { p1, p2, p3, p4, p5, p6, p7 };
                UObject.DynamicInvoke(obj, "MapFunc1", parameters);
            }

            // Ref
            {
                object[] parameters = { p1, p2, p3, p4, p5, p6, p7 };
                UObject.DynamicInvoke(obj, "MapFunc2", parameters);
            }

            // Ref (starting empty)
            {
                p1.Clear();
                p2.Clear();
                p3.Clear();
                p4.Clear();
                p5.Clear();
                p6.Clear();
                p7.Clear();
                object[] parameters = { p1, p2, p3, p4, p5, p6, p7 };
                UObject.DynamicInvoke(obj, "MapFunc3", parameters);
                p1 = (Dictionary <long, string>)parameters[0];
                p2 = (Dictionary <UObject, string>)parameters[1];
                p3 = (Dictionary <Test_SimpleEnum, string>)parameters[2];
                p4 = (Dictionary <Test_SimpleBlittableStruct, UObject>)parameters[3];
                p5 = (Dictionary <TSoftClass <UObject>, TSoftClass <UObject> >)parameters[4];
                p6 = (Dictionary <string, string>)parameters[5];
                p7 = (Dictionary <FName, string>)parameters[6];
                Test_CollectionsFuncs.AssertMapTest(obj, p1, p2, p3, p4, p5, p6, p7);
            }

            // Out
            {
                object[] parameters = { null, null, null, null, null, null, null };
                UObject.DynamicInvoke(obj, "MapFunc4", parameters);
                p1 = (Dictionary <long, string>)parameters[0];
                p2 = (Dictionary <UObject, string>)parameters[1];
                p3 = (Dictionary <Test_SimpleEnum, string>)parameters[2];
                p4 = (Dictionary <Test_SimpleBlittableStruct, UObject>)parameters[3];
                p5 = (Dictionary <TSoftClass <UObject>, TSoftClass <UObject> >)parameters[4];
                p6 = (Dictionary <string, string>)parameters[5];
                p7 = (Dictionary <FName, string>)parameters[6];
                Test_CollectionsFuncs.AssertMapTest(obj, p1, p2, p3, p4, p5, p6, p7);
            }

            // Result
            {
                object[] parameters = { "inStr" };
                var      mapResult  = (Dictionary <TSoftClass <UObject>, TSoftClass <UObject> >)UObject.DynamicInvoke(obj, "MapFunc5", parameters);
                Tests.AssertEqual(mapResult[TSoftClass <UObject> .Null], new TSoftClass <UObject>(Tests.ActorClass), unrealClass, "MapFunc5");
                Tests.AssertEqual(mapResult[new TSoftClass <UObject>(Tests.ActorClass)], TSoftClass <UObject> .Null, unrealClass, "MapFunc5");
                Tests.AssertEqual((string)parameters[0], "outStr", unrealClass, "MapFunc5.param1");
            }
        }
Example #27
0
        private static void RunSetTests(Test_CollectionsFuncs obj, UClass unrealClass)
        {
            var p1 = new HashSet <long>();
            var p2 = new HashSet <UObject>();
            var p3 = new HashSet <Test_SimpleEnum>();
            var p4 = new HashSet <Test_SimpleBlittableStruct>();
            var p5 = new HashSet <TSoftClass <UObject> >();
            var p6 = new HashSet <string>();
            var p7 = new HashSet <FName>();

            Test_CollectionsFuncs.MakeSetTest(p1, p2, p3, p4, p5, p6, p7);

            // Normal
            {
                object[] parameters = { p1, p2, p3, p4, p5, p6, p7 };
                UObject.DynamicInvoke(obj, "SetFunc1", parameters);
            }

            // Ref
            {
                object[] parameters = { p1, p2, p3, p4, p5, p6, p7 };
                UObject.DynamicInvoke(obj, "SetFunc2", parameters);
            }

            // Ref (starting empty)
            {
                p1.Clear();
                p2.Clear();
                p3.Clear();
                p4.Clear();
                p5.Clear();
                p6.Clear();
                p7.Clear();
                object[] parameters = { p1, p2, p3, p4, p5, p6, p7 };
                UObject.DynamicInvoke(obj, "SetFunc3", parameters);
                p1 = (HashSet <long>)parameters[0];
                p2 = (HashSet <UObject>)parameters[1];
                p3 = (HashSet <Test_SimpleEnum>)parameters[2];
                p4 = (HashSet <Test_SimpleBlittableStruct>)parameters[3];
                p5 = (HashSet <TSoftClass <UObject> >)parameters[4];
                p6 = (HashSet <string>)parameters[5];
                p7 = (HashSet <FName>)parameters[6];
                Test_CollectionsFuncs.AssertSetTest(obj, p1, p2, p3, p4, p5, p6, p7);
            }

            // Out
            {
                object[] parameters = { null, null, null, null, null, null, null };
                UObject.DynamicInvoke(obj, "SetFunc4", parameters);
                p1 = (HashSet <long>)parameters[0];
                p2 = (HashSet <UObject>)parameters[1];
                p3 = (HashSet <Test_SimpleEnum>)parameters[2];
                p4 = (HashSet <Test_SimpleBlittableStruct>)parameters[3];
                p5 = (HashSet <TSoftClass <UObject> >)parameters[4];
                p6 = (HashSet <string>)parameters[5];
                p7 = (HashSet <FName>)parameters[6];
                Test_CollectionsFuncs.AssertSetTest(obj, p1, p2, p3, p4, p5, p6, p7);
            }

            // Result
            {
                object[] parameters = { "inStr" };
                var      setResult  = (HashSet <TSoftClass <UObject> >)UObject.DynamicInvoke(obj, "SetFunc5", parameters);
                Tests.Assert(setResult.Contains(TSoftClass <UObject> .Null), unrealClass, "SetFunc5");
                Tests.Assert(setResult.Contains(new TSoftClass <UObject>(Tests.ActorClass)), unrealClass, "SetFunc5");
                Tests.AssertEqual((string)parameters[0], "outStr", unrealClass, "SetFunc5.param1");
            }
        }
        public long Func2(
            ref sbyte p1,
            ref byte p2,
            ref short p3,
            ref ushort p4,
            ref int p5,
            ref uint p6,
            ref long p7,
            ref ulong p8,
            ref float p9,
            ref double p10,
            ref Test_SimpleDelegate p11,
            ref Test_SimpleMulticastDelegate p12,
            ref UObject p13,
            ref Test_SimpleEnum p14,
            ref Test_FixedArrayInStruct p15,
            ref TSubclassOf <UObject> p16,
            ref TLazyObject <UObject> p17,
            ref TWeakObject <UObject> p18,
            ref TSoftClass <UObject> p19,
            ref TSoftObject <UObject> p20,
            ref string p21,
            ref FName p22)
        {
            UClass unrealClass = GetClass();

            Tests.AssertEqual(p1, 2, unrealClass, "Func2.p1");
            Tests.AssertEqual(p2, 3, unrealClass, "Func2.p2");
            Tests.AssertEqual(p3, 4, unrealClass, "Func2.p3");
            Tests.AssertEqual(p4, 5, unrealClass, "Func2.p4");
            Tests.AssertEqual(p5, 6, unrealClass, "Func2.p5");
            Tests.AssertEqual(p6, 7u, unrealClass, "Func2.p6");
            Tests.AssertEqual(p7, 8, unrealClass, "Func2.p7");
            Tests.AssertEqual(p8, 9u, unrealClass, "Func2.p8");
            Tests.AssertEqual(p9, 10.2f, unrealClass, "Func2.p9");
            Tests.AssertEqual(p10, 11.5, unrealClass, "Func2.p10");
            Tests.Assert(p11.IsBound, unrealClass, "Func2.p11");
            Tests.Assert(p12.IsBound, unrealClass, "Func2.p12");
            Tests.AssertEqual(p12.Count, 2, unrealClass, "Func2.p12");
            Tests.AssertEqual(p13, this, unrealClass, "Func2.p13");
            Tests.AssertEqual(p14, Test_SimpleEnum.Val3, unrealClass, "Func2.p14");
            Tests.AssertEqual(p15.Array1[0], 2, unrealClass, "Func2.p15");
            Tests.AssertEqual(p15.Array1[1], 5, unrealClass, "Func2.p15");
            Tests.AssertEqual(p16.Value, unrealClass, unrealClass, "Func2.p16");
            Tests.AssertEqual(p17.Value, this, unrealClass, "Func2.p17");
            Tests.AssertEqual(p18, TWeakObject <UObject> .Null, unrealClass, "Func2.p18");
            Tests.AssertEqual(p19.Value, unrealClass, unrealClass, "Func2.p19");
            Tests.AssertEqual(p20.Value, this, unrealClass, "Func2.p20");
            Tests.AssertEqual(p21, "Test123", unrealClass, "Func2.p21");
            Tests.AssertEqual(p22, new FName("321Test"), unrealClass, "Func2.p22");

            double param3 = 4.5;
            string param4;

            p11.Invoke(3, "param2", ref param3, out param4);
            Tests.AssertEqual(param3, 5, unrealClass, "BindMe.param3");
            Tests.AssertEqual(param4, "out", unrealClass, "BindMe.param4");

            int multiParam3 = 2;

            p12.Invoke(1, "two", ref multiParam3);
            Tests.AssertEqual(multiParam3, 7, unrealClass, "BindMeMulti.param3");

            UClass actorClass = GetActorClass();

            p1++;
            p2++;
            p3++;
            p4++;
            p5++;
            p6++;
            p7++;
            p8++;
            p9++;
            p10++;
            p11.Clear();
            p12.Bind(BindMeMulti3);
            p13           = actorClass;
            p14           = Test_SimpleEnum.Val2;
            p15.Array1[2] = 100;
            p16.SetClass(actorClass);
            p17.Value = actorClass;
            p18.Value = actorClass;
            p19.Value = actorClass;
            p20.Value = actorClass;
            p21       = "changed123";
            p22       = new FName("321changed");
            return(13232);
        }
        public long Func1(
            sbyte p1,
            byte p2,
            short p3,
            ushort p4,
            int p5,
            uint p6,
            long p7,
            ulong p8,
            float p9,
            double p10,
            Test_SimpleDelegate p11,
            Test_SimpleMulticastDelegate p12,
            UObject p13,
            Test_SimpleEnum p14,
            Test_FixedArrayInStruct p15,
            TSubclassOf <UObject> p16,
            TLazyObject <UObject> p17,
            TWeakObject <UObject> p18,
            TSoftClass <UObject> p19,
            TSoftObject <UObject> p20,
            string p21,
            FName p22)
        {
            UClass unrealClass = GetClass();

            Tests.AssertEqual(p1, 2, unrealClass, "Func1.p1");
            Tests.AssertEqual(p2, 3, unrealClass, "Func1.p2");
            Tests.AssertEqual(p3, 4, unrealClass, "Func1.p3");
            Tests.AssertEqual(p4, 5, unrealClass, "Func1.p4");
            Tests.AssertEqual(p5, 6, unrealClass, "Func1.p5");
            Tests.AssertEqual(p6, 7u, unrealClass, "Func1.p6");
            Tests.AssertEqual(p7, 8, unrealClass, "Func1.p7");
            Tests.AssertEqual(p8, 9u, unrealClass, "Func1.p8");
            Tests.AssertEqual(p9, 10.2f, unrealClass, "Func1.p9");
            Tests.AssertEqual(p10, 11.5, unrealClass, "Func1.p10");
            Tests.Assert(p11.IsBound, unrealClass, "Func1.p11");
            Tests.Assert(p12.IsBound, unrealClass, "Func1.p12");
            Tests.AssertEqual(p12.Count, 2, unrealClass, "Func1.p12");
            Tests.AssertEqual(p13, this, unrealClass, "Func1.p13");
            Tests.AssertEqual(p14, Test_SimpleEnum.Val3, unrealClass, "Func1.p14");
            Tests.AssertEqual(p15.Array1[0], 2, unrealClass, "Func1.p15");
            Tests.AssertEqual(p15.Array1[1], 5, unrealClass, "Func1.p15");
            Tests.AssertEqual(p16.Value, unrealClass, unrealClass, "Func1.p16");
            Tests.AssertEqual(p17.Value, this, unrealClass, "Func1.p17");
            Tests.AssertEqual(p18, TWeakObject <UObject> .Null, unrealClass, "Func1.p18");
            Tests.AssertEqual(p19.Value, unrealClass, unrealClass, "Func1.p19");
            Tests.AssertEqual(p20.Value, this, unrealClass, "Func1.p20");
            Tests.AssertEqual(p21, "Test123", unrealClass, "Func1.p21");
            Tests.AssertEqual(p22, new FName("321Test"), unrealClass, "Func1.p22");

            double param3 = 4.5;
            string param4;

            p11.Invoke(3, "param2", ref param3, out param4);
            Tests.AssertEqual(param3, 5, unrealClass, "BindMe.param3");
            Tests.AssertEqual(param4, "out", unrealClass, "BindMe.param4");

            int multiParam3 = 2;

            p12.Invoke(1, "two", ref multiParam3);
            Tests.AssertEqual(multiParam3, 7, unrealClass, "BindMeMulti.param3");

            return(13232);
        }
Example #30
0
        public static void Run()
        {
            Test_SimpleStructOnClass obj = UObject.NewObject <Test_SimpleStructOnClass>();

            Tests.Assert(obj != null, "Test_SimpleStructOnClass NewObject");

            UClass uclass = obj.GetClass();

            Tests.AssertEqual(uclass, UClass.GetClass(obj.GetType()), "Test_SimpleStructOnClass GetClass/Type");

            // Create another obj of the same type for comparisons of
            Test_SimpleStructOnClass other = UObject.NewObject <Test_SimpleStructOnClass>();

            // Test BlittableStruct default state
            string msg = "BlittableStruct default state";

            Tests.AssertDefault(obj.BlittableStruct.Val1, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val2, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val3, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val4, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val5, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val6, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val7, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val8, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val9, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val10, uclass, msg);
            Tests.AssertDefault(obj.BlittableStruct.Val11, uclass, msg);

            // Test Struct default state
            msg = "Struct default state";
            Tests.AssertDefault(obj.Struct.Val0, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val1, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val2, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val3, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val4, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val5, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val6, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val7, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val8, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val9, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val10, uclass, msg);
            //Tests.AssertDefault(obj.Struct.Val11, uclass, msg);// delegate will be non-null from struct marshaler
            //Tests.AssertDefault(obj.Struct.Val12, uclass, msg);// delegate will be non-null from struct marshaler
            Tests.AssertDefault(obj.Struct.Val13, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val14, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val15, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val16, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val17, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val18, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val19, uclass, msg);
            Tests.AssertDefault(obj.Struct.Val20, uclass, msg);
            //Tests.AssertDefault(obj.Struct.Val21, uclass, msg);// string will be non null from struct marshaler
            Tests.AssertDefault(obj.Struct.Val22, uclass, msg);

            Test_SimpleBlittableStruct blittableStructVal = obj.BlittableStruct;

            blittableStructVal.Val1  = 1;
            blittableStructVal.Val2  = 2;
            blittableStructVal.Val3  = 3;
            blittableStructVal.Val4  = 4;
            blittableStructVal.Val5  = 5;
            blittableStructVal.Val6  = 6;
            blittableStructVal.Val7  = 7;
            blittableStructVal.Val8  = 8;
            blittableStructVal.Val9  = 9;
            blittableStructVal.Val10 = 10;
            blittableStructVal.Val11 = new FName("Hello world");
            obj.BlittableStruct      = blittableStructVal;
            Tests.AssertEqual(obj.BlittableStruct, blittableStructVal, uclass, "modify BlittableStruct");

            Test_SimpleStruct structVal = obj.Struct;

            structVal.Val0  = true;
            structVal.Val1  = 1;
            structVal.Val2  = 2;
            structVal.Val3  = 3;
            structVal.Val4  = 4;
            structVal.Val5  = 5;
            structVal.Val6  = 6;
            structVal.Val7  = 7;
            structVal.Val8  = 8;
            structVal.Val9  = 9;
            structVal.Val10 = 10;
            structVal.Val11.Bind(obj.BindToStructDelegate);
            structVal.Val12.Bind(obj.BindToStructMulticastDelegate1);
            structVal.Val12.Bind(obj.BindToStructMulticastDelegate2);
            structVal.Val12.Bind(obj.BindToStructMulticastDelegate3);
            structVal.Val13 = other;
            structVal.Val14 = Test_SimpleEnum.Val3;
            structVal.Val15 = new Test_SimpleBlittableStruct()
            {
                Val1  = 1,
                Val2  = 2,
                Val3  = 3,
                Val4  = 4,
                Val5  = 5,
                Val6  = 6,
                Val7  = 7,
                Val8  = 8,
                Val9  = 9,
                Val10 = 10,
                Val11 = new FName("Hello world")
            };
            structVal.Val16.SetClass <Test_SimpleStructOnClass>();
            structVal.Val17.Set(other);
            structVal.Val18.Set(obj);
            structVal.Val19.SetClass <Test_SimpleStructOnClass>();
            structVal.Val20.Value = UClass.GetClass <Test_SimpleStructOnClass>();
            structVal.Val21       = "Hello!";
            structVal.Val22       = new FName("Hello FName");

            Tests.Assert(structVal.Val11.IsBound, uclass, ".Val11.IsBound");
            Tests.Assert(structVal.Val12.IsBound, uclass, ".Val12.IsBound");
            obj.Struct = structVal;
            //Tests.AssertEqual(obj.Struct, structVal, uclass, "modify Struct");
            // We can't test equals of struct value due to new instances of delegates created on each struct marshal
            // TODO: Replace delegates with structs so they dont require allocation of new managed classes on marshaling

            Test_SimpleStruct newStructVal = obj.Struct;

            Tests.AssertEqual(newStructVal.Val0, true, uclass, ".Val0");
            Tests.AssertEqual(newStructVal.Val1, 1, uclass, ".Val1");
            Tests.AssertEqual(newStructVal.Val2, 2, uclass, ".Val2");
            Tests.AssertEqual(newStructVal.Val3, 3, uclass, ".Val3");
            Tests.AssertEqual(newStructVal.Val4, 4, uclass, ".Val4");
            Tests.AssertEqual(newStructVal.Val5, 5, uclass, ".Val5");
            Tests.AssertEqual(newStructVal.Val6, 6u, uclass, ".Val6");
            Tests.AssertEqual(newStructVal.Val7, 7, uclass, ".Val7");
            Tests.AssertEqual(newStructVal.Val8, 8u, uclass, ".Val8");
            Tests.AssertEqual(newStructVal.Val9, 9.0f, uclass, ".Val9");
            Tests.AssertEqual(newStructVal.Val10, 10.0, uclass, ".Val10");
            //Tests.AssertEqual(newStructVal.Val11, , uclass, ".Val11");
            //Tests.AssertEqual(newStructVal.Val12, , uclass, ".Val12");
            Tests.AssertEqual(newStructVal.Val13, other, uclass, ".Val13");
            Tests.AssertEqual(newStructVal.Val14, Test_SimpleEnum.Val3, uclass, ".Val14");
            Tests.AssertEqual(newStructVal.Val15, structVal.Val15, uclass, ".Val15");
            Tests.AssertEqual(obj.Struct.Val16.Value, UClass.GetClass <Test_SimpleStructOnClass>(), uclass, ".Val16");
            Tests.AssertEqual(obj.Struct.Val17.Get(), other, uclass, ".Val17");
            Tests.AssertEqual(obj.Struct.Val18.Get(), obj, uclass, ".Val18");
            Tests.AssertEqual(obj.Struct.Val19.Value, UClass.GetClass <Test_SimpleStructOnClass>(), uclass, ".Val19");
            Tests.AssertEqual(obj.Struct.Val20.Value, UClass.GetClass <Test_SimpleStructOnClass>(), uclass, ".Val20");

            // Test the delegates
            double param3 = 44.3;
            string param4;
            TSoftClass <UObject> someClass = structVal.Val11.Invoke(13, "inParam2", ref param3, out param4);

            Tests.AssertEqual(param3, 99.88, uclass, ".BindToStructDelegate.param3");
            Tests.AssertEqual(param4, "outParam4", uclass, ".BindToStructDelegate.param4");
            Tests.AssertEqual(someClass.Value, UClass.GetClass <Test_SimpleStructOnClass>(), uclass, ".BindToStructDelegate." + UFunction.ReturnValuePropName);

            // Test the multicast delegate
            int param3Multicast = 1;

            structVal.Val12.Invoke(3u, "param2", ref param3Multicast);
            Tests.AssertEqual(param3Multicast, 4, ".BindToStructMulticastDelegate.param3");
        }