From 1a404682f0a290276364c442ed6a095430c8116c Mon Sep 17 00:00:00 2001 From: Alex Corrado Date: Fri, 1 Jul 2011 22:27:33 -0400 Subject: [PATCH] Update roundtripping test to also test native ptr to non-primary base --- tests/InheritanceTests.cs | 25 +++++++++++++++++++------ tests/Native/InheritanceTests.cpp | 9 --------- tests/Native/InheritanceTests.h | 9 +++++---- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/tests/InheritanceTests.cs b/tests/InheritanceTests.cs index dddc3b9b..238e4d97 100644 --- a/tests/InheritanceTests.cs +++ b/tests/InheritanceTests.cs @@ -134,12 +134,25 @@ namespace Tests { [Test] public void TestRoundtripManagedOverride () { - var managed = new ManagedOverride1 (); - var roundtripper = new ClassThatRoundtrips (managed); - var cls = roundtripper.GetIt (); - Assert.AreEqual (25, cls.Number, "#1"); - Assert.AreEqual (-25, cls.NegativeNumber, "#2"); - Assert.IsNotNull (cls as ManagedOverride1); + 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 (cls as ManagedOverride2, "#7"); } } diff --git a/tests/Native/InheritanceTests.cpp b/tests/Native/InheritanceTests.cpp index 553b85d4..e1cb201b 100644 --- a/tests/Native/InheritanceTests.cpp +++ b/tests/Native/InheritanceTests.cpp @@ -72,13 +72,4 @@ int ClassThatOverridesStuff::BaseNumber () const NumberClass* ClassThatOverridesStuff::GetInstance (int num, int my) { return new ClassThatOverridesStuff (num, my); -} - -ClassThatRoundtrips::ClassThatRoundtrips (NumberClass* managed) -{ - this->nc = managed; -} -NumberClass* ClassThatRoundtrips::GetIt () -{ - return this->nc; } \ No newline at end of file diff --git a/tests/Native/InheritanceTests.h b/tests/Native/InheritanceTests.h index c244d731..445ee261 100644 --- a/tests/Native/InheritanceTests.h +++ b/tests/Native/InheritanceTests.h @@ -54,10 +54,11 @@ public: static NumberClass* GetInstance (int num, int my); }; -class ClassThatRoundtrips { +class ClassThatRoundtrips : public MultiplierClass { protected: - NumberClass* nc; + MultiplierClass* that; public: - ClassThatRoundtrips (NumberClass* managed); - virtual NumberClass* GetIt (); + ClassThatRoundtrips (int n, MultiplierClass* managed) : MultiplierClass (n) { this->that = managed; } + virtual MultiplierClass* GetThat () { return this->that; } + virtual MultiplierClass* GetThis () { return this; } }; \ No newline at end of file