diff options
Diffstat (limited to 'tests/test_keymap.cpp')
| -rw-r--r-- | tests/test_keymap.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/test_keymap.cpp b/tests/test_keymap.cpp index 10863f2..229fba6 100644 --- a/tests/test_keymap.cpp +++ b/tests/test_keymap.cpp @@ -13,6 +13,7 @@ private slots: void chordSequenceParses(); void unknownActionIsReported(); void invalidSequenceIsReported(); + void collidingOverridesAreReported(); }; void TestKeyMap::defaultsAreLoaded() @@ -127,5 +128,51 @@ void TestKeyMap::invalidSequenceIsReported() QCOMPARE(map.warnings().size(), 1); } +void TestKeyMap::collidingOverridesAreReported() +{ + // "y" and "Y" both normalize to the same QKeySequence ("Y"), so binding + // both in [keys] is a genuine collision that must not silently drop one. + { + QTemporaryDir dir; + const QString path = dir.filePath(QStringLiteral("t.conf")); + { + QSettings s(path, QSettings::IniFormat); + s.beginGroup(QStringLiteral("keys")); + s.setValue(QStringLiteral("y"), QStringLiteral("archive")); + s.setValue(QStringLiteral("Y"), QStringLiteral("delete")); + s.endGroup(); + } + + KeyMap map; + QSettings s(path, QSettings::IniFormat); + map.loadOverrides(s); + + QCOMPARE(map.warnings().size(), 1); + QVERIFY(map.warnings().first().contains(QStringLiteral("archive"))); + QVERIFY(map.warnings().first().contains(QStringLiteral("delete"))); + } + + // Overriding a default is not a collision: loadDefaults() puts 'j' in + // the map first, then the override pass rebinds the same 'j'. That must + // stay silent (regression check for iniOverridesDefault's scenario). + { + QTemporaryDir dir; + const QString path = dir.filePath(QStringLiteral("t.conf")); + { + QSettings s(path, QSettings::IniFormat); + s.beginGroup(QStringLiteral("keys")); + s.setValue(QStringLiteral("j"), QStringLiteral("archive")); + s.endGroup(); + } + + KeyMap map; + map.loadDefaults(); + QSettings s(path, QSettings::IniFormat); + map.loadOverrides(s); + + QCOMPARE(map.warnings().size(), 0); + } +} + QTEST_MAIN(TestKeyMap) #include "test_keymap.moc" |
