Browse Source

Update roundtripping test to also test native ptr to non-primary base

pull/1/head
Alex Corrado 14 years ago
parent
commit
1a404682f0
  1. 25
      tests/InheritanceTests.cs
  2. 9
      tests/Native/InheritanceTests.cpp
  3. 9
      tests/Native/InheritanceTests.h

25
tests/InheritanceTests.cs

@ -134,12 +134,25 @@ namespace Tests { @@ -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");
}
}

9
tests/Native/InheritanceTests.cpp

@ -72,13 +72,4 @@ int ClassThatOverridesStuff::BaseNumber () const @@ -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;
}

9
tests/Native/InheritanceTests.h

@ -54,10 +54,11 @@ public: @@ -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; }
};
Loading…
Cancel
Save