Esempio n. 1
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");
        }
Esempio n. 2
0
 public static void Run()
 {
     Test_SimpleBlittableStruct.Run();
     Test_SimpleStruct.Run();
     Test_SimpleStructOnClass.Run();
 }