public static void TestInheritedEoIndirectConstruction() { var obj = new Dummy.ConstructibleObject(); Test.AssertEquals(obj.NativeConstructionCount, 1); Test.AssertEquals(obj.DefaultConstructionCount, 0); Test.AssertEquals(obj.SpecialConstructionCount, 0); Test.AssertEquals(obj.MultiplyIntegerValue(21), 42); var obj2 = (InheritedConstructibleObject)obj.ConstructTypeAndStore(typeof(InheritedConstructibleObject)); Test.AssertEquals(obj2.IsInheritedClass, true); Test.AssertEquals(obj2.NativeConstructionCount, 1); Test.AssertEquals(obj2.DefaultConstructionCount, 0); Test.AssertEquals(obj2.SpecialConstructionCount, 1); Test.AssertEquals(obj2.DefaultConstrutorCallCount, 0); Test.AssertEquals(obj2.SpecialConstrutorCallCount, 1); Test.AssertEquals(obj2.MultiplyIntegerValue(21), 63); var internalObj = obj.InternalObject; Test.Assert(ReferenceEquals(obj2, internalObj)); // Ensure it always use the same object instance Test.AssertEquals(obj2.NativeConstructionCount, 1); // And that constructors are not called again Test.AssertEquals(obj2.MultiplyIntegerValue(32), 96); // And that it is still usable obj.Dispose(); obj2.Dispose(); }
public static void TestGeneratedEoDirectConstruction() { var obj = new Dummy.ConstructibleObject(); Test.AssertEquals(obj.NativeConstructionCount, 1); Test.AssertEquals(obj.DefaultConstructionCount, 0); Test.AssertEquals(obj.SpecialConstructionCount, 0); Test.AssertEquals(obj.MultiplyIntegerValue(21), 42); obj.Dispose(); }