Browse Source

Add another test covering indirect struct returns.

pull/1295/head
João Matos 5 years ago
parent
commit
d4afcd760c
  1. 9
      tests/Common/Common.Tests.cs
  2. 20
      tests/Common/Common.cpp
  3. 12
      tests/Common/Common.h

9
tests/Common/Common.Tests.cs

@ -977,4 +977,13 @@ This is a very long string. This is a very long string. This is a very long stri @@ -977,4 +977,13 @@ This is a very long string. This is a very long string. This is a very long stri
Assert.That(ret, Is.EqualTo(10));
}
}
[Test]
public void TestStructWithIndirectReturn()
{
using (var structWithIndirectReturn = StructWithIndirectReturn.ReturnStructIndirectReturn())
{
Assert.That(structWithIndirectReturn.A, Is.EqualTo(1));
}
}
}

20
tests/Common/Common.cpp

@ -1167,3 +1167,23 @@ BaseCovariant::~BaseCovariant() @@ -1167,3 +1167,23 @@ BaseCovariant::~BaseCovariant()
DerivedCovariant::~DerivedCovariant()
{
}
StructWithIndirectReturn::StructWithIndirectReturn() :
A(1)
{
}
StructWithIndirectReturn::StructWithIndirectReturn(StructWithIndirectReturn& s) :
A(s.A)
{
}
StructWithIndirectReturn::StructWithIndirectReturn(StructWithIndirectReturn&& s) :
A(s.A)
{
}
StructWithIndirectReturn StructWithIndirectReturn::ReturnStructIndirectReturn()
{
return StructWithIndirectReturn();
}

12
tests/Common/Common.h

@ -1573,4 +1573,14 @@ class TemplateClass : TemplateClassBase<A,B> { @@ -1573,4 +1573,14 @@ class TemplateClass : TemplateClassBase<A,B> {
using typename TemplateClassBase<A,B>::XType;
using Func = std::function<B(XType)>;
explicit TemplateClass(Func function) {}
};
};
struct DLL_API StructWithIndirectReturn
{
StructWithIndirectReturn();
StructWithIndirectReturn(StructWithIndirectReturn&);
StructWithIndirectReturn(StructWithIndirectReturn&&);
int A;
static StructWithIndirectReturn ReturnStructIndirectReturn();
};

Loading…
Cancel
Save