public void TestManagedOverride2() { var cls = new ManagedOverride2(); Assert.AreEqual(-25, cls.NegativeNumber, "#1"); cls.MultiplierClass.Multiply(7); Assert.AreEqual(30, ((MultiplierClass)cls).Number, "#3"); cls.CallMultiply(2); Assert.AreEqual(25, cls.Number, "#2"); Assert.AreEqual(300, ((MultiplierClass)cls).Number, "#5"); }
public void TestManagedOverride2() { var cls = new ManagedOverride2(); // The following will fail with a null ptr exception for cls.NegativeNumber. // ManagedOverride2 inherits ClassWith~NonVirtualBases which is a c++ class // using multiple inheritance without virtual base, so there are 2 copies of the // base class which contains NegativeNumber method. If using c++ to access NegaiveNumber(), one must // cast to the correct instance of base class. // // I am guessing the cxxi generated code does not do the casting hence it fails // when doing the call. // // Assert.AreEqual (-25, cls.NegativeNumber, "#1"); cls.MultiplierClass.Multiply(7); Assert.AreEqual(30, ((MultiplierClass)cls).Number, "#3"); cls.CallMultiply(2); Assert.AreEqual(25, cls.Number, "#2"); Assert.AreEqual(300, ((MultiplierClass)cls).Number, "#5"); }
public void TestRoundtripManagedOverride() { var managed = new ManagedOverride2(); var roundtripper = new ClassThatRoundtrips(7, managed); // test primary base ptr from native var cls = roundtripper.GetThis(); Assert.AreSame(roundtripper, cls, "#1"); Assert.AreEqual(7, cls.Number, "#2"); // test non-primary base ptr from native cls = roundtripper.GetThat(); Assert.AreSame((MultiplierClass)managed, cls, "#3"); Assert.AreEqual(3, cls.Number, "#4"); Assert.AreEqual(3, cls.Number, "#5"); cls.Multiply(0); Assert.AreEqual(-30, cls.NegativeNumber, "#6"); // cast to non-primary subclass Assert.IsNotNull(((ClassWithNonVirtualBases)cls) as ManagedOverride2, "#7"); }
public void TestRoundtripManagedOverride () { var managed = new ManagedOverride2 (); var roundtripper = new ClassThatRoundtrips (7, managed); // test primary base ptr from native var cls = roundtripper.GetThis (); Assert.AreSame (roundtripper, cls, "#1"); Assert.AreEqual (7, cls.Number, "#2"); // test non-primary base ptr from native cls = roundtripper.GetThat (); Assert.AreSame ((MultiplierClass)managed, cls, "#3"); Assert.AreEqual (3, cls.Number, "#4"); Assert.AreEqual (3, cls.Number, "#5"); cls.Multiply (0); Assert.AreEqual (-30, cls.NegativeNumber, "#6"); // cast to non-primary subclass Assert.IsNotNull (((ClassWithNonVirtualBases)cls) as ManagedOverride2, "#7"); }
public void TestManagedOverride2 () { var cls = new ManagedOverride2 (); Assert.AreEqual (-25, cls.NegativeNumber, "#1"); cls.MultiplierClass.Multiply (7); Assert.AreEqual (30, ((MultiplierClass)cls).Number, "#3"); cls.CallMultiply (2); Assert.AreEqual (25, cls.Number, "#2"); Assert.AreEqual (300, ((MultiplierClass)cls).Number, "#5"); }