summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2023-01-12 09:29:17 +0100
committerMarc Mutz <marc.mutz@qt.io>2023-01-13 17:10:43 +0000
commit8f8d8f71dd5d24d2d6f6075bd05ef2e5955d5678 (patch)
treee8fff8a5f734435dcc5755231a8306ba3327ec13 /tests
parent7a1bf4c628e4b90d1b5f96b6018c80070222088c (diff)
tst_QPermission: add more tests
The new test: - checks the properties of stateful Q<Typed>Permissions work - ensures that piping a Q<Typed>Permission through QPermission maintains state - also ensures that assignment of a Q<Typed>Permission to a QPermission works (via QPermission(Type) + move ctor) Pick-to: 6.5 Change-Id: I340e49b1ecc665702ccab26d9050ca158b0e7885 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qpermission/tst_qpermission.cpp71
1 files changed, 71 insertions, 0 deletions
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<QMicrophonePermission>(); }
void converting_Bluetooth() const { return converting_impl<QBluetoothPermission>(); }
+ void conversionMaintainsState() const;
private:
template <typename T>
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<DummyPermission>();
+ QCOMPARE_EQ(r.state, dummy.state);
+ // check mismatched returns default-constructed value:
+ QCOMPARE_EQ(p.data<QCalendarPermission>().isReadWrite(), cal_default.isReadWrite());
+ }
+
+ {
+ p = loc;
+ auto r = p.data<QLocationPermission>();
+ QCOMPARE_EQ(r.accuracy(), loc.accuracy());
+ QCOMPARE_EQ(r.availability(), loc.availability());
+ // check mismatched returns default-constructed value:
+ QCOMPARE_EQ(p.data<DummyPermission>().state, dummy_default.state);
+ }
+
+ {
+ p = con;
+ auto r = p.data<QContactsPermission>();
+ QCOMPARE_EQ(r.isReadWrite(), con.isReadWrite());
+ // check mismatched returns default-constructed value:
+ QCOMPARE_EQ(p.data<QLocationPermission>().accuracy(), loc_default.accuracy());
+ }
+
+ {
+ p = cal;
+ auto r = p.data<QCalendarPermission>();
+ QCOMPARE_EQ(r.isReadWrite(), cal.isReadWrite());
+ // check mismatched returns default-constructed value:
+ QCOMPARE_EQ(p.data<QContactsPermission>().isReadWrite(), con_default.isReadWrite());
+ }
+}
+
QTEST_APPLESS_MAIN(tst_QPermission)
#include "tst_qpermission.moc"