diff --git a/tests/CSharp/CSharp.Tests.cs b/tests/CSharp/CSharp.Tests.cs index 621a69be..cb3b54a9 100644 --- a/tests/CSharp/CSharp.Tests.cs +++ b/tests/CSharp/CSharp.Tests.cs @@ -1066,15 +1066,21 @@ public unsafe class CSharpTests : GeneratorTestFixture Foo[] pointers = { new Foo { A = 2 }, new Foo { A = 5 } }; int[] ints = { 6, 7 }; Foo[] values = { new Foo { A = 10 }, new Foo { A = 20 } }; - Assert.That(CSharp.CSharp.TakeArrays(pointers, ints, values), Is.EqualTo(50)); + using (var testArrays = new TestArrays()) + { + Assert.That(testArrays.TakeArrays(pointers, ints, values), Is.EqualTo(50)); + } } [Test] public void TestStringArrayParams() { string[] strings = { "The ", "test ", "works." }; - Assert.That(CSharp.CSharp.TakeStringArray(strings), Is.EqualTo("The test works.")); - Assert.That(CSharp.CSharp.TakeConstStringArray(strings), Is.EqualTo("The test works.")); + using (var testArrays = new TestArrays()) + { + Assert.That(testArrays.TakeStringArray(strings), Is.EqualTo("The test works.")); + Assert.That(testArrays.TakeConstStringArray(strings), Is.EqualTo("The test works.")); + } } [Test] @@ -1083,9 +1089,9 @@ public unsafe class CSharpTests : GeneratorTestFixture Foo[] pointers = { new Foo { A = 2 }, new Foo { A = 5 } }; int[] ints = { 6, 7 }; Foo[] values = { new Foo { A = 10 }, new Foo { A = 20 } }; - using (var qux = new Qux()) + using (var testArrays = new TestArrays()) { - Assert.That(qux.VirtualTakesArrays(pointers, ints, values), Is.EqualTo(50)); + Assert.That(testArrays.VirtualTakesArrays(pointers, ints, values), Is.EqualTo(50)); } } diff --git a/tests/CSharp/CSharp.cpp b/tests/CSharp/CSharp.cpp index bb6058b1..e3f65660 100644 --- a/tests/CSharp/CSharp.cpp +++ b/tests/CSharp/CSharp.cpp @@ -123,28 +123,6 @@ QColor::QColor(Qt::GlobalColor color) } -int takeArrays(Foo* arrayOfPointersToObjects[], int arrayOfPrimitives[], Foo arrayOfObjects[]) -{ - return arrayOfPointersToObjects[0]->A + arrayOfPointersToObjects[1]->A + - arrayOfPrimitives[0] + arrayOfPrimitives[1] + - arrayOfObjects[0].A + arrayOfObjects[1].A; -} - -std::string takeStringArray(const char* arrayOfStrings[]) -{ - std::string result; - for (int i = 0; i < 3; i++) - { - result += arrayOfStrings[i]; - } - return result; -} - -std::string takeConstStringArray(const char* const arrayOfStrings[]) -{ - return takeStringArray(const_cast(arrayOfStrings)); -} - Qux::Qux() { } @@ -184,9 +162,8 @@ void Qux::setInterface(Qux *qux) { } -int Qux::virtualTakesArrays(Foo* arrayOfPointersToObjects[], int arrayOfPrimitives[], Foo arrayOfObjects[]) const +void Qux::makeClassDynamic() { - return takeArrays(arrayOfPointersToObjects, arrayOfPrimitives, arrayOfObjects); } Bar::Bar(Qux qux) @@ -1414,3 +1391,38 @@ typedefedFuncPtr* TestDuplicateDelegate::testDuplicateDelegate(int a) void InlineNamespace::FunctionInsideInlineNamespace() { } + +TestArrays::TestArrays() +{ +} + +TestArrays::~TestArrays() +{ +} + +int TestArrays::takeArrays(Foo* arrayOfPointersToObjects[], int arrayOfPrimitives[], Foo arrayOfObjects[]) const +{ + return arrayOfPointersToObjects[0]->A + arrayOfPointersToObjects[1]->A + + arrayOfPrimitives[0] + arrayOfPrimitives[1] + + arrayOfObjects[0].A + arrayOfObjects[1].A; +} + +std::string TestArrays::takeStringArray(const char* arrayOfStrings[]) +{ + std::string result; + for (int i = 0; i < 3; i++) + { + result += arrayOfStrings[i]; + } + return result; +} + +std::string TestArrays::takeConstStringArray(const char* const arrayOfStrings[]) +{ + return takeStringArray(const_cast(arrayOfStrings)); +} + +int TestArrays::virtualTakesArrays(Foo* arrayOfPointersToObjects[], int arrayOfPrimitives[], Foo arrayOfObjects[]) const +{ + return takeArrays(arrayOfPointersToObjects, arrayOfPrimitives, arrayOfObjects); +} diff --git a/tests/CSharp/CSharp.h b/tests/CSharp/CSharp.h index 1babde44..2682a7cd 100644 --- a/tests/CSharp/CSharp.h +++ b/tests/CSharp/CSharp.h @@ -50,12 +50,6 @@ private: class Bar; -DLL_API int takeArrays(Foo* arrayOfPointersToObjects[], int arrayOfPrimitives[], Foo arrayOfObjects[]); - -DLL_API std::string takeStringArray(const char* arrayOfStrings[]); - -DLL_API std::string takeConstStringArray(const char* const arrayOfStrings[]); - class DLL_API Qux { public: @@ -68,7 +62,7 @@ public: void obsolete(); Qux* getInterface(); void setInterface(Qux* qux); - virtual int virtualTakesArrays(Foo* arrayOfPointersToObjects[], int arrayOfPrimitives[], Foo arrayOfObjects[]) const; + virtual void makeClassDynamic(); }; class DLL_API Bar : public Qux @@ -1242,3 +1236,14 @@ inline namespace InlineNamespace { DLL_API void FunctionInsideInlineNamespace(); } + +class DLL_API TestArrays +{ +public: + TestArrays(); + ~TestArrays(); + int takeArrays(Foo* arrayOfPointersToObjects[], int arrayOfPrimitives[], Foo arrayOfObjects[]) const; + std::string takeStringArray(const char* arrayOfStrings[]); + std::string takeConstStringArray(const char* const arrayOfStrings[]); + virtual int virtualTakesArrays(Foo* arrayOfPointersToObjects[], int arrayOfPrimitives[], Foo arrayOfObjects[]) const; +};