Files
QtPotato/autotests/glossarystoretest.cpp
T

63 lines
2.0 KiB
C++

// SPDX-License-Identifier: GPL-3.0-or-later
#include "glossarystore.h"
#include <QDir>
#include <QFile>
#include <QStandardPaths>
#include <QTest>
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"