From 697b3cf1ac45e1cb511a7e395c32cfa8b85780b5 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 10 Jan 2023 13:18:54 +0100 Subject: shiboken6/libminimal: Add a test for std::vector Start a containeruser class and test for simple, sequential containers. Change-Id: I4a88787442c3c899523e9da51474916ca1312897 Reviewed-by: Shyamnath Premnadh --- sources/shiboken6/tests/libminimal/CMakeLists.txt | 1 + .../shiboken6/tests/libminimal/containeruser.cpp | 35 ++++++++++++++++++++++ sources/shiboken6/tests/libminimal/containeruser.h | 28 +++++++++++++++++ .../shiboken6/tests/minimalbinding/CMakeLists.txt | 1 + .../tests/minimalbinding/containeruser_test.py | 33 ++++++++++++++++++++ sources/shiboken6/tests/minimalbinding/global.h | 1 + .../tests/minimalbinding/minimalbinding.pyproject | 1 + .../tests/minimalbinding/typesystem_minimal.xml | 10 +++++++ 8 files changed, 110 insertions(+) create mode 100644 sources/shiboken6/tests/libminimal/containeruser.cpp create mode 100644 sources/shiboken6/tests/libminimal/containeruser.h create mode 100644 sources/shiboken6/tests/minimalbinding/containeruser_test.py (limited to 'sources') diff --git a/sources/shiboken6/tests/libminimal/CMakeLists.txt b/sources/shiboken6/tests/libminimal/CMakeLists.txt index f906bdb84..1b14d5697 100644 --- a/sources/shiboken6/tests/libminimal/CMakeLists.txt +++ b/sources/shiboken6/tests/libminimal/CMakeLists.txt @@ -1,6 +1,7 @@ project(libminimal) set(libminimal_SRC +containeruser.cpp obj.cpp listuser.cpp typedef.cpp diff --git a/sources/shiboken6/tests/libminimal/containeruser.cpp b/sources/shiboken6/tests/libminimal/containeruser.cpp new file mode 100644 index 000000000..78fc7a045 --- /dev/null +++ b/sources/shiboken6/tests/libminimal/containeruser.cpp @@ -0,0 +1,35 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include "containeruser.h" + +#include +#include + +ContainerUser::ContainerUser() : m_intVector{1, 2, 3} +{ +} + +ContainerUser::~ContainerUser() = default; + +std::vector ContainerUser::createIntVector(int num) +{ + std::vector retval(num); + std::iota(retval.begin(), retval.end(), 0); + return retval; +} + +int ContainerUser::sumIntVector(const std::vector &intVector) +{ + return std::accumulate(intVector.cbegin(), intVector.cend(), 0); +} + +std::vector &ContainerUser::intVector() +{ + return m_intVector; +} + +void ContainerUser::setIntVector(const std::vector &v) +{ + m_intVector = v; +} diff --git a/sources/shiboken6/tests/libminimal/containeruser.h b/sources/shiboken6/tests/libminimal/containeruser.h new file mode 100644 index 000000000..4cb4df0b9 --- /dev/null +++ b/sources/shiboken6/tests/libminimal/containeruser.h @@ -0,0 +1,28 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#ifndef CONTAINERUSER_H +#define CONTAINERUSER_H + +#include "libminimalmacros.h" + +#include + +/// Exercise simple, sequential containers. More advanced tests are in ListUser +class LIBMINIMAL_API ContainerUser +{ +public: + ContainerUser(); + ~ContainerUser(); + + static std::vector createIntVector(int num); + static int sumIntVector(const std::vector &intVector); + + std::vector &intVector(); + void setIntVector(const std::vector &); + +private: + std::vector m_intVector; +}; + +#endif // CONTAINERUSER_H diff --git a/sources/shiboken6/tests/minimalbinding/CMakeLists.txt b/sources/shiboken6/tests/minimalbinding/CMakeLists.txt index 1b8c259e6..317d1478b 100644 --- a/sources/shiboken6/tests/minimalbinding/CMakeLists.txt +++ b/sources/shiboken6/tests/minimalbinding/CMakeLists.txt @@ -6,6 +6,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/typesystem_minimal.xml set(minimal_SRC ${CMAKE_CURRENT_BINARY_DIR}/minimal/minimal_module_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/minimal/containeruser_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/minimal/obj_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/minimal/val_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/minimal/listuser_wrapper.cpp diff --git a/sources/shiboken6/tests/minimalbinding/containeruser_test.py b/sources/shiboken6/tests/minimalbinding/containeruser_test.py new file mode 100644 index 000000000..b08989d2f --- /dev/null +++ b/sources/shiboken6/tests/minimalbinding/containeruser_test.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import os +import sys +import unittest + +from pathlib import Path +sys.path.append(os.fspath(Path(__file__).resolve().parents[1])) +from shiboken_paths import init_paths +init_paths() + +from minimal import ContainerUser + + +class ContainerTest(unittest.TestCase): + """Simple test for converting std::vector and using an opaque container. + For advanced tests, see ListUser.""" + def testVectorConversion(self): + v = ContainerUser.createIntVector(4) + self.assertEqual(ContainerUser.sumIntVector(v), 6) + + def testVectorOpaqueContainer(self): + cu = ContainerUser() + oc = cu.intVector() + self.assertEqual(oc[0], 1) + oc[0] = 42 + self.assertEqual(cu.intVector()[0], 42) + + +if __name__ == '__main__': + unittest.main() diff --git a/sources/shiboken6/tests/minimalbinding/global.h b/sources/shiboken6/tests/minimalbinding/global.h index 573e826d7..4e792705a 100644 --- a/sources/shiboken6/tests/minimalbinding/global.h +++ b/sources/shiboken6/tests/minimalbinding/global.h @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "obj.h" +#include "containeruser.h" #include "val.h" #include "minbool.h" #include "listuser.h" diff --git a/sources/shiboken6/tests/minimalbinding/minimalbinding.pyproject b/sources/shiboken6/tests/minimalbinding/minimalbinding.pyproject index d68e3811f..ab19dc443 100644 --- a/sources/shiboken6/tests/minimalbinding/minimalbinding.pyproject +++ b/sources/shiboken6/tests/minimalbinding/minimalbinding.pyproject @@ -1,5 +1,6 @@ { "files": ["brace_pattern_test.py", + "containeruser_test.py", "listuser_test.py", "minbool_test.py", "obj_test.py", diff --git a/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml b/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml index b5e0d0532..1b16e0709 100644 --- a/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml +++ b/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml @@ -17,6 +17,8 @@ + + @@ -36,6 +38,14 @@ + + + + + + + + -- cgit v1.2.3