Browse Source

Test overriding from a secondary base for Itanium

Fixes https://github.com/mono/CppSharp/issues/1364.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
const-wchar_t
Dimitar Dobrev 5 years ago
parent
commit
29c6eb5625
  1. 18
      tests/CSharp/CSharp.Tests.cs
  2. 23
      tests/CSharp/CSharp.cpp
  3. 12
      tests/CSharp/CSharp.h

18
tests/CSharp/CSharp.Tests.cs

@ -102,6 +102,24 @@ public unsafe class CSharpTests : GeneratorTestFixture @@ -102,6 +102,24 @@ public unsafe class CSharpTests : GeneratorTestFixture
#pragma warning restore 0219
}
private class OverriddenInManaged : Baz
{
public override int Type => 10;
}
[Test]
public void TestDer()
{
using (var der = new OverriddenInManaged())
{
using (var hasDer = new HasOverriddenInManaged())
{
hasDer.SetOverriddenInManaged(der);
Assert.That(hasDer.CallOverriddenInManaged(), Is.EqualTo(10));
}
}
}
[Test]
public void TestReturnCharPointer()
{

23
tests/CSharp/CSharp.cpp

@ -329,6 +329,11 @@ void Baz::setMethod(ProtectedNestedEnum value) @@ -329,6 +329,11 @@ void Baz::setMethod(ProtectedNestedEnum value)
{
}
int Baz::type() const
{
return -1;
}
AbstractProprietor::~AbstractProprietor()
{
}
@ -865,6 +870,24 @@ AbstractWithProperty::~AbstractWithProperty() @@ -865,6 +870,24 @@ AbstractWithProperty::~AbstractWithProperty()
{
}
HasOverriddenInManaged::HasOverriddenInManaged()
{
}
HasOverriddenInManaged::~HasOverriddenInManaged()
{
}
void HasOverriddenInManaged::setOverriddenInManaged(Baz* value)
{
overriddenInManaged = value;
}
int HasOverriddenInManaged::callOverriddenInManaged()
{
return overriddenInManaged->type();
}
IgnoredType PropertyWithIgnoredType::ignoredType()
{
return _ignoredType;

12
tests/CSharp/CSharp.h

@ -161,6 +161,7 @@ public: @@ -161,6 +161,7 @@ public:
int takesQux(const Qux& qux);
Qux returnQux();
void setMethod(ProtectedNestedEnum value);
int type() const override;
typedef bool (*FunctionTypedef)(const void *);
FunctionTypedef functionTypedef;
@ -537,6 +538,17 @@ class DLL_API IgnoredTypeInheritingNonIgnoredWithNoEmptyCtor : public P @@ -537,6 +538,17 @@ class DLL_API IgnoredTypeInheritingNonIgnoredWithNoEmptyCtor : public P
{
};
class DLL_API HasOverriddenInManaged
{
public:
HasOverriddenInManaged();
~HasOverriddenInManaged();
void setOverriddenInManaged(Baz *value);
int callOverriddenInManaged();
private:
Baz* overriddenInManaged = 0;
};
class DLL_API PropertyWithIgnoredType
{
public:

Loading…
Cancel
Save