mirror of
https://github.com/ModOrganizer2/modorganizer-plugin_python.git
synced 2026-07-27 14:03:33 -07:00
Add basic tests for QFlags.
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <tuple>
|
||||
|
||||
namespace py = pybind11;
|
||||
using namespace pybind11::literals;
|
||||
|
||||
PYBIND11_MODULE(qt, m)
|
||||
@@ -116,4 +117,29 @@ PYBIND11_MODULE(qt, m)
|
||||
map["baz"] = "world hello";
|
||||
return map;
|
||||
});
|
||||
|
||||
// QFlags
|
||||
|
||||
enum SimpleEnum { Value0 = 0x1, Value1 = 0x2, Value2 = 0x4 };
|
||||
Q_DECLARE_FLAGS(SimpleEnumFlags, SimpleEnum);
|
||||
|
||||
py::enum_<SimpleEnum>(m, "SimpleEnum", py::arithmetic())
|
||||
.value("Value0", Value0)
|
||||
.value("Value1", Value1)
|
||||
.value("Value2", Value2);
|
||||
|
||||
m.def("qflags_explode", [](SimpleEnumFlags const& flags) {
|
||||
return std::make_tuple(flags.toInt(), flags.testFlag(Value0),
|
||||
flags.testFlag(Value1), flags.testFlag(Value2));
|
||||
});
|
||||
m.def("qflags_create", [](bool v0, bool v1, bool v2) {
|
||||
SimpleEnumFlags r;
|
||||
if (v0)
|
||||
r.setFlag(Value0);
|
||||
if (v1)
|
||||
r.setFlag(Value1);
|
||||
if (v2)
|
||||
r.setFlag(Value2);
|
||||
return r;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -90,3 +90,23 @@ def test_qvariant():
|
||||
{"bar": 42, "moo": [44, True]},
|
||||
45,
|
||||
]
|
||||
|
||||
|
||||
def test_qflags():
|
||||
v0, v1, v2 = m.SimpleEnum.Value0, m.SimpleEnum.Value1, m.SimpleEnum.Value2
|
||||
|
||||
assert m.qflags_explode(v0 | v1) == (0x3, True, True, False)
|
||||
assert m.qflags_explode(v0 | v2) == (0x5, True, False, True)
|
||||
assert m.qflags_explode(0) == (0, False, False, False)
|
||||
|
||||
assert not (m.qflags_create(False, False, False) & v0)
|
||||
assert not (m.qflags_create(False, False, False) & v1)
|
||||
assert not (m.qflags_create(False, False, False) & v2)
|
||||
|
||||
assert m.qflags_create(True, False, False) & v0
|
||||
assert m.qflags_create(True, True, False) & v0
|
||||
assert m.qflags_create(True, True, False) & v1
|
||||
assert not (m.qflags_create(True, True, False) & v2)
|
||||
|
||||
assert m.qflags_create(True, False, False) | v0 == v0
|
||||
assert m.qflags_create(True, False, False) | v0 | v2 == v0 | v2
|
||||
|
||||
Reference in New Issue
Block a user