mirror of
https://github.com/ModOrganizer2/modorganizer-plugin_python.git
synced 2026-07-27 14:03:33 -07:00
Fixes and tests.
This commit is contained in:
@@ -24,7 +24,6 @@ mo2_python_pip_install(pytest
|
||||
PACKAGES pytest PyQt6==6.3.0)
|
||||
add_dependencies(pytest mobase)
|
||||
|
||||
|
||||
file(GLOB test_files CONFIGURE_DEPENDS "test_*.cpp")
|
||||
foreach (test_file ${test_files})
|
||||
get_filename_component(target ${test_file} NAME_WLE)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
#include <pybind11/pybind11.h>
|
||||
|
||||
#include <tuple>
|
||||
|
||||
using namespace pybind11::literals;
|
||||
|
||||
PYBIND11_MODULE(qt, m)
|
||||
@@ -33,6 +35,7 @@ PYBIND11_MODULE(qt, m)
|
||||
});
|
||||
|
||||
// QMap
|
||||
|
||||
m.def("qmap_to_length", [](QMap<QString, QString> const& map) {
|
||||
QMap<QString, int> res;
|
||||
for (auto it = map.begin(); it != map.end(); ++it) {
|
||||
@@ -56,4 +59,61 @@ PYBIND11_MODULE(qt, m)
|
||||
return datetime.toString(format);
|
||||
},
|
||||
"datetime"_a, "format"_a = Qt::DateFormat::ISODate);
|
||||
|
||||
// QVariant
|
||||
|
||||
m.def("qvariant_from_none", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::Invalid,
|
||||
variant.isValid());
|
||||
});
|
||||
m.def("qvariant_from_int", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::Int, variant.toInt());
|
||||
});
|
||||
m.def("qvariant_from_bool", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::Bool, variant.toBool());
|
||||
});
|
||||
m.def("qvariant_from_str", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::String,
|
||||
variant.toString());
|
||||
});
|
||||
m.def("qvariant_from_list", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::List, variant.toList());
|
||||
});
|
||||
m.def("qvariant_from_map", [](QVariant const& variant) {
|
||||
return std::make_tuple(variant.userType() == QVariant::Map, variant.toMap());
|
||||
});
|
||||
|
||||
m.def("qvariant_none", []() {
|
||||
return QVariant();
|
||||
});
|
||||
m.def("qvariant_int", []() {
|
||||
return QVariant(42);
|
||||
});
|
||||
m.def("qvariant_bool", []() {
|
||||
return QVariant(true);
|
||||
});
|
||||
m.def("qvariant_str", []() {
|
||||
return QVariant("hello world");
|
||||
});
|
||||
m.def("qvariant_list", [] {
|
||||
QVariantMap subMap;
|
||||
subMap["bar"] = 42;
|
||||
subMap["moo"] = QVariantList{44, true};
|
||||
QVariantList list;
|
||||
list.push_back(33);
|
||||
list.push_back(QVariantList{4, "foo"});
|
||||
list.push_back(false);
|
||||
list.push_back("hello");
|
||||
list.push_back(QVariant());
|
||||
list.push_back(subMap);
|
||||
list.push_back(45);
|
||||
return QVariant(list);
|
||||
});
|
||||
m.def("qvariant_map", []() {
|
||||
QVariantMap map;
|
||||
map["bar"] = 42;
|
||||
map["moo"] = true;
|
||||
map["baz"] = "world hello";
|
||||
return map;
|
||||
});
|
||||
}
|
||||
|
||||
+43
-1
@@ -1,6 +1,5 @@
|
||||
import pytest
|
||||
from PyQt6.QtCore import QDateTime, Qt
|
||||
from PyQt6.QtWidgets import QWidget
|
||||
|
||||
m = pytest.importorskip("mobase_tests.qt")
|
||||
|
||||
@@ -48,3 +47,46 @@ def test_qdatetime():
|
||||
assert m.datetime_to_string(date, Qt.DateFormat.TextDate) == date.toString(
|
||||
Qt.DateFormat.TextDate
|
||||
)
|
||||
|
||||
|
||||
def test_qvariant():
|
||||
|
||||
# Python -> C++
|
||||
|
||||
assert m.qvariant_from_none(None) == (True, False)
|
||||
|
||||
assert m.qvariant_from_int(-52) == (True, -52)
|
||||
assert m.qvariant_from_int(0) == (True, 0)
|
||||
assert m.qvariant_from_int(33) == (True, 33)
|
||||
|
||||
assert m.qvariant_from_bool(True) == (True, True)
|
||||
assert m.qvariant_from_bool(False) == (True, False)
|
||||
|
||||
assert m.qvariant_from_str("a string") == (True, "a string")
|
||||
|
||||
assert m.qvariant_from_list([]) == (True, [])
|
||||
assert m.qvariant_from_list([1, "hello", False]) == (True, [1, "hello", False])
|
||||
|
||||
assert m.qvariant_from_map({"a": 33, "b": False, "c": ["a", "b"]}) == (
|
||||
True,
|
||||
{"a": 33, "b": False, "c": ["a", "b"]},
|
||||
)
|
||||
|
||||
# C++ -> Python (see .cpp file for the value)
|
||||
|
||||
assert m.qvariant_none() is None
|
||||
assert m.qvariant_int() == 42
|
||||
assert m.qvariant_bool() is True
|
||||
assert m.qvariant_str() == "hello world"
|
||||
|
||||
assert m.qvariant_map() == {"baz": "world hello", "bar": 42, "moo": True}
|
||||
|
||||
assert m.qvariant_list() == [
|
||||
33,
|
||||
[4, "foo"],
|
||||
False,
|
||||
"hello",
|
||||
None,
|
||||
{"bar": 42, "moo": [44, True]},
|
||||
45,
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user