diff options
Diffstat (limited to 'sources/shiboken6/tests')
4 files changed, 47 insertions, 1 deletions
diff --git a/sources/shiboken6/tests/libminimal/containeruser.cpp b/sources/shiboken6/tests/libminimal/containeruser.cpp index 78fc7a045..29af52aef 100644 --- a/sources/shiboken6/tests/libminimal/containeruser.cpp +++ b/sources/shiboken6/tests/libminimal/containeruser.cpp @@ -6,7 +6,7 @@ #include <algorithm> #include <numeric> -ContainerUser::ContainerUser() : m_intVector{1, 2, 3} +ContainerUser::ContainerUser() : m_intVector{1, 2, 3}, m_intArray{1, 2, 3} { } @@ -33,3 +33,23 @@ void ContainerUser::setIntVector(const std::vector<int> &v) { m_intVector = v; } + +std::array<int, 3> ContainerUser::createIntArray() +{ + return {1, 2, 3}; +} + +int ContainerUser::sumIntArray(const std::array<int, 3> &intArray) +{ + return std::accumulate(intArray.cbegin(), intArray.cend(), 0); +} + +std::array<int, 3> &ContainerUser::intArray() +{ + return m_intArray; +} + +void ContainerUser::setIntArray(const std::array<int, 3> &a) +{ + m_intArray = a; +} diff --git a/sources/shiboken6/tests/libminimal/containeruser.h b/sources/shiboken6/tests/libminimal/containeruser.h index 4cb4df0b9..55e4020ec 100644 --- a/sources/shiboken6/tests/libminimal/containeruser.h +++ b/sources/shiboken6/tests/libminimal/containeruser.h @@ -6,6 +6,7 @@ #include "libminimalmacros.h" +#include <array> #include <vector> /// Exercise simple, sequential containers. More advanced tests are in ListUser @@ -21,8 +22,15 @@ public: std::vector<int> &intVector(); void setIntVector(const std::vector<int> &); + static std::array<int, 3> createIntArray(); + static int sumIntArray(const std::array<int, 3> &intArray); + + std::array<int, 3> &intArray(); + void setIntArray(const std::array<int, 3> &); + private: std::vector<int> m_intVector; + std::array<int, 3> m_intArray; }; #endif // CONTAINERUSER_H diff --git a/sources/shiboken6/tests/minimalbinding/containeruser_test.py b/sources/shiboken6/tests/minimalbinding/containeruser_test.py index b08989d2f..25d683957 100644 --- a/sources/shiboken6/tests/minimalbinding/containeruser_test.py +++ b/sources/shiboken6/tests/minimalbinding/containeruser_test.py @@ -28,6 +28,17 @@ class ContainerTest(unittest.TestCase): oc[0] = 42 self.assertEqual(cu.intVector()[0], 42) + def testArrayConversion(self): + v = ContainerUser.createIntArray() + self.assertEqual(ContainerUser.sumIntArray(v), 6) + + def testArrayOpaqueContainer(self): + cu = ContainerUser() + oc = cu.intArray() + self.assertEqual(oc[0], 1) + oc[0] = 42 + self.assertEqual(cu.intArray()[0], 42) + if __name__ == '__main__': unittest.main() diff --git a/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml b/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml index 1b16e0709..e73ddc228 100644 --- a/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml +++ b/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml @@ -19,6 +19,8 @@ <opaque-container name="std::vector" opaque-containers="int:StdIntVector"/> + <opaque-container name="std::array" opaque-containers="int,3:StdIntArray"/> + <object-type name="Obj"/> <value-type name="Val"> <enum-type name="ValEnum"/> @@ -44,6 +46,11 @@ <replace-type modified-type="StdIntVector"/> </modify-argument> </modify-function> + <modify-function signature="intArray()"> + <modify-argument index="return"> + <replace-type modified-type="StdIntArray"/> + </modify-argument> + </modify-function> </value-type> <!-- Test wrapping of a typedef --> |