102 lines
3.1 KiB
C++
102 lines
3.1 KiB
C++
/*
|
|
* SPDX-License-Identifier: LGPL-2.0-or-later
|
|
*
|
|
* Live test: run the ":"-verbs directly (DeftCommands::runVerb) on a real
|
|
* KTextEditor Document/View and confirm the buffer is mutated. This is the path
|
|
* the command palette uses, independent of the editor's command registry.
|
|
* Requires a (headless) QApplication; run with QT_QPA_PLATFORM=offscreen.
|
|
*/
|
|
#include "deftcommands.h"
|
|
|
|
#include <KTextEditor/Document>
|
|
#include <KTextEditor/Editor>
|
|
#include <KTextEditor/View>
|
|
|
|
#include <QTest>
|
|
|
|
using namespace deft;
|
|
|
|
class TestDeftCommandsLive : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
KTextEditor::Editor *m_editor = nullptr;
|
|
|
|
KTextEditor::View *makeView(const QString &text, KTextEditor::Document *&docOut)
|
|
{
|
|
docOut = m_editor->createDocument(this);
|
|
docOut->setText(text);
|
|
return docOut->createView(nullptr);
|
|
}
|
|
|
|
private Q_SLOTS:
|
|
void initTestCase()
|
|
{
|
|
m_editor = KTextEditor::Editor::instance();
|
|
QVERIFY(m_editor);
|
|
}
|
|
|
|
void caseUpperWholeDocument()
|
|
{
|
|
KTextEditor::Document *doc = nullptr;
|
|
KTextEditor::View *v = makeView(QStringLiteral("helloWorld"), doc);
|
|
QString msg;
|
|
QVERIFY2(DeftCommands::runVerb(v, QStringLiteral("case upper"), msg), qPrintable(msg));
|
|
QCOMPARE(doc->text(), QStringLiteral("HELLOWORLD"));
|
|
delete v;
|
|
delete doc;
|
|
}
|
|
|
|
void rot13OnSelection()
|
|
{
|
|
KTextEditor::Document *doc = nullptr;
|
|
KTextEditor::View *v = makeView(QStringLiteral("abc XYZ"), doc);
|
|
v->setSelection(doc->documentRange());
|
|
QString msg;
|
|
QVERIFY(DeftCommands::runVerb(v, QStringLiteral("rot13"), msg));
|
|
QCOMPARE(doc->text(), QStringLiteral("nop KLM"));
|
|
delete v;
|
|
delete doc;
|
|
}
|
|
|
|
void sortLinesWholeDocument()
|
|
{
|
|
KTextEditor::Document *doc = nullptr;
|
|
KTextEditor::View *v = makeView(QStringLiteral("banana\napple\ncherry"), doc);
|
|
QString msg;
|
|
QVERIFY(DeftCommands::runVerb(v, QStringLiteral("sort"), msg));
|
|
QCOMPARE(doc->text(), QStringLiteral("apple\nbanana\ncherry"));
|
|
delete v;
|
|
delete doc;
|
|
}
|
|
|
|
void uuidInsertsAtCursor()
|
|
{
|
|
KTextEditor::Document *doc = nullptr;
|
|
KTextEditor::View *v = makeView(QString(), doc);
|
|
QString msg;
|
|
QVERIFY(DeftCommands::runVerb(v, QStringLiteral("uuid"), msg));
|
|
QCOMPARE(doc->text().size(), 36); // 8-4-4-4-12 + 4 hyphens
|
|
delete v;
|
|
delete doc;
|
|
}
|
|
|
|
void base64RoundTripOnSelection()
|
|
{
|
|
KTextEditor::Document *doc = nullptr;
|
|
KTextEditor::View *v = makeView(QStringLiteral("hello"), doc);
|
|
v->setSelection(doc->documentRange());
|
|
QString msg;
|
|
QVERIFY(DeftCommands::runVerb(v, QStringLiteral("b64enc"), msg));
|
|
QCOMPARE(doc->text(), QStringLiteral("aGVsbG8="));
|
|
v->setSelection(doc->documentRange());
|
|
QVERIFY(DeftCommands::runVerb(v, QStringLiteral("b64dec"), msg));
|
|
QCOMPARE(doc->text(), QStringLiteral("hello"));
|
|
delete v;
|
|
delete doc;
|
|
}
|
|
};
|
|
|
|
QTEST_MAIN(TestDeftCommandsLive)
|
|
#include "test_deftcommands_live.moc"
|