// SPDX-License-Identifier: GPL-3.0-or-later #include "glossarystore.h" #include #include #include #include using namespace Qt::Literals::StringLiterals; class GlossaryStoreTest : public QObject { Q_OBJECT private Q_SLOTS: void saveLoadMerge() { QTemporaryDir temp; QStandardPaths::setTestModeEnabled(true); const QString directory = temp.path() + u"/series"_s; GlossaryStore::Glossary original{directory, {{u"Lin"_s, u"Lâm"_s}}}; QVERIFY(GlossaryStore::save(original)); const auto loaded = GlossaryStore::load(directory); QCOMPARE(loaded.entries.size(), 1); const auto merged = GlossaryStore::merge(loaded, {{u"Lin"_s, u"Other"_s}, {u"Sect"_s, u"Tông"_s}}); QCOMPARE(merged.entries.size(), 2); QCOMPARE(merged.entries.at(0).target, u"Lâm"_s); QCOMPARE(merged.entries.at(1).source, u"Sect"_s); } void saveFailureReturnsError() { QTemporaryDir temp; QVERIFY(temp.isValid()); QStandardPaths::setTestModeEnabled(true); const QString appData = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); const QString glossaries = appData + u"/glossaries"_s; QDir(glossaries).removeRecursively(); QVERIFY(QDir().mkpath(appData)); QFile blocker(glossaries); QVERIFY(blocker.open(QIODevice::WriteOnly)); blocker.write("blocked"); blocker.close(); GlossaryStore::Glossary glossary{temp.path(), {{u"Original"_s, u"Translation"_s}}}; QString error; QVERIFY(!GlossaryStore::save(glossary, &error)); QVERIFY(!error.isEmpty()); QFile::remove(glossaries); } void saveRejectsIncompleteEntry() { QString error; QVERIFY(!GlossaryStore::save({QDir::tempPath(), {{u"Original"_s, {}}}}, &error)); QVERIFY(error.contains(u"both"_s)); } }; QTEST_MAIN(GlossaryStoreTest) #include "glossarystoretest.moc"