diff options
author | hjk <hjk121@nokiamail.com> | 2014-09-23 13:40:14 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-09-23 15:45:38 +0200 |
commit | 917aa1064ee2a80cc9e869196c444d05debba73d (patch) | |
tree | e278bd408ac7d47f5bde541b49eab488eff384c7 /src/plugins/fakevim | |
parent | 7fde14f0c7a683f6581cb6ba1917a1428b18d7ab (diff) | |
download | qt-creator-917aa1064ee2a80cc9e869196c444d05debba73d.tar.gz |
FakeVim: Factor out some test code
GCC 4.8.2 starts choking on the test size.
Change-Id: I65c80917c9bad067bb7d8e69e2431dd1c4886b08
Reviewed-by: hjk <hjk121@nokiamail.com>
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r-- | src/plugins/fakevim/fakevim_test.cpp | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index 039018f765..d9ae5ac79f 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -74,45 +74,44 @@ static const QString helpFormat = _( "\n\tShould be:\n" \ LINE_START "%4" LINE_END); +static QByteArray textWithCursor(const QByteArray &text, int position) +{ + return (position == -1) ? text : (text.left(position) + X + text.mid(position)); +} + +static QByteArray textWithCursor(const QByteArray &text, const QTextBlock &block, int column) +{ + const int pos = block.position() + qMin(column, qMax(0, block.length() - 2)); + return text.left(pos) + X + text.mid(pos); +} + // Compare document contents with a expectedText. // Also check cursor position if the expectedText contains | chracter. -#define COMPARE(beforeText, beforePosition, afterText, afterPosition, expectedText, cmd) \ - do { \ - QByteArray before(beforeText); \ - QByteArray actual(afterText); \ - QByteArray expected = expectedText; \ - data.oldPosition = beforePosition; \ - data.oldText = before; \ - if (expected.contains(X)) {\ - before = textWithCursor(before, beforePosition); \ - actual = textWithCursor(actual, afterPosition); \ - } \ - QString help = helpFormat \ - .arg(_(cmd)) \ - .arg(_(before.replace('\n', LINE_END LINE_START))) \ - .arg(_(actual.replace('\n', LINE_END LINE_START))) \ - .arg(_(expected.replace('\n', LINE_END LINE_START))); \ - QVERIFY2(actual == expected, help.toLatin1().constData()); \ - } while (false) // Send keys and check if the expected result is same as document contents. // Escape is always prepended to keys so that previous command is cancelled. -#define KEYS(keys, expected) \ +#define KEYS(keys, expectedText) \ do { \ QByteArray beforeText(data.text()); \ int beforePosition = data.position(); \ data.doKeys("<ESC>"); \ data.doKeys(keys); \ - COMPARE(beforeText, beforePosition, data.text(), data.position(), (expected), (keys)); \ + QByteArray actual(data.text()); \ + QByteArray expected = expectedText; \ + QByteArray desc = data.fixup(_(keys), beforeText, actual, expected, beforePosition); \ + QVERIFY2(actual == expected, desc.constData()); \ } while (false) // Run Ex command and check if the expected result is same as document contents. -#define COMMAND(cmd, expected) \ +#define COMMAND(cmd, expectedText) \ do { \ QByteArray beforeText(data.text()); \ int beforePosition = data.position(); \ data.doCommand(cmd); \ - COMPARE(beforeText, beforePosition, data.text(), data.position(), (expected), (":" cmd)); \ + QByteArray actual(data.text()); \ + QByteArray expected = expectedText; \ + QByteArray desc = data.fixup(_(":" cmd), beforeText, actual, expected, beforePosition); \ + QVERIFY2(actual == expected, desc.constData()); \ } while (false) // Test undo, redo and repeat of last single command. This doesn't test cursor position. @@ -140,17 +139,6 @@ static const QString helpFormat = _( using namespace FakeVim::Internal; using namespace TextEditor; -static QByteArray textWithCursor(const QByteArray &text, int position) -{ - return (position == -1) ? text : (text.left(position) + X + text.mid(position)); -} - -static QByteArray textWithCursor(const QByteArray &text, const QTextBlock &block, int column) -{ - const int pos = block.position() + qMin(column, qMax(0, block.length() - 2)); - return text.left(pos) + X + text.mid(pos); -} - const QByteArray testLines = /* 0 1 2 3 4 */ /* 0123456789012345678901234567890123457890 */ @@ -203,6 +191,23 @@ struct FakeVimPlugin::TestData QTextCursor cursor() const { return editor()->textCursor(); } + QByteArray fixup(const QString &cmd, QByteArray &before, + QByteArray &actual, QByteArray &expected, + int beforePosition) + { + oldPosition = beforePosition; + oldText = before; + if (expected.contains(X)) { + before = textWithCursor(before, beforePosition); + actual = textWithCursor(actual, position()); + } + return helpFormat + .arg(cmd) + .arg(QString::fromLatin1(before.replace('\n', LINE_END LINE_START))) + .arg(QString::fromLatin1(actual.replace('\n', LINE_END LINE_START))) + .arg(QString::fromLatin1(expected.replace('\n', LINE_END LINE_START))).toLatin1(); + } + int position() const { return cursor().position(); |