// SPDX-License-Identifier: GPL-2.0-or-later #include #include "diagramcontext.h" #include "qetapp.h" QString QETApp::m_interface_language; /** DiagramContext::fromXml() has two readers: QDom, for projects, and pugixml, for element definitions in the collection. Both must give the values the next save writes -- stray spaces around real content trimmed, accented characters kept. */ class tst_diagramcontext : public QObject { Q_OBJECT static QByteArray xml(const QString &value) { return QStringLiteral( "" "%1" "") .arg(value) .toUtf8(); } static QString fromDom(const QByteArray &data) { QDomDocument doc; if (!doc.setContent(data)) return QStringLiteral(""); DiagramContext dc; dc.fromXml(doc.documentElement(), QStringLiteral("elementInformation")); return dc.value(QStringLiteral("v")).toString(); } static QString fromPugi(const QByteArray &data) { pugi::xml_document doc; if (!doc.load_buffer(data.constData(), size_t(data.size()))) return QStringLiteral(""); DiagramContext dc; dc.fromXml(doc.document_element(), QStringLiteral("elementInformation")); return dc.value(QStringLiteral("v")).toString(); } private slots: void bothReadersAgree_data() { QTest::addColumn("value"); QTest::addColumn("expected"); QTest::newRow("plain") << "PRISE" << "PRISE"; QTest::newRow("stray spaces") << " PRISE " << "PRISE"; QTest::newRow("accents") << "Armoire façade été" << "Armoire façade été"; QTest::newRow("accents and stray spaces") << " Moteur à cage " << "Moteur à cage"; QTest::newRow("non-Latin") << "Двигатель 電機" << "Двигатель 電機"; } void bothReadersAgree() { QFETCH(QString, value); QFETCH(QString, expected); QCOMPARE(fromDom(xml(value)), expected); QCOMPARE(fromPugi(xml(value)), expected); } // remove() forgets the key entirely: a context with a key added // then removed equals one that never had it. remove() used to keep // the key's show flag, so the two never compared equal, and // Project properties > OK saw a change where there was none. void removeForgetsTheKey() { DiagramContext edited; edited.addValue(QStringLiteral("author"), QStringLiteral("N.V.")); edited.addValue(QStringLiteral("01-numprojet"), QString()); edited.remove(QStringLiteral("01-numprojet")); DiagramContext stored; stored.addValue(QStringLiteral("author"), QStringLiteral("N.V.")); QCOMPARE(edited.keys(), stored.keys()); QVERIFY(edited == stored); } }; QTEST_APPLESS_MAIN(tst_diagramcontext) #include "tst_diagramcontext.moc"