aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/tests
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/tests')
-rw-r--r--sources/shiboken6/tests/libminimal/containeruser.cpp22
-rw-r--r--sources/shiboken6/tests/libminimal/containeruser.h8
-rw-r--r--sources/shiboken6/tests/minimalbinding/containeruser_test.py11
-rw-r--r--sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml7
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 -->