diff options
Diffstat (limited to 'src/plugins/fakevim/fakevim_test.cpp')
-rw-r--r-- | src/plugins/fakevim/fakevim_test.cpp | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/src/plugins/fakevim/fakevim_test.cpp b/src/plugins/fakevim/fakevim_test.cpp index eef9ab0874..037eb3ef27 100644 --- a/src/plugins/fakevim/fakevim_test.cpp +++ b/src/plugins/fakevim/fakevim_test.cpp @@ -1902,6 +1902,19 @@ void FakeVimPlugin::test_vim_letter_case() KEYS("2gUU", " " X "ABC" N "DEF"); KEYS("u", " " X "abc" N "def"); KEYS("<c-r>", " " X "ABC" N "DEF"); + + // undo, redo and dot command + data.setText(" abcde" N " fgh" N " ijk"); + KEYS("3l" "<C-V>2l2j" "U", " a" X "BCDe" N " fGH" N " iJK"); + KEYS("u", " a" X "bcde" N " fgh" N " ijk"); + KEYS("<C-R>", " a" X "BCDe" N " fGH" N " iJK"); + KEYS("u", " a" X "bcde" N " fgh" N " ijk"); + KEYS("h.", " " X "ABCde" N " FGH" N " IJK"); + KEYS("u", " " X "abcde" N " fgh" N " ijk"); + KEYS("h.", " " X " ABcde" N " FGh" N " IJk"); + KEYS("u", " " X " abcde" N " fgh" N " ijk"); + KEYS("j.", " abcde" N " " X " FGh" N " IJk"); + KEYS("u", " abcde" N " " X " fgh" N " ijk"); } void FakeVimPlugin::test_vim_code_autoindent() @@ -2246,6 +2259,45 @@ void FakeVimPlugin::test_vim_ex_yank() data.setText("abc" N "def"); KEYS("\"xy$", X "abc" N "def"); KEYS("\"xP", "ab" X "cabc" N "def"); + + data.setText( + "abc def" N + "ghi jkl" N + ); + KEYS("yiwp", + "aab" X "cbc def" N + "ghi jkl" N + ); + KEYS("u", + X "abc def" N + "ghi jkl" N + ); + KEYS("\"0p", + "aab" X "cbc def" N + "ghi jkl" N + ); + KEYS("\"xyiw", + X "aabcbc def" N + "ghi jkl" N + ); + KEYS("\"0p", + "aab" X "cabcbc def" N + "ghi jkl" N + ); + KEYS("\"xp", + "aabcaabcb" X "cabcbc def" N + "ghi jkl" N + ); + + // register " is last yank + data.setText( + "abc def" N + "ghi jkl" N + ); + KEYS("yiwp\"xyiw\"\"p", + "aaabcb" X "cabcbc def" N + "ghi jkl" N + ); } void FakeVimPlugin::test_vim_ex_delete() @@ -2551,6 +2603,7 @@ void FakeVimPlugin::test_map() data.setText("abc" N "def"); data.doCommand(QString::fromUtf8("no \xc3\xb8 l|no l k|no k j|no j h")); KEYS(QString::fromUtf8("\xc3\xb8"), "a" X "bc" N "def"); + data.doCommand(QString::fromUtf8("unmap \xc3\xb8|unmap l|unmap k|unmap j")); // Don't handle mapping in sub-modes that are not followed by movement command. data.setText("abc" N "def"); @@ -2575,6 +2628,16 @@ void FakeVimPlugin::test_map() data.doCommand("onoremap iwwX 3iwX Y"); KEYS("ciwwX Z<esc>", "X Y " X "Z" N "ghi jkl"); data.doCommand("unmap <SPACE>X"); + + // use mapping for <ESC> in insert + data.setText("ab" X "c def" N "ghi jkl"); + data.doCommand("inoremap jk <ESC>"); + KEYS("<C-V>jll" "I__jk", "ab" X "__c def" N "gh__i jkl"); + INTEGRITY(false); + data.doCommand("unmap jk"); // shouldn't unmap for insert mode + KEYS("ijk", "a" X "b__c def" N "gh__i jkl"); + data.doCommand("iunmap jk"); + KEYS("ijk<ESC>", "aj" X "kb__c def" N "gh__i jkl"); } void FakeVimPlugin::test_vim_command_cc() @@ -3012,6 +3075,90 @@ void FakeVimPlugin::test_vim_command_y_dollar() KEYS("$y$P", l[0]+'\n'+ l[1]+">>|>>\n" + lmid(2)); } +void FakeVimPlugin::test_vim_command_percent() +{ + TestData data; + setup(&data); + + data.setText( + "bool f(int arg1) {" N + " Q_ASSERT(arg1 >= 0);" N + " if (arg1 > 0) return true; else if (arg1 <= 0) return false;" N + "}" N + ); + + KEYS("%", + "bool f(int arg1" X ") {" N + " Q_ASSERT(arg1 >= 0);" N + " if (arg1 > 0) return true; else if (arg1 <= 0) return false;" N + "}" N + ); + + KEYS("%", + "bool f" X "(int arg1) {" N + " Q_ASSERT(arg1 >= 0);" N + " if (arg1 > 0) return true; else if (arg1 <= 0) return false;" N + "}" N + ); + + KEYS("$h%", + "bool f(int arg1) {" N + " Q_ASSERT(arg1 >= 0);" N + " if (arg1 > 0) return true; else if (arg1 <= 0) return false;" N + X "}" N + ); + + KEYS("%", + "bool f(int arg1) " X "{" N + " Q_ASSERT(arg1 >= 0);" N + " if (arg1 > 0) return true; else if (arg1 <= 0) return false;" N + "}" N + ); + + KEYS("j%", + "bool f(int arg1) {" N + " Q_ASSERT" X "(arg1 >= 0);" N + " if (arg1 > 0) return true; else if (arg1 <= 0) return false;" N + "}" N + ); + + KEYS("%", + "bool f(int arg1) {" N + " Q_ASSERT(arg1 >= 0" X ");" N + " if (arg1 > 0) return true; else if (arg1 <= 0) return false;" N + "}" N + ); + + KEYS("j%", + "bool f(int arg1) {" N + " Q_ASSERT(arg1 >= 0);" N + " if (arg1 > 0) return true; else if (arg1 <= 0" X ") return false;" N + "}" N + ); + + KEYS("0%", + "bool f(int arg1) {" N + " Q_ASSERT(arg1 >= 0);" N + " if (arg1 > 0" X ") return true; else if (arg1 <= 0) return false;" N + "}" N + ); + + KEYS("%", + "bool f(int arg1) {" N + " Q_ASSERT(arg1 >= 0);" N + " if " X "(arg1 > 0) return true; else if (arg1 <= 0) return false;" N + "}" N + ); + + // jump to 50% of buffer + KEYS("50%", + "bool f(int arg1) {" N + " Q_ASSERT(arg1 >= 0);" N + " " X "if (arg1 > 0) return true; else if (arg1 <= 0) return false;" N + "}" N + ); +} + void FakeVimPlugin::test_vim_command_Yp() { TestData data; |