diff options
-rw-r--r-- | src/plugins/fakevim/fakevim_test.cpp | 777 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimplugin.h | 24 |
2 files changed, 393 insertions, 408 deletions
diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index 6bdf31be44..5fcdd37918 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -49,28 +49,14 @@ * Tests after this macro will be skipped and warning printed. * Uncomment it to test a feature -- if tests succeeds it should be removed from the test. */ -#define NOT_IMPLEMENTED return; +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) +# define NOT_IMPLEMENTED QSKIP("Not fully implemented!", SkipSingle); +#else +# define NOT_IMPLEMENTED QSKIP("Not fully implemented!"); +#endif -// QTest::qSkip("Not fully implemented!", QTest::SkipSingle, __FILE__, __LINE__); -// return; - -// Text cursor representation in comparisons (set empty to disable cursor position checking). +// Text cursor representation in comparisons. #define X "|" -const QString cursorString(X); - -const QString testLines = - /* 0 1 2 3 4 */ - /* 0123456789012345678901234567890123457890 */ - "\n" - "#include <QtCore>\n" - "#include <QtGui>\n" - "\n" - "int main(int argc, char *argv[])\n" - "{\n" - " QApplication app(argc, argv);\n" - "\n" - " return app.exec();\n" - "}\n"; // More distinct line separator in code. #define N "\n" @@ -89,7 +75,7 @@ static const QString helpFormat = LINE_START "%4" LINE_END; // Compare document contents with a expectedText. -// Also check cursor position if the expectedText contains cursorString. +// Also check cursor position if the expectedText contains | chracter. #define COMPARE(beforeText, beforePosition, afterText, afterPosition, expectedText, cmd) \ do { \ QString before(beforeText); \ @@ -97,7 +83,7 @@ static const QString helpFormat = QString expected(expectedText); \ data.oldPosition = beforePosition; \ data.oldText = before; \ - if (!cursorString.isEmpty() && expected.contains(cursorString)) {\ + if (expected.contains(X)) {\ before = textWithCursor(before, beforePosition); \ actual = textWithCursor(actual, afterPosition); \ } \ @@ -156,15 +142,41 @@ using namespace TextEditor; static QString textWithCursor(const QString &text, int position) { - return (position == -1) ? text : (text.left(position) + cursorString + text.mid(position)); + return (position == -1) ? text : (text.left(position) + X + text.mid(position)); } static QString textWithCursor(const QString &text, const QTextBlock &block, int column) { const int pos = block.position() + qMin(column, qMax(0, block.length() - 2)); - return text.left(pos) + cursorString + text.mid(pos); + return text.left(pos) + X + text.mid(pos); } +const QString testLines = + /* 0 1 2 3 4 */ + /* 0123456789012345678901234567890123457890 */ + "\n" + "#include <QtCore>\n" + "#include <QtGui>\n" + "\n" + "int main(int argc, char *argv[])\n" + "{\n" + " QApplication app(argc, argv);\n" + "\n" + " return app.exec();\n" + "}\n"; + +const QStringList l = testLines.split('\n'); + +// Insert cursor char at pos, negative counts from back. +static QString cursor(int line, int column) +{ + const int col = column >= 0 ? column : l[line].size() + column; + QStringList res = l.mid(0, line) << textWithCursor(l[line], col); + res.append(l.mid(line + 1)); + return res.join("\n"); +} + +static QString lmid(int i, int n = -1) { return QStringList(l.mid(i, n)).join("\n"); } // Data for tests containing BaseTextEditorWidget and FakeVimHAndler. struct FakeVimPlugin::TestData @@ -199,8 +211,8 @@ struct FakeVimPlugin::TestData { doKeys("<ESC>"); QString str = text; - int i = str.indexOf(cursorString); - if (!cursorString.isEmpty() && i != -1) + int i = str.indexOf(X); + if (i != -1) str.remove(i, 1); editor()->document()->setPlainText(str); setPosition(i); @@ -1860,14 +1872,14 @@ void FakeVimPlugin::test_vim_command_cc() TestData data; setup(&data); - data.setText("|123" N "456" N "789" N "abc"); - KEYS("cc456<ESC>", "45|6" N "456" N "789" N "abc"); - KEYS("ccabc<Esc>", "ab|c" N "456" N "789" N "abc"); -// KEYS(".<Esc>", "ab|c" N "456" N "789" N "abc"); -// KEYS("j<Esc>", "abc" N "45|6" N "789" N "abc"); -// KEYS(".<Esc>", "abc" N "456" N "78|9" N "abc"); -// KEYS("kkk<Esc>", "ab|c" N "456" N "789" N "abc"); -// KEYS("3ccxyz<Esc>", "xy|z" N "abc"); + data.setText( "|123" N "456" N "789" N "abc"); + KEYS("cc456<ESC>", "45|6" N "456" N "789" N "abc"); + KEYS("ccabc<Esc>", "ab|c" N "456" N "789" N "abc"); + KEYS(".", "ab|c" N "456" N "789" N "abc"); + KEYS("j", "abc" N "45|6" N "789" N "abc"); + KEYS(".", "abc" N "ab|c" N "789" N "abc"); + KEYS("kkk", "ab|c" N "abc" N "789" N "abc"); + KEYS("3ccxyz<Esc>", "xy|z" N "abc"); } void FakeVimPlugin::test_vim_command_cw() @@ -1882,236 +1894,271 @@ void FakeVimPlugin::test_vim_command_cj() { TestData data; setup(&data); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("cj<Esc>", l[0]+"\n@" + "\n" + lmid(3)); -// KEYS("P", lmid(0,1)+"\n" + "@"+lmid(1,2)+"\n" + "\n" + lmid(3)); -// KEYS("u", l[0]+"\n@" + "\n" + lmid(3)); -// TestData data; -// setup(&data); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("cjabc<Esc>", l[0]+"\nab@c\n" + lmid(3)); -// KEYS("u", lmid(0,1)+"\n" + cursor(l[1], -1)+"\n" + lmid(2)); -// KEYS("gg", "@" + lmid(0)); -// KEYS(".", "ab@c\n" + lmid(2)); + data.setText(testLines); + KEYS("j$", cursor(1, -1)); + KEYS("cj<Esc>", l[0]+"\n|" + "\n" + lmid(3)); + KEYS("P", lmid(0,1)+"\n" + "|"+lmid(1,2)+"\n" + "\n" + lmid(3)); + KEYS("u", l[0]+"\n|" + "\n" + lmid(3)); + + data.setText(testLines); + KEYS("j$", cursor(1, -1)); + KEYS("cjabc<Esc>", l[0]+"\nab|c\n" + lmid(3)); + KEYS("u", cursor(2, 0)); + KEYS("gg", cursor(0, 0)); + KEYS(".", "ab|c\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_ck() { TestData data; setup(&data); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("ck<Esc>", "@\n" + lmid(2)); -// KEYS("P", "@" + lmid(0,2)+"\n" + "\n" + lmid(2)); + + data.setText(testLines); + KEYS("j$", cursor(1, -1)); + KEYS("ck<Esc>", "|\n" + lmid(2)); + KEYS("P", "|" + lmid(0,2)+"\n" + "\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_c_dollar() { TestData data; setup(&data); -// KEYS("j", "@" + l[1]); -// KEYS("$", cursor(l[1], -1)); -// KEYS("c$<Esc>", l[0]+"\n" + l[1].left(l[1].length()-2)+"@"+l[1][l[1].length()-2]+"\n" + lmid(2)); -// KEYS("c$<Esc>", l[0]+"\n" + l[1].left(l[1].length()-3)+"@"+l[1][l[1].length()-3]+"\n" + lmid(2)); -// KEYS("0c$abc<Esc>", l[0]+"\n" + "ab@c\n" + lmid(2)); -// KEYS("0c$abc<Esc>", l[0]+"\n" + "ab@c\n" + lmid(2)); + + data.setText(testLines); + KEYS("j", cursor(1, 0)); + KEYS("$", cursor(1, -1)); + KEYS("c$<Esc>", l[0]+"\n" + l[1].left(l[1].length()-2)+"|"+l[1][l[1].length()-2]+"\n" + lmid(2)); + KEYS("c$<Esc>", l[0]+"\n" + l[1].left(l[1].length()-3)+"|"+l[1][l[1].length()-3]+"\n" + lmid(2)); + KEYS("0c$abc<Esc>", l[0]+"\n" + "ab|c\n" + lmid(2)); + KEYS("0c$abc<Esc>", l[0]+"\n" + "ab|c\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_C() { TestData data; setup(&data); -// KEYS("j", "@" + l[1]); -// KEYS("Cabc<Esc>", l[0] + "\nab@c\n" + lmid(2)); -// KEYS("Cabc<Esc>", l[0] + "\nabab@c\n" + lmid(2)); -// KEYS("$Cabc<Esc>", l[0] + "\nababab@c\n" + lmid(2)); -// KEYS("0C<Esc>", l[0] + "\n@\n" + lmid(2)); -// KEYS("0Cabc<Esc>", l[0] + "\nab@c\n" + lmid(2)); + + data.setText(testLines); + KEYS("j", cursor(1, 0)); + KEYS("Cabc<Esc>", l[0] + "\nab|c\n" + lmid(2)); + KEYS("Cabc<Esc>", l[0] + "\nabab|c\n" + lmid(2)); + KEYS("$Cabc<Esc>", l[0] + "\nababab|c\n" + lmid(2)); + KEYS("0C<Esc>", l[0] + "\n|\n" + lmid(2)); + KEYS("0Cabc<Esc>", l[0] + "\nab|c\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_dw() { TestData data; setup(&data); -// KEYS("dw", "@#include <QtCore>\n" + lmid(2)); -// KEYS("dw", "@include <QtCore>\n" + lmid(2)); -// KEYS("dw", "@<QtCore>\n" + lmid(2)); -// KEYS("dw", "@QtCore>\n" + lmid(2)); -// KEYS("dw", "@>\n" + lmid(2)); -// KEYS("dw", "@\n" + lmid(2)); // Real vim has this intermediate step, too -// KEYKEYS("dw", "@#include <QtGui>\n" + lmid(3)); -// KEYS("dw", "@include <QtGui>\n" + lmid(3)); -// KEYS("dw", "@<QtGui>\n" + lmid(3)); -// KEYS("dw", "@QtGui>\n" + lmid(3)); -// KEYS("dw", "@>\n" + lmid(3)); + + data.setText(testLines); + KEYS("dw", "|#include <QtCore>\n" + lmid(2)); + KEYS("dw", "|include <QtCore>\n" + lmid(2)); + KEYS("dw", "|<QtCore>\n" + lmid(2)); + KEYS("dw", "|QtCore>\n" + lmid(2)); + KEYS("dw", "|>\n" + lmid(2)); + KEYS("dw", "|\n" + lmid(2)); // Real vim has this intermediate step, too + KEYS("dw", "|#include <QtGui>\n" + lmid(3)); + KEYS("dw", "|include <QtGui>\n" + lmid(3)); + KEYS("dw", "|<QtGui>\n" + lmid(3)); + KEYS("dw", "|QtGui>\n" + lmid(3)); + KEYS("dw", "|>\n" + lmid(3)); } void FakeVimPlugin::test_vim_command_dd() { TestData data; setup(&data); -// KEYS("j", "@" + l[1]); -// KEYS("dd", l[0] + "\n@" + lmid(2)); -// KEYS(".", l[0] + "\n@" + lmid(3)); -// KEYS("3dd", l[0] + "\n @QApplication app(argc, argv);\n" + lmid(7)); -// KEYS("4l", l[0] + "\n QApp@lication app(argc, argv);\n" + lmid(7)); -// KEYS("dd", l[0] + "\n@" + lmid(7)); -// KEYS(".", l[0] + "\n @return app.exec();\n" + lmid(9)); -// KEYS("dd", l[0] + "\n@" + lmid(9)); + + data.setText(testLines); + KEYS("j", cursor(1, 0)); + KEYS("dd", l[0] + "\n|" + lmid(2)); + KEYS(".", l[0] + "\n|" + lmid(3)); + KEYS("3dd", l[0] + "\n |QApplication app(argc, argv);\n" + lmid(7)); + KEYS("4l", l[0] + "\n QApp|lication app(argc, argv);\n" + lmid(7)); + KEYS("dd", l[0] + "\n|" + lmid(7)); + KEYS(".", l[0] + "\n |return app.exec();\n" + lmid(9)); + KEYS("dd", l[0] + "\n|" + lmid(9)); } void FakeVimPlugin::test_vim_command_dd_2() { TestData data; setup(&data); -// KEYS("j", "@" + l[1]); -// KEYS("dd", l[0] + "\n@" + lmid(2)); -// KEYS("p", l[0] + "\n" + l[2] + "\n@" + l[1] + "\n" + lmid(3)); -// KEYS("u", l[0] + "\n@" + lmid(2)); + + data.setText(testLines); + KEYS("j", cursor(1, 0)); + KEYS("dd", l[0] + "\n|" + lmid(2)); + KEYS("p", l[0] + "\n" + l[2] + "\n|" + l[1] + "\n" + lmid(3)); + KEYS("u", l[0] + "\n|" + lmid(2)); } void FakeVimPlugin::test_vim_command_d_dollar() { TestData data; setup(&data); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("$d$", l[0]+"\n" + l[1].left(l[1].length()-2)+"@"+l[1][l[1].length()-2]+"\n" + lmid(2)); -// KEYS("0d$", l[0] + "\n"+"@\n" + lmid(2)); + + data.setText(testLines); + KEYS("j$", cursor(1, -1)); + KEYS("$d$", l[0]+"\n" + l[1].left(l[1].length()-2)+"|"+l[1][l[1].length()-2]+"\n" + lmid(2)); + KEYS("0d$", l[0] + "\n"+"|\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_dj() { TestData data; setup(&data); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("dj", l[0]+"\n@" + lmid(3)); -// KEYS("P", lmid(0,1)+"\n" + "@"+lmid(1)); -// KEYS("0", "@" + l[1]); -// KEYS("dj", l[0]+"\n@" + lmid(3)); -// KEYS("P", lmid(0,1)+"\n" + "@"+lmid(1)); -// KEYS("05l", l[1].left(5) + "@" + l[1].mid(5)); -// KEYS("dj", l[0]+"\n@" + lmid(3)); -// KEYS("P", lmid(0,1)+"\n" + "@"+lmid(1)); -// KEYS("dj", l[0]+"\n@" + lmid(3)); -// KEYS("p", lmid(0,1)+"\n" + lmid(3,1)+"\n" + "@"+lmid(1,2)+"\n" + lmid(4)); + + data.setText(testLines); + KEYS("j$", cursor(1, -1)); + KEYS("dj", l[0]+"\n|" + lmid(3)); + KEYS("P", lmid(0,1)+"\n" + "|"+lmid(1)); + KEYS("0", lmid(0,1)+"\n" + "|"+lmid(1)); + KEYS("dj", l[0]+"\n|" + lmid(3)); + KEYS("P", lmid(0,1)+"\n" + "|"+lmid(1)); + KEYS("05l", l[0]+"\n" + l[1].left(5) + "|" + l[1].mid(5)+"\n" + lmid(2)); + KEYS("dj", l[0]+"\n|" + lmid(3)); + KEYS("P", lmid(0,1)+"\n" + "|"+lmid(1)); + KEYS("dj", l[0]+"\n|" + lmid(3)); + KEYS("p", lmid(0,1)+"\n" + lmid(3,1)+"\n" + "|"+lmid(1,2)+"\n" + lmid(4)); } void FakeVimPlugin::test_vim_command_dk() { TestData data; setup(&data); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("dk", "@" + lmid(2)); -// KEYS("P", "@" + lmid(0)); -// KEYS("j0", "@" + l[1]); -// KEYS("dk", "@" + lmid(2)); -// KEYS("P", "@" + lmid(0)); -// KEYS("j05l", l[1].left(5) + "@" + l[1].mid(5)); -// KEYS("dk", "@" + lmid(2)); -// KEYS("P", "@" + lmid(0)); -// KEYS("j05l", l[1].left(5) + "@" + l[1].mid(5)); -// KEYS("dk", "@" + lmid(2)); -// KEYS("p", lmid(2,1)+"\n" + "@" + lmid(0,2)+"\n" + lmid(3)); + + data.setText(testLines); + KEYS("j$", cursor(1, -1)); + KEYS("dk", "|" + lmid(2)); + KEYS("P", "|" + lmid(0)); + KEYS("j0", l[0]+ "\n|" + lmid(1)); + KEYS("dk", "|" + lmid(2)); + KEYS("P", "|" + lmid(0)); + KEYS("j05l", l[0]+"\n" + l[1].left(5) + "|" + l[1].mid(5)+"\n" + lmid(2)); + KEYS("dk", "|" + lmid(2)); + KEYS("P", "|" + lmid(0)); + KEYS("j05l", l[0]+"\n" + l[1].left(5) + "|" + l[1].mid(5)+"\n" + lmid(2)); + KEYS("dk", "|" + lmid(2)); + KEYS("p", lmid(2,1)+"\n" + "|" + lmid(0,2)+"\n" + lmid(3)); } void FakeVimPlugin::test_vim_command_dgg() { TestData data; setup(&data); -// KEYS("G", lmid(0, l.size()-2)+"\n" "@"+lmid(l.size()-2)); -// KEYS("dgg", "@"); -// KEYS("u", "@" + lmid(0)); + + data.setText(testLines); + KEYS("G", lmid(0, l.size()-2)+"\n" "|"+lmid(l.size()-2)); + KEYS("dgg", "|"); + KEYS("u", "|" + lmid(0)); } void FakeVimPlugin::test_vim_command_dG() { TestData data; setup(&data); -// KEYS("dG", "@"); -// KEYS("u", "@" + lmid(0)); -// KEYS("j", "@" + l[1]); -// KEYS("dG", lmid(0,1)+"\n" + "@"); -// KEYS("u", l[0]+"\n" + "@" + lmid(1)); -// KEYS("G", lmid(0, l.size()-2)+"\n" + "@"+lmid(l.size()-2)); -// qWarning("FIXME"); -//return; -// // include movement to first column, as otherwise the result depends on the 'startofline' setting -// KEYS("dG0", lmid(0, l.size()-2)+"\n" + "@"+lmid(l.size()-2,1)); -// KEYS("dG0", lmid(0, l.size()-3)+"\n" + "@"+lmid(l.size()-3,1)); + + data.setText(testLines); + KEYS("dG", "|"); + KEYS("u", "|" + lmid(0)); + KEYS("j", cursor(1, 0)); + KEYS("dG", lmid(0,1)+"\n" + "|"); + KEYS("u", l[0]+"\n" + "|" + lmid(1)); + KEYS("G", lmid(0, l.size()-2)+"\n" + "|"+lmid(l.size()-2)); + + NOT_IMPLEMENTED + // include movement to first column, as otherwise the result depends on the 'startofline' setting + KEYS("dG0", lmid(0, l.size()-2)+"\n" + "|"+lmid(l.size()-2,1)); + KEYS("dG0", lmid(0, l.size()-3)+"\n" + "|"+lmid(l.size()-3,1)); } void FakeVimPlugin::test_vim_command_D() { TestData data; setup(&data); -// KEYS("j", "@" + l[1]); -// KEYS("$D", l[0]+"\n" + l[1].left(l[1].length()-2)+"@"+l[1][l[1].length()-2]+"\n" + lmid(2)); -// KEYS("0D", l[0] + "\n@\n" + lmid(2)); + + data.setText(testLines); + KEYS("j", cursor(1, 0)); + KEYS("$D", l[0]+"\n" + l[1].left(l[1].length()-2)+"|"+l[1][l[1].length()-2]+"\n" + lmid(2)); + KEYS("0D", l[0] + "\n|\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_dollar() { TestData data; setup(&data); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("j$", cursor(l[2], -1)); -// KEYS("2j", "@)"); + + data.setText(testLines); + KEYS("j$", cursor(1, -1)); + KEYS("j$", cursor(2, -1)); + KEYS("2j", cursor(4, -1)); } void FakeVimPlugin::test_vim_command_down() { TestData data; setup(&data); -// KEYS("j", "@" + l[1]); -// KEYS("3j", "@int main"); -// KEYS("4j", "@ return app.exec()"); + + data.setText(testLines); + KEYS("j", l[0]+ "\n|" + lmid(1)); + KEYS("3j", lmid(0,4)+"\n" + "|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("4j", lmid(0,8)+"\n" + "| return app.exec();\n" + lmid(9)); } void FakeVimPlugin::test_vim_command_dfx_down() { TestData data; setup(&data); -// KEYS("j4l", l[0] + "\n#inc@lude <QtCore>\n" + lmid(2)); -// qWarning("FIXME"); -//return; -// KEYS("df ", l[0] + "\n#inc@<QtCore>\n" + lmid(2)); -// KEYS("j", l[0] + "\n#inc<QtCore>\n#inc@lude <QtGui>\n" + lmid(3)); -// KEYS(".", l[0] + "\n#inc<QtCore>\n#inc@<QtGui>\n" + lmid(3)); -// KEYS("u", l[0] + "\n#inc<QtCore>\n#inc@lude <QtGui>\n" + lmid(3)); -// KEYS("u", l[0] + "\n#inc@lude <QtCore>\n" + lmid(2)); + + data.setText(testLines); + KEYS("j4l", l[0] + "\n#inc|lude <QtCore>\n" + lmid(2)); + + //NOT_IMPLEMENTED + KEYS("df ", l[0] + "\n#inc|<QtCore>\n" + lmid(2)); + KEYS("j", l[0] + "\n#inc<QtCore>\n#inc|lude <QtGui>\n" + lmid(3)); + KEYS(".", l[0] + "\n#inc<QtCore>\n#inc|<QtGui>\n" + lmid(3)); + KEYS("u", l[0] + "\n#inc<QtCore>\n#inc|lude <QtGui>\n" + lmid(3)); + KEYS("u", l[0] + "\n#inc|lude <QtCore>\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_Cxx_down_dot() { TestData data; setup(&data); -// KEYS("j4l", l[0] + "\n#inc@lude <QtCore>\n" + lmid(2)); -// KEYS("Cxx<Esc>", l[0] + "\n#incx@x\n" + lmid(2)); -// KEYS("j", l[0] + "\n#incxx\n#incl@ude <QtGui>\n" + lmid(3)); -// KEYS(".", l[0] + "\n#incxx\n#inclx@x\n" + lmid(3)); + + data.setText(testLines); + KEYS("j4l", l[0] + "\n#inc|lude <QtCore>\n" + lmid(2)); + KEYS("Cxx<Esc>", l[0] + "\n#incx|x\n" + lmid(2)); + KEYS("j", l[0] + "\n#incxx\n#incl|ude <QtGui>\n" + lmid(3)); + KEYS(".", l[0] + "\n#incxx\n#inclx|x\n" + lmid(3)); } void FakeVimPlugin::test_vim_command_e() { TestData data; setup(&data); -// KEYS("e", "@#include <QtCore"); -// KEYS("e", "#includ@e <QtCore"); -// KEYS("e", "#include @<QtCore"); -// KEYS("3e", "@#include <QtGui"); -// KEYS("e", "#includ@e <QtGui"); -// KEYS("e", "#include @<QtGui"); -// KEYS("e", "#include <QtGu@i"); -// KEYS("4e", "int main@(int argc, char *argv[])"); -// KEYS("e", "int main(in@t argc, char *argv[])"); -// KEYS("e", "int main(int arg@c, char *argv[])"); -// KEYS("e", "int main(int argc@, char *argv[])"); -// KEYS("e", "int main(int argc, cha@r *argv[])"); -// KEYS("e", "int main(int argc, char @*argv[])"); -// KEYS("e", "int main(int argc, char *arg@v[])"); -// KEYS("e", "int main(int argc, char *argv[]@)"); -// KEYS("e", "@{"); -// KEYS("10k","@\n"); // home. + + data.setText(testLines); + KEYS("e", lmid(0,1)+"\n" + "|#include <QtCore>\n" + lmid(2)); + KEYS("e", lmid(0,1)+"\n" + "#includ|e <QtCore>\n" + lmid(2)); + KEYS("e", lmid(0,1)+"\n" + "#include |<QtCore>\n" + lmid(2)); + KEYS("3e", lmid(0,2)+"\n" + "|#include <QtGui>\n" + lmid(3)); + KEYS("e", lmid(0,2)+"\n" + "#includ|e <QtGui>\n" + lmid(3)); + KEYS("e", lmid(0,2)+"\n" + "#include |<QtGui>\n" + lmid(3)); + KEYS("e", lmid(0,2)+"\n" + "#include <QtGu|i>\n" + lmid(3)); + KEYS("4e", lmid(0,4)+"\n" + "int main|(int argc, char *argv[])\n" + lmid(5)); + KEYS("e", lmid(0,4)+"\n" + "int main(in|t argc, char *argv[])\n" + lmid(5)); + KEYS("e", lmid(0,4)+"\n" + "int main(int arg|c, char *argv[])\n" + lmid(5)); + KEYS("e", lmid(0,4)+"\n" + "int main(int argc|, char *argv[])\n" + lmid(5)); + KEYS("e", lmid(0,4)+"\n" + "int main(int argc, cha|r *argv[])\n" + lmid(5)); + KEYS("e", lmid(0,4)+"\n" + "int main(int argc, char |*argv[])\n" + lmid(5)); + KEYS("e", lmid(0,4)+"\n" + "int main(int argc, char *arg|v[])\n" + lmid(5)); + KEYS("e", lmid(0,4)+"\n" + "int main(int argc, char *argv[]|)\n" + lmid(5)); + KEYS("e", lmid(0,5)+"\n" + "|{\n" + lmid(6)); + KEYS("10k","|\n" + lmid(1)); // home. } void FakeVimPlugin::test_vim_command_i() @@ -2119,208 +2166,242 @@ void FakeVimPlugin::test_vim_command_i() TestData data; setup(&data); -// // empty insertion at start of document -// KEYS("i<Esc>", "@" + lines); -// KEYS("u", "@" + lines); + data.setText(testLines); + + // empty insertion at start of document + KEYS("i<Esc>", "|" + testLines); + KEYS("u", "|" + testLines); -// // small insertion at start of document -// KEYS("ix<Esc>", "@x" + lines); -// KEYS("u", "@" + lines); -// checkEx("redo", "@x" + lines); -// KEYS("u", "@" + lines); + // small insertion at start of document + KEYS("ix<Esc>", "|x" + testLines); + KEYS("u", "|" + testLines); + COMMAND("redo", "|x" + testLines); + KEYS("u", "|" + testLines); -// // small insertion at start of document -// KEYS("ixxx<Esc>", "xx@x" + lines); -// KEYS("u", "@" + lines); + // small insertion at start of document + KEYS("ixxx<Esc>", "xx|x" + testLines); + KEYS("u", "|" + testLines); -// // combine insertions -// KEYS("i1<Esc>", "@1" + lines); -// KEYS("i2<Esc>", "@21" + lines); -// KEYS("i3<Esc>", "@321" + lines); -// KEYS("u", "@21" + lines); -// KEYS("u", "@1" + lines); -// KEYS("u", "@" + lines); -// KEYS("ia<Esc>", "@a" + lines); -// KEYS("ibx<Esc>", "b@xa" + lines); -// KEYS("icyy<Esc>", "bcy@yxa" + lines); -// KEYS("u", "b@xa" + lines); -// KEYS("u", "@a" + lines); -// checkEx("redo", "b@xa" + lines); -// KEYS("u", "@a" + lines); + // combine insertions + KEYS("i1<Esc>", "|1" + testLines); + KEYS("i2<Esc>", "|21" + testLines); + KEYS("i3<Esc>", "|321" + testLines); + KEYS("u", "|21" + testLines); + KEYS("u", "|1" + testLines); + KEYS("u", "|" + testLines); + KEYS("ia<Esc>", "|a" + testLines); + KEYS("ibx<Esc>", "b|xa" + testLines); + KEYS("icyy<Esc>", "bcy|yxa" + testLines); + KEYS("u", "b|xa" + testLines); + KEYS("u", "|a" + testLines); + COMMAND("redo", "|bxa" + testLines); + KEYS("u", "|a" + testLines); } void FakeVimPlugin::test_vim_command_left() { TestData data; setup(&data); -// KEYS("4j", "@int main"); -// KEYS("h", "@int main"); // no move over left border -// KEYS("$", "argv[]@)"); -// KEYS("h", "argv[@])"); -// KEYS("3h", "ar@gv[])"); -// KEYS("50h", "@int main"); + + data.setText(testLines); + KEYS("4j", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("h", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("$", lmid(0, 4) + "\nint main(int argc, char *argv[]|)\n" + lmid(5)); + KEYS("h", lmid(0, 4) + "\nint main(int argc, char *argv[|])\n" + lmid(5)); + KEYS("3h", lmid(0, 4) + "\nint main(int argc, char *ar|gv[])\n" + lmid(5)); + KEYS("50h", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); } void FakeVimPlugin::test_vim_command_r() { TestData data; setup(&data); -// KEYS("4j", "@int main"); -// KEYS("$", "int main(int argc, char *argv[]@)"); -// KEYS("rx", lmid(0, 4) + "\nint main(int argc, char *argv[]@x\n" + lmid(5)); -// KEYS("2h", lmid(0, 4) + "\nint main(int argc, char *argv@[]x\n" + lmid(5)); -// KEYS("4ra", lmid(0, 4) + "\nint main(int argc, char *argv@[]x\n" + lmid(5)); -// KEYS("3rb", lmid(0, 4) + "\nint main(int argc, char *argvbb@b\n" + lmid(5)); -// KEYS("2rc", lmid(0, 4) + "\nint main(int argc, char *argvbb@b\n" + lmid(5)); -// KEYS("h2rc",lmid(0, 4) + "\nint main(int argc, char *argvbc@c\n" + lmid(5)); + + data.setText(testLines); + KEYS("4j", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("$", lmid(0, 4) + "\nint main(int argc, char *argv[]|)\n" + lmid(5)); + KEYS("rx", lmid(0, 4) + "\nint main(int argc, char *argv[]|x\n" + lmid(5)); + KEYS("2h", lmid(0, 4) + "\nint main(int argc, char *argv|[]x\n" + lmid(5)); + KEYS("4ra", lmid(0, 4) + "\nint main(int argc, char *argv|[]x\n" + lmid(5)); + KEYS("3rb", lmid(0, 4) + "\nint main(int argc, char *argvbb|b\n" + lmid(5)); + KEYS("2rc", lmid(0, 4) + "\nint main(int argc, char *argvbb|b\n" + lmid(5)); + KEYS("h2rc",lmid(0, 4) + "\nint main(int argc, char *argvbc|c\n" + lmid(5)); } void FakeVimPlugin::test_vim_command_right() { TestData data; setup(&data); -// KEYS("4j", "@int main"); -// KEYS("l", "i@nt main"); -// KEYS("3l", "int @main"); -// KEYS("50l", "argv[]@)"); + + data.setText(testLines); + KEYS("4j", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("l", lmid(0, 4) + "\ni|nt main(int argc, char *argv[])\n" + lmid(5)); + KEYS("3l", lmid(0, 4) + "\nint |main(int argc, char *argv[])\n" + lmid(5)); + KEYS("50l", lmid(0, 4) + "\nint main(int argc, char *argv[]|)\n" + lmid(5)); } void FakeVimPlugin::test_vim_command_up() { TestData data; setup(&data); -// KEYS("j", "@#include <QtCore"); -// KEYS("3j", "@int main"); -// KEYS("4j", "@ return app.exec()"); + + data.setText(testLines); + KEYS("9j", lmid(0, 9) + "\n|}\n"); + KEYS("k", lmid(0, 8) + "\n| return app.exec();\n" + lmid(9)); + KEYS("4k", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("3k", lmid(0, 1) + "\n|#include <QtCore>\n" + lmid(2)); + KEYS("k", cursor(0, 0)); + KEYS("2k", cursor(0, 0)); } void FakeVimPlugin::test_vim_command_w() { TestData data; setup(&data); -// KEYS("w", "@#include <QtCore"); -// KEYS("w", "#@include <QtCore"); -// KEYS("w", "#include @<QtCore"); -// KEYS("3w", "@#include <QtGui"); -// KEYS("w", "#@include <QtGui"); -// KEYS("w", "#include @<QtGui"); -// KEYS("w", "#include <@QtGui"); -// KEYS("4w", "int @main(int argc, char *argv[])"); -// KEYS("w", "int main@(int argc, char *argv[])"); -// KEYS("w", "int main(@int argc, char *argv[])"); -// KEYS("w", "int main(int @argc, char *argv[])"); -// KEYS("w", "int main(int argc@, char *argv[])"); -// KEYS("w", "int main(int argc, @char *argv[])"); -// KEYS("w", "int main(int argc, char @*argv[])"); -// KEYS("w", "int main(int argc, char *@argv[])"); -// KEYS("w", "int main(int argc, char *argv@[])"); -// KEYS("w", "@{"); + + data.setText(testLines); + KEYS("w", lmid(0,1)+"\n" + "|#include <QtCore>\n" + lmid(2)); + KEYS("w", lmid(0,1)+"\n" + "#|include <QtCore>\n" + lmid(2)); + KEYS("w", lmid(0,1)+"\n" + "#include |<QtCore>\n" + lmid(2)); + KEYS("3w", lmid(0,2)+"\n" + "|#include <QtGui>\n" + lmid(3)); + KEYS("w", lmid(0,2)+"\n" + "#|include <QtGui>\n" + lmid(3)); + KEYS("w", lmid(0,2)+"\n" + "#include |<QtGui>\n" + lmid(3)); + KEYS("w", lmid(0,2)+"\n" + "#include <|QtGui>\n" + lmid(3)); + KEYS("4w", lmid(0,4)+"\n" + "int |main(int argc, char *argv[])\n" + lmid(5)); + KEYS("w", lmid(0,4)+"\n" + "int main|(int argc, char *argv[])\n" + lmid(5)); + KEYS("w", lmid(0,4)+"\n" + "int main(|int argc, char *argv[])\n" + lmid(5)); + KEYS("w", lmid(0,4)+"\n" + "int main(int |argc, char *argv[])\n" + lmid(5)); + KEYS("w", lmid(0,4)+"\n" + "int main(int argc|, char *argv[])\n" + lmid(5)); + KEYS("w", lmid(0,4)+"\n" + "int main(int argc, |char *argv[])\n" + lmid(5)); + KEYS("w", lmid(0,4)+"\n" + "int main(int argc, char |*argv[])\n" + lmid(5)); + KEYS("w", lmid(0,4)+"\n" + "int main(int argc, char *|argv[])\n" + lmid(5)); + KEYS("w", lmid(0,4)+"\n" + "int main(int argc, char *argv|[])\n" + lmid(5)); + KEYS("w", lmid(0,5)+"\n" + "|{\n" + lmid(6)); } void FakeVimPlugin::test_vim_command_yyp() { TestData data; setup(&data); -// KEYS("4j", "@int main"); -// KEYS("yyp", lmid(0, 4) + "\n" + lmid(4, 1) + "\n@" + lmid(4)); + + data.setText(testLines); + KEYS("4j", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("yyp", lmid(0, 4) + "\n" + lmid(4, 1) + "\n|" + lmid(4)); } void FakeVimPlugin::test_vim_command_y_dollar() { TestData data; setup(&data); -// KEYS("j", "@" + l[1]); -// KEYS("$y$p", l[0]+"\n"+ l[1]+"@>\n" + lmid(2)); -// KEYS("$y$p", l[0]+"\n"+ l[1]+">@>\n" + lmid(2)); -// KEYS("$y$P", l[0]+"\n"+ l[1]+">@>>\n" + lmid(2)); -// KEYS("$y$P", l[0]+"\n"+ l[1]+">>@>>\n" + lmid(2)); + + data.setText(testLines); + KEYS("j", l[0]+"\n|" + lmid(1)); + KEYS("$y$p", l[0]+"\n"+ l[1]+"|>\n" + lmid(2)); + KEYS("$y$p", l[0]+"\n"+ l[1]+">|>\n" + lmid(2)); + KEYS("$y$P", l[0]+"\n"+ l[1]+">|>>\n" + lmid(2)); + KEYS("$y$P", l[0]+"\n"+ l[1]+">>|>>\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_Yp() { TestData data; setup(&data); -// KEYS("4j", "@int main"); -// KEYS("Yp", lmid(0, 4) + "\n" + lmid(4, 1) + "\n@" + lmid(4)); + + data.setText(testLines); + KEYS("4j", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("Yp", lmid(0, 4) + "\n" + lmid(4, 1) + "\n|" + lmid(4)); } void FakeVimPlugin::test_vim_command_ma_yank() { TestData data; setup(&data); -// KEYS("4j", "@int main"); -// KEYS("ygg", "@" + lmid(0)); -// KEYS("4j", "@int main"); -// KEYS("p", lmid(0,5) + "\n@" + lmid(0,4) +"\n" + lmid(4)); -// TestData data; -// setup(&data); -// KEYS("ma", "@" + lmid(0)); -// KEYS("4j", "@int main"); -// KEYS("mb", lmid(0,4) + "\n@" + lmid(4)); -// KEYS("\"ay'a", "@" + lmid(0)); -// KEYS("'b", lmid(0,4) + "\n@" + lmid(4)); -// KEYS("\"ap", lmid(0,5) + "\n@" + lmid(0,4) +"\n" + lmid(4)); + data.setText(testLines); + KEYS("4j", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("ygg", "|" + lmid(0)); + KEYS("4j", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("p", lmid(0,5) + "\n|" + lmid(0,4) +"\n" + lmid(4)); + + data.setText(testLines); + + KEYS("gg", "|" + lmid(0)); + KEYS("ma", "|" + lmid(0)); + KEYS("4j", lmid(0, 4) + "\n|int main(int argc, char *argv[])\n" + lmid(5)); + KEYS("mb", lmid(0,4) + "\n|" + lmid(4)); + KEYS("\"ay'a", "|" + lmid(0)); + KEYS("'b", lmid(0,4) + "\n|" + lmid(4)); + KEYS("\"ap", lmid(0,5) + "\n|" + lmid(0,4) +"\n" + lmid(4)); } void FakeVimPlugin::test_vim_command_Gyyp() { TestData data; setup(&data); -// KEYS("G", lmid(0, l.size()-2) + "\n@" + lmid(l.size()-2)); -// KEYS("yyp", lmid(0) + "@" + lmid(9, 1)+"\n"); + + data.setText(testLines); + KEYS("G", lmid(0, l.size()-2) + "\n|" + lmid(l.size()-2)); + KEYS("yyp", lmid(0) + "|" + lmid(9, 1)+"\n"); } void FakeVimPlugin::test_i_cw_i() { TestData data; setup(&data); -// KEYS("j", "@" + l[1]); -// KEYS("ixx<Esc>", l[0] + "\nx@x" + lmid(1)); -// KEYS("cwyy<Esc>", l[0] + "\nxy@y" + lmid(1)); -// KEYS("iaa<Esc>", l[0] + "\nxya@ay" + lmid(1)); + + data.setText(testLines); + KEYS("j", l[0] + "\n|" + lmid(1)); + KEYS("ixx<Esc>", l[0] + "\nx|x" + lmid(1)); + KEYS("cwyy<Esc>", l[0] + "\nxy|y" + lmid(1)); + KEYS("iaa<Esc>", l[0] + "\nxya|ay" + lmid(1)); } void FakeVimPlugin::test_vim_command_J() { TestData data; setup(&data); -// KEYS("4j4l", "int @main"); -// KEYS("J", lmid(0, 5) + "@ " + lmid(5)); -// KEYS("u", lmid(0, 4) + "\nint @main(int argc, char *argv[])\n" + lmid(5)); -// checkEx("redo", lmid(0, 5) + "@ " + lmid(5)); + data.setText(testLines); + KEYS("4j4l", lmid(0, 4) + "\nint |main(int argc, char *argv[])\n" + lmid(5)); -// KEYS("3J", lmid(0, 5) + " " + lmid(5, 1) + " " + lmid(6, 1).mid(4) + "@ " + lmid(7)); -// KEYS("uu", lmid(0, 4) + "\nint @main(int argc, char *argv[])\n" + lmid(5)); -// checkEx("redo", lmid(0, 5) + "@ " + lmid(5)); + KEYS("J", lmid(0, 5) + "| " + lmid(5)); + KEYS("u", lmid(0, 4) + "\nint |main(int argc, char *argv[])\n" + lmid(5)); + COMMAND("redo", lmid(0, 5) + "| " + lmid(5)); + + KEYS("3J", lmid(0, 5) + " " + lmid(5, 1) + " " + lmid(6, 1).mid(4) + "| " + lmid(7)); + KEYS("uu", lmid(0, 4) + "\nint |main(int argc, char *argv[])\n" + lmid(5)); + COMMAND("redo", lmid(0, 5) + "| " + lmid(5)); } void FakeVimPlugin::test_vim_command_put_at_eol() { TestData data; setup(&data); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("y$", lmid(0,1)+"\n" + cursor(l[1], -1)+"\n" + lmid(2)); -// KEYS("p", lmid(0,2)+"@>\n" + lmid(2)); -// KEYS("p", lmid(0,2)+">@>\n" + lmid(2)); -// KEYS("$", lmid(0,2)+">@>\n" + lmid(2)); -// KEYS("P", lmid(0,2)+">@>>\n" + lmid(2)); + + data.setText(testLines); + KEYS("j$", cursor(1, -1)); + KEYS("y$", cursor(1, -1)); + KEYS("p", lmid(0,2)+"|>\n" + lmid(2)); + KEYS("p", lmid(0,2)+">|>\n" + lmid(2)); + KEYS("$", lmid(0,2)+">|>\n" + lmid(2)); + KEYS("P", lmid(0,2)+">|>>\n" + lmid(2)); } void FakeVimPlugin::test_vim_command_oO() { TestData data; setup(&data); -// KEYS("gg", "@" + lmid(0)); -// KEYS("Ol1<Esc>", "l@1\n" + lmid(0)); -// KEYS("gg", "@l1\n" + lmid(0)); -// KEYS("ol2<Esc>", "l1\n" "l@2\n" + lmid(0)); -// KEYS("G", "l1\n" "l2\n" + lmid(0,l.size()-2)+"\n" + "@"+lmid(l.size()-2)); -// KEYS("G$", "l1\n" "l2\n" + lmid(0,l.size()-2)+"\n" + "@"+lmid(l.size()-2)); -// KEYS("ol-1<Esc>", "l1\n" "l2\n" + lmid(0) + "l-@1\n"); -// KEYS("G", "l1\n" "l2\n" + lmid(0) + "@l-1\n"); -// KEYS("Ol-2<Esc>", "l1\n" "l2\n" + lmid(0) + "l-@2\n" + "l-1\n"); + + data.setText(testLines); + KEYS("gg", "|" + lmid(0)); + KEYS("Ol1<Esc>", "l|1\n" + lmid(0)); + KEYS("gg", "|l1\n" + lmid(0)); + KEYS("ol2<Esc>", "l1\n" "l|2\n" + lmid(0)); + KEYS("G", "l1\n" "l2\n" + lmid(0,l.size()-2)+"\n" + "|"+lmid(l.size()-2)); + KEYS("G$", "l1\n" "l2\n" + lmid(0,l.size()-2)+"\n" + "|"+lmid(l.size()-2)); + KEYS("ol-1<Esc>", "l1\n" "l2\n" + lmid(0) + "l-|1\n"); + KEYS("G", "l1\n" "l2\n" + lmid(0) + "|l-1\n"); + KEYS("Ol-2<Esc>", "l1\n" "l2\n" + lmid(0) + "l-|2\n" + "l-1\n"); } void FakeVimPlugin::test_vim_command_x() @@ -2328,9 +2409,10 @@ void FakeVimPlugin::test_vim_command_x() TestData data; setup(&data); -// KEYS("x", "@" + lmid(0)); -// KEYS("j$", cursor(l[1], -1)); -// KEYS("x", lmid(0,1)+"\n" + l[1].left(l[1].length()-2)+"@"+l[1].mid(l[1].length()-2,1)+"\n" + lmid(2)); + data.setText(testLines); + KEYS("x", "|" + lmid(0)); + KEYS("j$", cursor(1, -1)); + KEYS("x", lmid(0,1)+"\n" + l[1].left(l[1].length()-2)+"|"+l[1].mid(l[1].length()-2,1)+"\n" + lmid(2)); } void FakeVimPlugin::test_vim_visual_d() @@ -2338,29 +2420,30 @@ void FakeVimPlugin::test_vim_visual_d() TestData data; setup(&data); -// KEYS("vd", "@" + lmid(0)); -// KEYS("vx", "@" + lmid(0)); -// KEYS("vjd", "@" + lmid(1).mid(1)); -// KEYS("ugg", "@" + lmid(0)); // FIXME: cursor should be at begin of doc w/o gg -// KEYS("j", "@" + l[1]); -// KEYS("vd", lmid(0, 1)+"\n" + "@" + lmid(1).mid(1)); -// KEYS("u", lmid(0, 1)+"\n" + "@" + lmid(1)); -// KEYS("vx", lmid(0, 1)+"\n" + "@" + lmid(1).mid(1)); -// KEYS("u", lmid(0, 1)+"\n" + "@" + lmid(1)); -// KEYS("vhx", lmid(0, 1)+"\n" + "@" + lmid(1).mid(1)); -// KEYS("u", lmid(0, 1)+"\n" + "@" + lmid(1)); -// KEYS("vlx", lmid(0, 1)+"\n" + "@" + lmid(1).mid(2)); -// KEYS("P", lmid(0, 1)+"\n" + lmid(1).left(1)+"@"+lmid(1).mid(1)); -// KEYS("vhd", lmid(0, 1)+"\n" + "@" + lmid(1).mid(2)); -// KEYS("u0", lmid(0, 1)+"\n" + "@" + lmid(1)); // FIXME: cursor should be at begin of line w/o 0 -// qWarning("FIXME"); -//return; -// KEYS("v$d", lmid(0, 1)+"\n" + "@" + lmid(2)); -// KEYS("v$od", lmid(0, 1)+"\n" + "@" + lmid(3)); -// KEYS("$v$x", lmid(0, 1)+"\n" + lmid(3,1) + "@" + lmid(4)); -// KEYS("0v$d", lmid(0, 1)+"\n" + "@" + lmid(5)); -// KEYS("$v0d", lmid(0, 1)+"\n" + "@\n" + lmid(6)); -// KEYS("v$o0k$d", lmid(0, 1)+"\n" + "@" + lmid(6).mid(1)); + data.setText(testLines); + KEYS("vd", "|" + lmid(0)); + KEYS("vx", "|" + lmid(0)); + KEYS("vjd", "|" + lmid(1).mid(1)); + KEYS("u", "|" + lmid(0)); + KEYS("j", lmid(0, 1)+"\n" + "|" + lmid(1)); + KEYS("vd", lmid(0, 1)+"\n" + "|" + lmid(1).mid(1)); + KEYS("u", lmid(0, 1)+"\n" + "|" + lmid(1)); + KEYS("vx", lmid(0, 1)+"\n" + "|" + lmid(1).mid(1)); + KEYS("u", lmid(0, 1)+"\n" + "|" + lmid(1)); + KEYS("vhx", lmid(0, 1)+"\n" + "|" + lmid(1).mid(1)); + KEYS("u", lmid(0, 1)+"\n" + "|" + lmid(1)); + KEYS("vlx", lmid(0, 1)+"\n" + "|" + lmid(1).mid(2)); + KEYS("P", lmid(0, 1)+"\n" + lmid(1).left(1)+"|"+lmid(1).mid(1)); + KEYS("vhd", lmid(0, 1)+"\n" + "|" + lmid(1).mid(2)); + KEYS("u", lmid(0, 1)+"\n" + "|" + lmid(1)); + + KEYS("v$d", lmid(0, 1)+"\n" + "|" + lmid(2)); + NOT_IMPLEMENTED + KEYS("v$od", lmid(0, 1)+"\n" + "|" + lmid(3)); + KEYS("$v$x", lmid(0, 1)+"\n" + lmid(3,1) + "|" + lmid(4)); + KEYS("0v$d", lmid(0, 1)+"\n" + "|" + lmid(5)); + KEYS("$v0d", lmid(0, 1)+"\n" + "|\n" + lmid(6)); + KEYS("v$o0k$d", lmid(0, 1)+"\n" + "|" + lmid(6).mid(1)); } void FakeVimPlugin::test_vim_Visual_d() @@ -2368,88 +2451,14 @@ void FakeVimPlugin::test_vim_Visual_d() TestData data; setup(&data); -// KEYS("Vd", "@" + lmid(1)); -// KEYS("V2kd", "@" + lmid(2)); -// KEYS("u", "@" + lmid(1)); -// KEYS("u", "@" + lmid(0)); -// KEYS("j", "@" + l[1]); -// KEYS("V$d", lmid(0,1)+"\n" + "@" + lmid(2)); -// KEYS("$V$$d", lmid(0,1)+"\n" + "@" + lmid(3)); -// KEYS("Vkx", "@" + lmid(4)); -// KEYS("P", "@" + lmid(0,1)+"\n" + lmid(3)); -} - - -//bool FakeVimPlugin::checkContentsHelper(QString want, const char* file, int line) -//{ -// QString got = EDITOR(toPlainText()); -// int pos = EDITOR(textCursor().position()); -// got = got.left(pos) + "@" + got.mid(pos); -// QStringList wantlist = want.split('\n'); -// QStringList gotlist = got.split('\n'); -// if (!QTest::qCompare(gotlist.size(), wantlist.size(), "", "", file, line)) { -// qDebug() << "0 WANT: " << want; -// qDebug() << "0 GOT: " << got; -// return false; -// } -// for (int i = 0; i < wantlist.size() && i < gotlist.size(); ++i) { -// QString g = QString("line %1: %2").arg(i + 1).arg(gotlist.at(i)); -// QString w = QString("line %1: %2").arg(i + 1).arg(wantlist.at(i)); -// if (!QTest::qCompare(g, w, "", "", file, line)) { -// qDebug() << "1 WANT: " << want; -// qDebug() << "1 GOT: " << got; -// return false; -// } -// } -// return true; -//} - -//bool FakeVimPlugin::checkHelper(bool ex, QString cmd, QString expected, -// const char *file, int line) -//{ -// if (ex) -// data.doCommand((cmd); -// else -// send(cmd); -// return checkContentsHelper(expected, file, line); -//} - - -//#define checkContents(expected) \ -// do { if (!checkContentsHelper(expected, __FILE__, __LINE__)) return; } while (0) - -//// Runs a "normal" command and checks the result. -//// Cursor position is marked by a '@' in the expected contents. -//#define check(cmd, expected) \ -// do { if (!checkHelper(false, cmd, expected, __FILE__, __LINE__)) \ -// return; } while (0) - -//#define move(cmd, expected) \ -// do { if (!checkHelper(false, cmd, insertCursor(expected), __FILE__, __LINE__)) \ -// return; } while (0) - -//// Runs an ex command and checks the result. -//// Cursor position is marked by a '@' in the expected contents. -//#define checkEx(cmd, expected) \ -// do { if (!checkHelper(true, cmd, expected, __FILE__, __LINE__)) \ -// return; } while (0) - -//QString FakeVimPlugin::insertCursor(const QString &needle0) -//{ -// QString needle = needle0; -// needle.remove('@'); -// QString lines0 = lines; -// int pos = lines0.indexOf(needle); -// if (pos == -1) -// qDebug() << "Cannot find: \n----\n" + needle + "\n----\n"; -// lines0.replace(pos, needle.size(), needle0); -// return lines0; -//} - -//QString FakeVimPlugin::cursor(const QString &line, int pos) -//{ -// if (pos < 0) -// pos = line.length() + pos; - -// return line.left(pos) + "@" + line.mid(pos); -//} + data.setText(testLines); + KEYS("Vd", "|" + lmid(1)); + KEYS("V2kd", "|" + lmid(2)); + KEYS("u", "|" + lmid(1)); + KEYS("u", "|" + lmid(0)); + KEYS("j", lmid(0,1)+"\n" + "|" + lmid(1)); + KEYS("V$d", lmid(0,1)+"\n" + "|" + lmid(2)); + KEYS("$V$$d", lmid(0,1)+"\n" + "|" + lmid(3)); + KEYS("Vkx", "|" + lmid(4)); + KEYS("P", "|" + lmid(0,1)+"\n" + lmid(3)); +} diff --git a/src/plugins/fakevim/fakevimplugin.h b/src/plugins/fakevim/fakevimplugin.h index 437e3f92cc..8cd60b9b98 100644 --- a/src/plugins/fakevim/fakevimplugin.h +++ b/src/plugins/fakevim/fakevimplugin.h @@ -145,34 +145,10 @@ private slots: void test_map(); //private: -// void setup(); -// void send(const QString &command) { sendEx("normal " + command); } -// void sendEx(const QString &command); // send an ex command - -// bool checkContentsHelper(QString expected, const char* file, int line); -// bool checkHelper(bool isExCommand, QString cmd, QString expected, -// const char* file, int line); -// QString insertCursor(const QString &needle0); -// QString cursor(const QString &line, int pos); // insert @ at cursor pos, negative counts from back - -// QString lmid(int i, int n = -1) const -// { return QStringList(l.mid(i, n)).join("\n"); } - -// QTextEdit *m_textedit; -// QPlainTextEdit *m_plaintextedit; -// FakeVimHandler *m_handler; -// QList<QTextEdit::ExtraSelection> m_selection; - // QString m_statusMessage; // QString m_statusData; // QString m_infoMessage; -// // the individual lines -// static const QStringList l; // identifier intentionally kept short -// static const QString lines; -// static const QString escape; -//}; - private: struct TestData; void setup(TestData *data); |