fakevim: Correct Undo/Redo position for large editing operations

Change-Id: Ie5d354a0e7f59c61646d14da79bf7059821c12e5
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Lukas Holecek
2012-09-29 19:09:08 +02:00
committed by hjk
parent 4f0d86b4fe
commit ceaedb0883
2 changed files with 74 additions and 29 deletions

View File

@@ -714,20 +714,19 @@ void FakeVimPlugin::test_vim_undo_redo()
void FakeVimPlugin::test_advanced_commands()
{
// TODO: Fix undo/redo position for substitute command.
TestData data;
setup(&data);
// subcommands
data.setText("abc" N " xxx" N "def");
COMMAND("%s/xxx/ZZZ/g|%s/ZZZ/OOO/g", "abc" N " OOO" N "def");
data.setText("abc" N " xxx" N " xxx" N "def");
COMMAND("%s/xxx/ZZZ/g|%s/ZZZ/OOO/g", "abc" N " OOO" N " " X "OOO" N "def");
// undo/redo all subcommands
COMMAND(":undo", "abc" N " xxx" N "def");
COMMAND(":redo", "abc" N " OOO" N "def");
COMMAND(":undo", "abc" N X " xxx" N " xxx" N "def");
COMMAND(":redo", "abc" N X " OOO" N " OOO" N "def");
// redundant characters
COMMAND("::: %s/\\S\\S\\S/ZZZ/g | :::: %s/ZZZ/XXX/g ", "XXX" N " XXX" N "XXX");
COMMAND("::: %s/\\S\\S\\S/ZZZ/g | :::: %s/ZZZ/XXX/g ", "XXX" N " XXX" N " XXX" N X "XXX");
}
void FakeVimPlugin::test_map()
@@ -840,6 +839,20 @@ void FakeVimPlugin::test_map()
KEYS("<C-r>", X "def xyz ghi");
data.doCommand("unmap X");
data.setText("abc" N " def" N " ghi");
data.doCommand("map X jdd");
KEYS("X", "abc" N " " X "ghi");
KEYS("u", "abc" N X " def" N " ghi");
KEYS("<c-r>", "abc" N X " ghi");
data.doCommand("unmap X");
data.setText("abc" N "def" N "ghi");
data.doCommand("map X jAxxx<cr>yyy<esc>");
KEYS("X", "abc" N "defxxx" N "yy" X "y" N "ghi");
KEYS("u", "abc" N "de" X "f" N "ghi");
KEYS("<c-r>", "abc" N "def" X "xxx" N "yyy" N "ghi");
data.doCommand("unmap X");
NOT_IMPLEMENTED
// <C-o>
data.setText("abc def");