From 8f8d8f71dd5d24d2d6f6075bd05ef2e5955d5678 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 12 Jan 2023 09:29:17 +0100 Subject: tst_QPermission: add more tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The new test: - checks the properties of stateful QPermissions work - ensures that piping a QPermission through QPermission maintains state - also ensures that assignment of a QPermission to a QPermission works (via QPermission(Type) + move ctor) Pick-to: 6.5 Change-Id: I340e49b1ecc665702ccab26d9050ca158b0e7885 Reviewed-by: Tor Arne Vestbø --- .../corelib/kernel/qpermission/tst_qpermission.cpp | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) (limited to 'tests') diff --git a/tests/auto/corelib/kernel/qpermission/tst_qpermission.cpp b/tests/auto/corelib/kernel/qpermission/tst_qpermission.cpp index d49ba9f475..fa3d444e80 100644 --- a/tests/auto/corelib/kernel/qpermission/tst_qpermission.cpp +++ b/tests/auto/corelib/kernel/qpermission/tst_qpermission.cpp @@ -24,6 +24,7 @@ private Q_SLOTS: void converting_Microphone() const { return converting_impl(); } void converting_Bluetooth() const { return converting_impl(); } + void conversionMaintainsState() const; private: template void converting_impl() const; @@ -61,5 +62,75 @@ void tst_QPermission::converting_impl() const } } +void tst_QPermission::conversionMaintainsState() const +{ + DummyPermission dummy{42}, dummy_default; + QCOMPARE_NE(dummy.state, dummy_default.state); + + QLocationPermission loc, loc_default; + QCOMPARE_EQ(loc_default.accuracy(), QLocationPermission::Accuracy::Approximate); + QCOMPARE_EQ(loc_default.availability(), QLocationPermission::Availability::WhenInUse); + + loc.setAccuracy(QLocationPermission::Accuracy::Precise); + loc.setAvailability(QLocationPermission::Availability::Always); + + QCOMPARE_EQ(loc.accuracy(), QLocationPermission::Accuracy::Precise); + QCOMPARE_EQ(loc.availability(), QLocationPermission::Availability::Always); + + QCalendarPermission cal, cal_default; + QCOMPARE_EQ(cal_default.isReadWrite(), false); + + cal.setReadWrite(true); + + QCOMPARE_EQ(cal.isReadWrite(), true); + + QContactsPermission con, con_default; + QCOMPARE_EQ(con_default.isReadWrite(), false); + + con.setReadWrite(true); + + QCOMPARE_EQ(con.isReadWrite(), true); + + // + // QCameraPermission, QMicrophonePermission, QBluetoothPermission don't have + // state at the time of writing + // + + QPermission p; // maintain state between the blocks below to test reset behavior + + { + p = dummy; + auto r = p.data(); + QCOMPARE_EQ(r.state, dummy.state); + // check mismatched returns default-constructed value: + QCOMPARE_EQ(p.data().isReadWrite(), cal_default.isReadWrite()); + } + + { + p = loc; + auto r = p.data(); + QCOMPARE_EQ(r.accuracy(), loc.accuracy()); + QCOMPARE_EQ(r.availability(), loc.availability()); + // check mismatched returns default-constructed value: + QCOMPARE_EQ(p.data().state, dummy_default.state); + } + + { + p = con; + auto r = p.data(); + QCOMPARE_EQ(r.isReadWrite(), con.isReadWrite()); + // check mismatched returns default-constructed value: + QCOMPARE_EQ(p.data().accuracy(), loc_default.accuracy()); + } + + { + p = cal; + auto r = p.data(); + QCOMPARE_EQ(r.isReadWrite(), cal.isReadWrite()); + // check mismatched returns default-constructed value: + QCOMPARE_EQ(p.data().isReadWrite(), con_default.isReadWrite()); + } +} + QTEST_APPLESS_MAIN(tst_QPermission) #include "tst_qpermission.moc" -- cgit v1.2.3