Beispiel #1
0
        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");
        }
Beispiel #2
0
        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");
        }
Beispiel #3
0
        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");
        }
Beispiel #4
0
		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");
		}
Beispiel #5
0
		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");
		}