From 4f831b10c1a7b484002c29d7706c28006797d9df Mon Sep 17 00:00:00 2001 From: fox0430 Date: Wed, 8 Jul 2020 23:16:06 +0900 Subject: [PATCH 1/2] Unit test: Fix and refactor teditor.nim, tnormalmode.nim --- tests/teditor.nim | 61 +++- tests/tnormalmode.nim | 751 +++++++++++++++++++----------------------- 2 files changed, 386 insertions(+), 426 deletions(-) diff --git a/tests/teditor.nim b/tests/teditor.nim index 7d16efe3d..9d63bf394 100644 --- a/tests/teditor.nim +++ b/tests/teditor.nim @@ -1,15 +1,15 @@ import unittest include moepkg/[editor, editorstatus] -suite "editor.nim": +suite "Editor: Auto indent": test "Auto indent in current Line": var status = initEditorStatus() status.addNewBuffer("") - + status.bufStatus[0].buffer = initGapBuffer(@[ru" a", ru"b"]) status.workSpace[0].currentMainWindowNode.currentLine = 1 - + status.bufStatus[0].autoIndentCurrentLine( status.workspace[0].currentMainWindowNode ) @@ -20,11 +20,11 @@ suite "editor.nim": test "Auto indent in current Line 2": var status = initEditorStatus() status.addNewBuffer("") - + status.bufStatus[0].buffer = initGapBuffer(@[ru"a", ru"b"]) status.workSpace[0].currentMainWindowNode.currentLine = 1 - + status.bufStatus[0].autoIndentCurrentLine( status.workspace[0].currentMainWindowNode ) @@ -35,11 +35,11 @@ suite "editor.nim": test "Auto indent in current Line 3": var status = initEditorStatus() status.addNewBuffer("") - + status.bufStatus[0].buffer = initGapBuffer(@[ru"a", ru" b"]) status.workSpace[0].currentMainWindowNode.currentLine = 1 - + status.bufStatus[0].autoIndentCurrentLine( status.workspace[0].currentMainWindowNode ) @@ -50,22 +50,21 @@ suite "editor.nim": test "Auto indent in current Line 4": var status = initEditorStatus() status.addNewBuffer("") - + status.bufStatus[0].buffer = initGapBuffer(@[ru""]) - + status.bufStatus[0].autoIndentCurrentLine( status.workspace[0].currentMainWindowNode ) check(status.bufStatus[0].buffer[0] == ru"") - test "Delete trailing spaces": +suite "Editor: Delete trailing spaces": + test "Delete trailing spaces 1": var status = initEditorStatus() status.addNewBuffer("") - - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc", - ru"d ", - ru"efg"]) + + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc", ru"d ", ru"efg"]) status.bufStatus[0].deleteTrailingSpaces @@ -73,3 +72,37 @@ suite "editor.nim": check status.bufStatus[0].buffer[0] == ru"abc" check status.bufStatus[0].buffer[1] == ru"d" check status.bufStatus[0].buffer[2] == ru"efg" + +suite "Editor: Send to clipboad": + test "Send string to clipboard 1": + const str = ru"Clipboard test" + const registers = editorstatus.Registers(yankedLines: @[], yankedStr: str) + + const platform = editorstatus.Platform.linux + sendToClipboad(registers, platform) + + let (output, exitCode) = execCmdEx("xclip -o") + + check exitCode == 0 and output[0 .. output.high - 1] == "Clipboard test" + + test "Send string to clipboard 2": + const str = ru"`````" + const registers = editorstatus.Registers(yankedLines: @[], yankedStr: str) + + const platform = editorstatus.Platform.linux + registers.sendToClipboad(platform) + + let (output, exitCode) = execCmdEx("xclip -o") + + check exitCode == 0 and output[0 .. output.high - 1] == "`````" + + test "Send string to clipboard 3": + const str = ru"$Clipboard test" + const registers = editorstatus.Registers(yankedLines: @[], yankedStr: str) + + const platform = editorstatus.Platform.linux + registers.sendToClipboad(platform) + + let (output, exitCode) = execCmdEx("xclip -o") + + check exitCode == 0 and output[0 .. output.high - 1] == "$Clipboard test" diff --git a/tests/tnormalmode.nim b/tests/tnormalmode.nim index ba85c9cdd..ad0b9c3d8 100644 --- a/tests/tnormalmode.nim +++ b/tests/tnormalmode.nim @@ -4,230 +4,144 @@ import moepkg/[editorstatus, gapbuffer, normalmode, unicodeext, editor, bufferst include moepkg/normalmode -test "Delete current character": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) - status.workSpace[status.currentWorkSpaceIndex].currentMainWindowNode.currentColumn = 1 - status.bufStatus[0].deleteCurrentCharacter(status.workSpace[status.currentWorkSpaceIndex].currentMainWindowNode, status.settings.autoDeleteParen) - check(status.bufStatus[0].buffer[0] == ru"ac") +suite "Normal mode: Move to the right": + test "Move tow to the right": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) -test "Add indent": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) - const tabStop = 2 - status.bufStatus[0].addIndent(status.workSpace[status.currentWorkSpaceIndex].currentMainWindowNode, tabStop) - check(status.bufStatus[0].buffer[0] == ru" abc") - -test "Delete indent": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru" abc"]) - const tabStop = 2 - status.bufStatus[0].deleteIndent(status.workSpace[status.currentWorkSpaceIndex].currentMainWindowNode, tabStop) - check(status.bufStatus[0].buffer[0] == ru"abc") - -test "Send to clipboard 1": - const registers = Registers(yankedLines: @[], yankedStr: ru"Clipboard test") - - const platform = Platform.linux - - registers.sendToClipboad(platform) - let (output, exitCode) = execCmdEx("xclip -o") - - check(exitCode == 0 and output[0 .. output.high - 1] == "Clipboard test") - -test "Send to clipboard 2": - const registers = Registers(yankedLines: @[], yankedStr: ru"`Clipboard test`") - - const platform = Platform.linux - - registers.sendToClipboad(platform) - let (output, exitCode) = execCmdEx("xclip -o") - - check(exitCode == 0 and output[0 .. output.high - 1] == "`Clipboard test`") - -test "Send to clipboard 3": - const registers = Registers(yankedLines: @[], yankedStr: ru"`````") - - const platform = Platform.linux - - registers.sendToClipboad(platform) - let (output, exitCode) = execCmdEx("xclip -o") - - check(exitCode == 0 and output[0 .. output.high - 1] == "`````") - -test "Send to clipboard 4": - const registers = Registers(yankedLines: @[], yankedStr: ru"$Clipboard test") - - const platform = Platform.linux - - registers.sendToClipboad(platform) - let (output, exitCode) = execCmdEx("xclip -o") - - check(exitCode == 0 and output[0 .. output.high - 1] == "$Clipboard test") - -test "Normal mode: Move right": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) - - status.resize(100, 100) - status.update - - - status.bufStatus[0].cmdLoop = 2 - const key = @[ru'l'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.workspace[0].currentMainWindowNode.currentColumn == 2) + status.bufStatus[0].cmdLoop = 2 + const key = @[ru'l'] + status.normalCommand(key) + status.update -test "Normal mode: Move left": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + check(status.workspace[0].currentMainWindowNode.currentColumn == 2) - status.resize(100, 100) - status.update +suite "Normal mode: Move to the left": + test "Move one to the left": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + status.workspace[0].currentMainWindowNode.currentColumn = 2 - status.bufStatus[0].cmdLoop = 2 - block: - const key = @[ru'l'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - status.bufStatus[0].cmdLoop = 1 - block: const key = @[ru'h'] status.normalCommand(key) - status.update + status.update - check(status.workspace[0].currentMainWindowNode.currentColumn == 1) + check(status.workspace[0].currentMainWindowNode.currentColumn == 1) -test "Normal mode: Move down": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a", ru"b"]) +suite "Normal mode: Move to the down": + test "Move two to the down": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a", ru"b", ru"c"]) - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - status.bufStatus[0].cmdLoop = 2 - block: + status.bufStatus[0].cmdLoop = 2 const key = @[ru'j'] status.normalCommand(key) - status.update - - check(status.workspace[0].currentMainWindowNode.currentLine == 1) + status.update -test "Normal mode: Move up": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a", ru"b", ru"c"]) + check(status.workspace[0].currentMainWindowNode.currentLine == 2) - status.resize(100, 100) - status.update +suite "Normal mode: Move to the up": + test "Move two to the up": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a", ru"b", ru"c"]) + status.workspace[0].currentMainWindowNode.currentLine = 2 - status.bufStatus[0].cmdLoop = 2 - block: - const key = @[ru'j'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - status.bufStatus[0].cmdLoop = 1 - block: + status.bufStatus[0].cmdLoop = 2 const key = @[ru'k'] status.normalCommand(key) - status.update - - check(status.workspace[0].currentMainWindowNode.currentLine == 1) + status.update -test "Normal mode: Delete current character": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + check(status.workspace[0].currentMainWindowNode.currentLine == 0) - status.resize(100, 100) - status.update +suite "Normal mode: Delete current character": + test "Delete two current character": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) - status.bufStatus[0].cmdLoop = 2 - const key = @[ru'x'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].buffer[0] == ru"c") + status.bufStatus[0].cmdLoop = 2 + const key = @[ru'x'] + status.normalCommand(key) + status.update -test "Normal mode: Move to last of line": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + check(status.bufStatus[0].buffer[0] == ru"c") - status.resize(100, 100) - status.update +suite "Normal mode: Move to last of line": + test "Move to last of line": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) - const key = @[ru'$'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.workspace[0].currentMainWindowNode.currentColumn == 2) + const key = @[ru'$'] + status.normalCommand(key) + status.update -test "Normal mode: Move to first of line": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + check(status.workspace[0].currentMainWindowNode.currentColumn == 2) - status.resize(100, 100) - status.update +suite "Normal mode: Move to first of line": + test "Move to first of line": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + status.workspace[0].currentMainWindowNode.currentColumn = 2 - block: - const key = @[ru'$'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - block: const key = @[ru'0'] status.normalCommand(key) - status.update - - check(status.workspace[0].currentMainWindowNode.currentColumn == 0) + status.update -test "Normal mode: Move to first non blank of line": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru" abc"]) + check(status.workspace[0].currentMainWindowNode.currentColumn == 0) - status.resize(100, 100) - status.update +suite "Normal mode: Move to first non blank of line": + test "Move to first non blank of line": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru" abc"]) + status.workspace[0].currentMainWindowNode.currentColumn = 4 - block: - const key = @[ru'$'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - block: const key = @[ru'^'] status.normalCommand(key) - status.update - - check(status.workspace[0].currentMainWindowNode.currentColumn == 2) + status.update -test "Normal mode: Move to first of previous line": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru" abc", ru"def", ru"ghi"]) + check(status.workspace[0].currentMainWindowNode.currentColumn == 2) - status.resize(100, 100) - status.update +suite "Normal mode: Move to first of previous line": + test "Move to first of previous line": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru" abc", ru"def", ru"ghi"]) + status.workspace[0].currentMainWindowNode.currentLine = 2 - status.bufStatus[0].cmdLoop = 2 - block: - const key = @[ru'j'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - block: const key = @[ru'-'] status.normalCommand(key) status.update @@ -239,323 +153,336 @@ test "Normal mode: Move to first of previous line": check(status.workspace[0].currentMainWindowNode.currentLine == 0) check(status.workspace[0].currentMainWindowNode.currentColumn == 0) -test "Normal mode: Move to first of next line": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc", ru"def"]) - - status.resize(100, 100) - status.update - - const key = @[ru'+'] - status.normalCommand(key) - status.update - - check(status.workspace[0].currentMainWindowNode.currentLine == 1) - check(status.workspace[0].currentMainWindowNode.currentColumn == 0) - -test "Normal mode: Move to last line": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc", ru"def", ru"ghi"]) - - status.resize(100, 100) - status.update +suite "Normal mode: Move to first of next line": + test "Move to first of next line": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc", ru"def"]) - const key = @[ru'G'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.workspace[0].currentMainWindowNode.currentLine == 2) + const key = @[ru'+'] + status.normalCommand(key) + status.update -test "Normal mode: Page down": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) - for i in 0 ..< 200: status.bufStatus[0].buffer.insert(ru"a", 0) + check(status.workspace[0].currentMainWindowNode.currentLine == 1) + check(status.workspace[0].currentMainWindowNode.currentColumn == 0) - status.settings.smoothScroll = false +suite "Normal mode: Move to last line": + test "Move to last line": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc", ru"def", ru"ghi"]) - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - const key = @[KEY_NPAGE.toRune] - status.normalCommand(key) - status.update + const key = @[ru'G'] + status.normalCommand(key) + status.update - check(status.workspace[0].currentMainWindowNode.currentLine == status.workspace[0].currentMainWindowNode.view.height) + check(status.workspace[0].currentMainWindowNode.currentLine == 2) -test "Normal mode: Page up": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) - for i in 0 ..< 200: status.bufStatus[0].buffer.insert(ru"a", 0) +suite "Normal mode: Page down": + test "Page down": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) + for i in 0 ..< 200: status.bufStatus[0].buffer.insert(ru"a", 0) - status.settings.smoothScroll = false + status.settings.smoothScroll = false - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - block: const key = @[KEY_NPAGE.toRune] status.normalCommand(key) - status.update + status.update - block: - const key = @[KEY_PPAGE.toRune] - status.normalCommand(key) - status.update + let + currentLine = status.workspace[0].currentMainWindowNode.currentLine + viewHeight = status.workspace[0].currentMainWindowNode.view.height + + check currentLine == viewHeight - check(status.workspace[0].currentMainWindowNode.currentLine == 0) +suite "Normal mode: Page up": + test "Page up": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) + for i in 0 ..< 200: status.bufStatus[0].buffer.insert(ru"a", 0) -test "Normal mode: Move to forward word": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc def ghi"]) + status.settings.smoothScroll = false - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - status.bufStatus[0].cmdLoop = 2 - const key = @[ru'w'] - status.normalCommand(key) - status.update + block: + const key = @[KEY_NPAGE.toRune] + status.normalCommand(key) + status.update - check(status.workspace[0].currentMainWindowNode.currentColumn == 8) + block: + const key = @[KEY_PPAGE.toRune] + status.normalCommand(key) + status.update -test "Normal mode: Move to backward word": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc def ghi"]) + check(status.workspace[0].currentMainWindowNode.currentLine == 0) - status.resize(100, 100) - status.update +suite "Normal mode: Move to forward word": + test "Move to forward word": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc def ghi"]) - status.bufStatus[0].cmdLoop = 2 - block: + status.resize(100, 100) + status.update + + status.bufStatus[0].cmdLoop = 2 const key = @[ru'w'] status.normalCommand(key) - status.update + status.update + + check(status.workspace[0].currentMainWindowNode.currentColumn == 8) - status.bufStatus[0].cmdLoop = 1 - block: +suite "Normal mode: Move to backward word": + test "Move to backward word": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc def ghi"]) + status.workspace[0].currentMainWindowNode.currentColumn = 8 + + status.resize(100, 100) + status.update + + status.bufStatus[0].cmdLoop = 1 const key = @[ru'b'] status.normalCommand(key) - status.update - - check(status.workspace[0].currentMainWindowNode.currentColumn == 4) + status.update -test "Normal mode: Move to forward end of word": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc def ghi"]) + check(status.workspace[0].currentMainWindowNode.currentColumn == 4) - status.resize(100, 100) - status.update +suite "Normal mode: Move to forward end of word": + test "Move to forward end of word": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc def ghi"]) - status.bufStatus[0].cmdLoop = 2 - const key = @[ru'e'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.workspace[0].currentMainWindowNode.currentColumn == 6) + status.bufStatus[0].cmdLoop = 2 + const key = @[ru'e'] + status.normalCommand(key) + status.update -test "Normal mode: Open blank line below": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) + check(status.workspace[0].currentMainWindowNode.currentColumn == 6) - status.resize(100, 100) - status.update +suite "Normal mode: Open blank line below": + test "Open blank line below": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) - const key = @[ru'o'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].buffer.len == 2) - check(status.bufStatus[0].buffer[0] == ru"a") - check(status.bufStatus[0].buffer[1] == ru"") + const key = @[ru'o'] + status.normalCommand(key) + status.update - check(status.workspace[0].currentMainWindowNode.currentLine == 1) + check(status.bufStatus[0].buffer.len == 2) + check(status.bufStatus[0].buffer[0] == ru"a") + check(status.bufStatus[0].buffer[1] == ru"") - check(status.bufStatus[0].mode == Mode.insert) + check(status.workspace[0].currentMainWindowNode.currentLine == 1) -test "Normal mode: Open blank line below": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) + check(status.bufStatus[0].mode == Mode.insert) - status.resize(100, 100) - status.update +suite "Normal mode: Open blank line below": + test "Open blank line below": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) - const key = @[ru'O'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].buffer.len == 2) - check(status.bufStatus[0].buffer[0] == ru"") - check(status.bufStatus[0].buffer[1] == ru"a") + const key = @[ru'O'] + status.normalCommand(key) + status.update - check(status.workspace[0].currentMainWindowNode.currentLine == 0) + check(status.bufStatus[0].buffer.len == 2) + check(status.bufStatus[0].buffer[0] == ru"") + check(status.bufStatus[0].buffer[1] == ru"a") - check(status.bufStatus[0].mode == Mode.insert) + check(status.workspace[0].currentMainWindowNode.currentLine == 0) -test "Normal mode: Add indent": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) + check(status.bufStatus[0].mode == Mode.insert) - status.resize(100, 100) - status.update +suite "Normal mode: Add indent": + test "Add indent": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) - const key = @[ru'>'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].buffer[0] == ru" a") + const key = @[ru'>'] + status.normalCommand(key) + status.update -test "Normal mode: Delete indent": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru" a"]) + check(status.bufStatus[0].buffer[0] == ru" a") - status.resize(100, 100) - status.update +suite "Normal mode: Delete indent": + test "Normal mode: Delete indent": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru" a"]) - const key = @[ru'<'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].buffer[0] == ru"a") + const key = @[ru'<'] + status.normalCommand(key) + status.update -test "Normal mode: Join line": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a", ru"b"]) + check(status.bufStatus[0].buffer[0] == ru"a") - status.resize(100, 100) - status.update +suite "Normal mode: Join line": + test "Join line": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a", ru"b"]) - const key = @[ru'J'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].buffer[0] == ru"ab") + const key = @[ru'J'] + status.normalCommand(key) + status.update -test "Normal mode: Replace mode": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) + check(status.bufStatus[0].buffer[0] == ru"ab") - status.resize(100, 100) - status.update +suite "Normal mode: Replace mode": + test "Replace mode": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) - const key = @[ru'R'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].mode == Mode.replace) + const key = @[ru'R'] + status.normalCommand(key) + status.update -test "Normal mode: Move right and enter insert mode": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) + check(status.bufStatus[0].mode == Mode.replace) - status.resize(100, 100) - status.update +suite "Normal mode: Move right and enter insert mode": + test "Move right and enter insert mode": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) - const key = @[ru'a'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].mode == Mode.insert) - check(status.workspace[0].currentMainWindowNode.currentColumn == 1) + const key = @[ru'a'] + status.normalCommand(key) + status.update -test "Normal mode: Move last of line and enter insert mode": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + check(status.bufStatus[0].mode == Mode.insert) + check(status.workspace[0].currentMainWindowNode.currentColumn == 1) - status.resize(100, 100) - status.update +suite "Normal mode: Move last of line and enter insert mode": + test "Move last of line and enter insert mode": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) - const key = @[ru'A'] - status.normalCommand(key) - status.update + status.resize(100, 100) + status.update - check(status.bufStatus[0].mode == Mode.insert) - check(status.workspace[0].currentMainWindowNode.currentColumn == 3) + const key = @[ru'A'] + status.normalCommand(key) + status.update -test "Normal mode: Repeat last command": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + check(status.bufStatus[0].mode == Mode.insert) + check(status.workspace[0].currentMainWindowNode.currentColumn == 3) - status.resize(100, 100) - status.update +suite "Normal mode: Repeat last command": + test "Repeat last command": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) - block: - const key = ru'x' - let commands = status.isNormalModeCommand(key) - status.normalCommand(commands) + status.resize(100, 100) status.update - block: - const key = @[ru'.'] - status.normalCommand(key) - status.update + block: + const key = ru'x' + let commands = status.isNormalModeCommand(key) + status.normalCommand(commands) + status.update - check(status.bufStatus[0].buffer.len == 1) - check(status.bufStatus[0].buffer[0].len == 1) + block: + const key = @[ru'.'] + status.normalCommand(key) + status.update -test "Normal mode: Repeat last command 2": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) + check(status.bufStatus[0].buffer.len == 1) + check(status.bufStatus[0].buffer[0].len == 1) - status.resize(100, 100) - status.update + test "Repeat last command 2": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc"]) - block: - const key = ru'>' - let commands = status.isNormalModeCommand(key) - status.normalCommand(commands) + status.resize(100, 100) status.update - status.workspace[0].currentMainWindowNode.currentColumn = 0 + block: + const key = ru'>' + let commands = status.isNormalModeCommand(key) + status.normalCommand(commands) + status.update - block: - const key = ru'x' - let commands = status.isNormalModeCommand(key) - status.normalCommand(commands) - status.update + status.workspace[0].currentMainWindowNode.currentColumn = 0 - block: - const key = @[ru'.'] - status.normalCommand(key) - status.update + block: + const key = ru'x' + let commands = status.isNormalModeCommand(key) + status.normalCommand(commands) + status.update - check(status.bufStatus[0].buffer.len == 1) - check(status.bufStatus[0].buffer[0] == ru"abc") + block: + const key = @[ru'.'] + status.normalCommand(key) + status.update -test "Normal mode: Repeat last command 3": - var status = initEditorStatus() - status.addNewBuffer("") - status.bufStatus[0].buffer = initGapBuffer(@[ru"abc", ru"def", ru"ghi"]) + check(status.bufStatus[0].buffer.len == 1) + check(status.bufStatus[0].buffer[0] == ru"abc") - status.resize(100, 100) - status.update + test "Repeat last command 3": + var status = initEditorStatus() + status.addNewBuffer("") + status.bufStatus[0].buffer = initGapBuffer(@[ru"abc", ru"def", ru"ghi"]) - block: - const key = ru'j' - let commands = status.isNormalModeCommand(key) - status.normalCommand(commands) + status.resize(100, 100) status.update - block: - const key = @[ru'.'] - status.normalCommand(key) - status.update + block: + const key = ru'j' + let commands = status.isNormalModeCommand(key) + status.normalCommand(commands) + status.update - check(status.workspace[0].currentMainWindowNode.currentLine == 1) + block: + const key = @[ru'.'] + status.normalCommand(key) + status.update + check(status.workspace[0].currentMainWindowNode.currentLine == 1) From 83137000f8540552b4dc54c4c9d7c7e8c9d7d6da Mon Sep 17 00:00:00 2001 From: fox0430 Date: Thu, 9 Jul 2020 00:10:50 +0900 Subject: [PATCH 2/2] Unit test: Fix and refactor texmode.nim --- tests/texmode.nim | 1077 +++++++++++++++++++++++---------------------- 1 file changed, 553 insertions(+), 524 deletions(-) diff --git a/tests/texmode.nim b/tests/texmode.nim index 4a2a5a6f7..4cd6c66ab 100644 --- a/tests/texmode.nim +++ b/tests/texmode.nim @@ -1,652 +1,681 @@ import unittest, os import moepkg/[ui, editorstatus, gapbuffer, exmode, unicodeext, bufferstatus] -test "Edit command": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Edit command": + test "Edit command": + var status = initEditorStatus() + status.addNewBuffer("") - const command = @[ru"e", ru"test"] - status.exModeCommand(command) - -test "Edit command 2": - var status = initEditorStatus() - status.addNewBuffer("test") - - status.resize(100, 100) - status.verticalSplitWindow - status.resize(100, 100) - - status.changeMode(Mode.ex) - const command = @[ru"e", ru"test2"] - status.exModeCommand(command) - - check(status.bufStatus[0].mode == Mode.normal) - check(status.bufStatus[1].mode == Mode.normal) - -test "Write command": - var status = initEditorStatus() - status.addNewBuffer("") - - status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) - status.bufStatus[0].filename = ru"test.txt" - const command = @[ru"w"] - status.exModeCommand(command) - -test "Change next buffer command": - var status = initEditorStatus() - for i in 0 ..< 2: status.addNewBuffer("") - - const command = @[ru"bnext"] - for i in 0 ..< 3: status.exModeCommand(command) - -test "Change prev buffer command": - var status = initEditorStatus() - for i in 0 ..< 2: status.addNewBuffer("") + const command = @[ru"e", ru"test"] + status.exModeCommand(command) - status.workSpace[0].currentMainWindowNode.bufferIndex = 1 - const command = @[ru"bprev"] - for i in 0 ..< 3: status.exModeCommand(command) + test "Edit command 2": + var status = initEditorStatus() + status.addNewBuffer("test") -test "Open buffer by number command": - var status = initEditorStatus() - for i in 0 ..< 3: status.addNewBuffer("") + status.resize(100, 100) + status.verticalSplitWindow + status.resize(100, 100) - block: - const command = @[ru"b", ru"1"] + status.changeMode(Mode.ex) + const command = @[ru"e", ru"test2"] status.exModeCommand(command) - block: - const command = @[ru"b", ru"0"] - status.exModeCommand(command) + check(status.bufStatus[0].mode == Mode.normal) + check(status.bufStatus[1].mode == Mode.normal) - block: - const command = @[ru"b", ru"2"] - status.exModeCommand(command) +suite "Ex mode: Write command": + test "Write command": + var status = initEditorStatus() + status.addNewBuffer("") -test "Change to first buffer command": - var status = initEditorStatus() - for i in 0 ..< 3: status.addNewBuffer("") - - status.workSpace[0].currentMainWindowNode.bufferIndex = 2 - const command = @[ru"bfirst"] - status.exModeCommand(command) - - check(status.workSpace[0].currentMainWindowNode.bufferIndex == 0) - -test "Change to last buffer command": - var status = initEditorStatus() - for i in 0 ..< 3: status.addNewBuffer("") - - status.workSpace[0].currentMainWindowNode.bufferIndex = 0 - const command = @[ru"blast"] - status.exModeCommand(command) - check(status.workSpace[0].currentMainWindowNode.bufferIndex == 2) - -test "Replace buffer command": - var status = initEditorStatus() - status.addNewBuffer("") - - status.bufStatus[0].buffer = initGapBuffer(@[ru"xyz", - ru"abcdefghijk", - ru"Hello"]) - const command = @[ru"%s/efg/zzzzzz"] - status.exModeCommand(command) - check(status.bufStatus[0].buffer[1] == ru"abcdzzzzzzhijk") - -test "Turn off highlighting command": - var status = initEditorStatus() - status.addNewBuffer("") - const command = @[ru"noh"] - status.exModeCommand(command) - -test "Tab line setting command": - var status = initEditorStatus() - status.addNewBuffer("") - - block: - const command = @[ru"tab", ru"off"] - status.exModeCommand(command) - check(status.settings.tabLine.useTab == false) - block: - const command = @[ru"tab", ru"on"] + status.bufStatus[0].buffer = initGapBuffer(@[ru"a"]) + status.bufStatus[0].filename = ru"test.txt" + const command = @[ru"w"] status.exModeCommand(command) - check(status.settings.tabLine.useTab == true) - -test "StatusBar setting command": - var status = initEditorStatus() - status.addNewBuffer("") - block: - const command = @[ru"statusbar", ru"off"] - status.exModeCommand(command) - check(status.settings.statusBar.useBar == false) - block: - const command = @[ru"statusbar", ru"on"] - status.exModeCommand(command) - check(status.settings.statusBar.useBar == true) +suite "Ex mode: Change next buffer command": + test "Change next buffer command": + var status = initEditorStatus() + for i in 0 ..< 2: status.addNewBuffer("") -test "Line number setting command": - var status = initEditorStatus() - status.addNewBuffer("") + const command = @[ru"bnext"] + for i in 0 ..< 3: status.exModeCommand(command) - block: - const command = @[ru"linenum", ru"off"] - status.exModeCommand(command) - check(status.settings.view.lineNumber == false) - block: - const command = @[ru"linenum", ru"on"] - status.exModeCommand(command) - check(status.settings.view.lineNumber == true) +suite "Ex mode: Change next buffer command": + test "Change prev buffer command": + var status = initEditorStatus() + for i in 0 ..< 2: status.addNewBuffer("") -test "Auto indent setting command": - var status = initEditorStatus() - status.addNewBuffer("") + status.workSpace[0].currentMainWindowNode.bufferIndex = 1 + const command = @[ru"bprev"] + for i in 0 ..< 3: status.exModeCommand(command) - block: - const command = @[ru"indent", ru"off"] - status.exModeCommand(command) - check(status.settings.autoIndent == false) - block: - const command = @[ru"indent", ru"on"] - status.exModeCommand(command) - check(status.settings.autoIndent == true) +suite "Ex mode: Open buffer by number command": + test "Open buffer by number command": + var status = initEditorStatus() + for i in 0 ..< 3: status.addNewBuffer("") -test "Auto close paren setting command": - var status = initEditorStatus() - status.addNewBuffer("") + block: + const command = @[ru"b", ru"1"] + status.exModeCommand(command) + + block: + const command = @[ru"b", ru"0"] + status.exModeCommand(command) + + block: + const command = @[ru"b", ru"2"] + status.exModeCommand(command) + +suite "Ex mode: Change to first buffer command": + test "Change to first buffer command": + var status = initEditorStatus() + for i in 0 ..< 3: status.addNewBuffer("") + + status.workSpace[0].currentMainWindowNode.bufferIndex = 2 + const command = @[ru"bfirst"] + status.exModeCommand(command) + + check(status.workSpace[0].currentMainWindowNode.bufferIndex == 0) + +suite "Ex mode: Change to last buffer command": + test "Change to last buffer command": + var status = initEditorStatus() + for i in 0 ..< 3: status.addNewBuffer("") + + status.workSpace[0].currentMainWindowNode.bufferIndex = 0 + const command = @[ru"blast"] + status.exModeCommand(command) + check(status.workSpace[0].currentMainWindowNode.bufferIndex == 2) + +suite "Ex mode: Replace buffer command": + test "Replace buffer command": + var status = initEditorStatus() + status.addNewBuffer("") + + status.bufStatus[0].buffer = initGapBuffer(@[ru"xyz", + ru"abcdefghijk", + ru"Hello"]) + const command = @[ru"%s/efg/zzzzzz"] + status.exModeCommand(command) + check(status.bufStatus[0].buffer[1] == ru"abcdzzzzzzhijk") + +suite "Ex mode: Turn off highlighting command": + test "Turn off highlighting command": + var status = initEditorStatus() + status.addNewBuffer("") + const command = @[ru"noh"] + status.exModeCommand(command) + +suite "Ex mode: Tab line setting command": + test "Tab line setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"tab", ru"off"] + status.exModeCommand(command) + check(status.settings.tabLine.useTab == false) + block: + const command = @[ru"tab", ru"on"] + status.exModeCommand(command) + check(status.settings.tabLine.useTab == true) + +suite "Ex mode: StatusBar setting command": + test "StatusBar setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"statusbar", ru"off"] + status.exModeCommand(command) + check(status.settings.statusBar.useBar == false) + block: + const command = @[ru"statusbar", ru"on"] + status.exModeCommand(command) + check(status.settings.statusBar.useBar == true) + +suite "Ex mode: Line number setting command": + test "Line number setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"linenum", ru"off"] + status.exModeCommand(command) + check(status.settings.view.lineNumber == false) + block: + const command = @[ru"linenum", ru"on"] + status.exModeCommand(command) + check(status.settings.view.lineNumber == true) + +suite "Ex mode: Auto indent setting command": + test "Auto indent setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"indent", ru"off"] + status.exModeCommand(command) + check(status.settings.autoIndent == false) + block: + const command = @[ru"indent", ru"on"] + status.exModeCommand(command) + check(status.settings.autoIndent == true) + +suite "Ex mode: Auto close paren setting command": + test "Auto close paren setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"paren", ru"off"] + status.exModeCommand(command) + check(status.settings.autoCloseParen == false) + block: + const command = @[ru"paren", ru"on"] + status.exModeCommand(command) + check(status.settings.autoCloseParen == true) + +suite "Ex mode: Tab stop setting command": + test "Tab stop setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"paren", ru"off"] + status.exModeCommand(command) + check(status.settings.autoCloseParen == false) + block: + const command = @[ru"paren", ru"on"] + status.exModeCommand(command) + check(status.settings.autoCloseParen == true) + +suite "Ex mode: Syntax setting command": + test "Syntax setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"syntax", ru"off"] + status.exModeCommand(command) + check(status.settings.syntax == false) + block: + const command = @[ru"syntax", ru"on"] + status.exModeCommand(command) + check(status.settings.syntax == true) + +suite "Ex mode: Change cursor line command": + test "Change cursor line command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"cursorLine", ru"on"] + status.exModeCommand(command) + check(status.settings.view.cursorLine == true) + block: + const command = @[ru"cursorLine", ru"off"] + status.exModeCommand(command) + check(status.settings.view.cursorLine == false) + +suite "Ex mode: Split window command": + test "Split window command": + var status = initEditorStatus() + status.addNewBuffer("") + status.resize(100, 100) + + const command = @[ru"vs"] + status.exModeCommand(command) + check(status.workSpace[0].numOfMainWindow == 2) + +suite "Ex mode: Live reload of configuration file setting command": + test "Live reload of configuration file setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"livereload", ru"on"] + status.exModeCommand(command) + check(status.settings.liveReloadOfConf == true) + block: + const command = @[ru"livereload", ru"off"] + status.exModeCommand(command) + check(status.settings.liveReloadOfConf == false) + +suite "Ex mode: Real time search setting command": + test "Real time search setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"realtimesearch", ru"off"] + status.exModeCommand(command) + check(status.settings.realtimeSearch == false) + block: + const command = @[ru"realtimesearch", ru"on"] + status.exModeCommand(command) + check(status.settings.realtimeSearch == true) + +suite "Ex mode: Change theme command": + test "Change theme command": + var status = initEditorStatus() + status.addNewBuffer("") + startUi() + + block: + const command = @[ru"theme", ru"vivid"] + status.exModeCommand(command) + + block: + const command = @[ru"theme", ru"dark"] + status.exModeCommand(command) + + block: + const command = @[ru"theme", ru"light"] + status.exModeCommand(command) + + block: + const command = @[ru"theme", ru"config"] + status.exModeCommand(command) + +suite "Ex mode: Open buffer manager": + test "Open buffer manager": + var status = initEditorStatus() + status.addNewBuffer("") + startUi() + + const command = @[ru"buf"] + status.exModeCommand(command) + +suite "Ex mode: Open log viewer": + test "Open log viewer": + var status = initEditorStatus() + status.addNewBuffer("") + startUi() + + const command = @[ru"log"] + status.exModeCommand(command) + +suite "Ex mode: Highlight pair of paren settig command": + test "Highlight pair of paren settig command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"highlightparen", ru"off"] + status.exModeCommand(command) + check(status.settings.highlightPairOfParen == false) + block: + const command = @[ru"highlightparen", ru"on"] + status.exModeCommand(command) + check(status.settings.highlightPairOfParen == true) + +suite "Ex mode: Auto delete paren setting command": + test "Auto delete paren setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"deleteparen", ru"off"] + status.exModeCommand(command) + check(status.settings.autoDeleteParen == false) + + block: + const command = @[ru"deleteparen", ru"on"] + status.exModeCommand(command) + check(status.settings.autoDeleteParen == true) + +suite "Ex mode: Smooth scroll setting command": + test "Smooth scroll setting command": + var status = initEditorStatus() + status.addNewBuffer("") + + block: + const command = @[ru"smoothscroll", ru"off"] + status.exModeCommand(command) + check(status.settings.smoothScroll == false) + + block: + const command = @[ru"smoothscroll", ru"on"] + status.exModeCommand(command) + check(status.settings.smoothScroll == true) - block: - const command = @[ru"paren", ru"off"] - status.exModeCommand(command) - check(status.settings.autoCloseParen == false) - block: - const command = @[ru"paren", ru"on"] - status.exModeCommand(command) - check(status.settings.autoCloseParen == true) +suite "Ex mode: Smooth scroll speed setting command": + test "Smooth scroll speed setting command": + var status = initEditorStatus() + status.addNewBuffer("") -test "Tab stop setting command": - var status = initEditorStatus() - status.addNewBuffer("") + block: + const command = @[ru"scrollspeed", ru"1"] + status.exModeCommand(command) + check(status.settings.smoothScrollSpeed == 1) - block: - const command = @[ru"paren", ru"off"] - status.exModeCommand(command) - check(status.settings.autoCloseParen == false) - block: - const command = @[ru"paren", ru"on"] - status.exModeCommand(command) - check(status.settings.autoCloseParen == true) +suite "Ex mode: Highlight current word setting command": + test "Highlight current word setting command": + var status = initEditorStatus() + status.addNewBuffer("") -test "Syntax setting command": - var status = initEditorStatus() - status.addNewBuffer("") + block: + const command = @[ru"highlightcurrentword", ru"off"] + status.exModeCommand(command) + check(status.settings.highlightOtherUsesCurrentWord == false) - block: - const command = @[ru"syntax", ru"off"] - status.exModeCommand(command) - check(status.settings.syntax == false) - block: - const command = @[ru"syntax", ru"on"] - status.exModeCommand(command) - check(status.settings.syntax == true) + block: + const command = @[ru"highlightcurrentword", ru"on"] + status.exModeCommand(command) + check(status.settings.highlightOtherUsesCurrentWord == true) -test "Change cursor line command": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Clipboard setting command": + test "Clipboard setting command": + var status = initEditorStatus() + status.addNewBuffer("") - block: - const command = @[ru"cursorLine", ru"on"] - status.exModeCommand(command) - check(status.settings.view.cursorLine == true) - block: - const command = @[ru"cursorLine", ru"off"] - status.exModeCommand(command) - check(status.settings.view.cursorLine == false) + block: + const command = @[ru"clipboard", ru"off"] + status.exModeCommand(command) + check(status.settings.systemClipboard == false) -test "Split window command": - var status = initEditorStatus() - status.addNewBuffer("") - status.resize(100, 100) + block: + const command = @[ru"clipboard", ru"on"] + status.exModeCommand(command) + check(status.settings.systemClipboard == true) - const command = @[ru"vs"] - status.exModeCommand(command) - check(status.workSpace[0].numOfMainWindow == 2) +suite "Ex mode: Highlight full width space command": + test "Highlight full width space command": + var status = initEditorStatus() + status.addNewBuffer("") -test "Live reload of configuration file setting command": - var status = initEditorStatus() - status.addNewBuffer("") + block: + const command = @[ru"highlightfullspace", ru"off"] + status.exModeCommand(command) + check(status.settings.highlightFullWidthSpace == false) - block: - const command = @[ru"livereload", ru"on"] - status.exModeCommand(command) - check(status.settings.liveReloadOfConf == true) - block: - const command = @[ru"livereload", ru"off"] - status.exModeCommand(command) - check(status.settings.liveReloadOfConf == false) + block: + const command = @[ru"highlightfullspace", ru"on"] + status.exModeCommand(command) + check(status.settings.highlightFullWidthSpace == true) -test "Real time search setting command": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Create work space command": + test "Create work space command": + var status = initEditorStatus() + status.addNewBuffer("") - block: - const command = @[ru"realtimesearch", ru"off"] - status.exModeCommand(command) - check(status.settings.realtimeSearch == false) - block: - const command = @[ru"realtimesearch", ru"on"] + const command = @[ru"cws"] status.exModeCommand(command) - check(status.settings.realtimeSearch == true) -test "Change theme command": - var status = initEditorStatus() - status.addNewBuffer("") - startUi() + check(status.workspace.len == 2) - block: - const command = @[ru"theme", ru"vivid"] - status.exModeCommand(command) +suite "Ex mode: Change work space command": + test "Change work space command": + var status = initEditorStatus() + status.addNewBuffer("") - block: - const command = @[ru"theme", ru"dark"] - status.exModeCommand(command) + status.createWrokSpace - block: - const command = @[ru"theme", ru"light"] + const command = @[ru"ws", ru"1"] status.exModeCommand(command) - block: - const command = @[ru"theme", ru"config"] - status.exModeCommand(command) + check(status.currentWorkSpaceIndex == 0) -test "Open buffer manager": - var status = initEditorStatus() - status.addNewBuffer("") - startUi() +suite "Ex mode: Delete work space command": + test "Delete work space command": + var status = initEditorStatus() + status.addNewBuffer("") - const command = @[ru"buf"] - status.exModeCommand(command) + status.createWrokSpace -test "Open log viewer": - var status = initEditorStatus() - status.addNewBuffer("") - startUi() + const command = @[ru"dws"] + status.exModeCommand(command) - const command = @[ru"log"] - status.exModeCommand(command) + check(status.workspace.len == 1) -test "Highlight pair of paren settig command": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Delete work space command": + test "Tab stop setting command": + var status = initEditorStatus() + status.addNewBuffer("") - block: - const command = @[ru"highlightparen", ru"off"] + const command = @[ru"tabstop", ru"4"] status.exModeCommand(command) - check(status.settings.highlightPairOfParen == false) - block: - const command = @[ru"highlightparen", ru"on"] - status.exModeCommand(command) - check(status.settings.highlightPairOfParen == true) - -test "Auto delete paren setting command": - var status = initEditorStatus() - status.addNewBuffer("") - block: - const command = @[ru"deleteparen", ru"off"] - status.exModeCommand(command) - check(status.settings.autoDeleteParen == false) + check(status.settings.tabStop == 4) - block: - const command = @[ru"deleteparen", ru"on"] - status.exModeCommand(command) - check(status.settings.autoDeleteParen == true) + test "Tab stop setting command 2": + var status = initEditorStatus() + status.addNewBuffer("") -test "Smooth scroll setting command": - var status = initEditorStatus() - status.addNewBuffer("") + let defaultTabStop = status.settings.tabStop - block: - const command = @[ru"smoothscroll", ru"off"] + const command = @[ru"tabstop", ru"a"] status.exModeCommand(command) - check(status.settings.smoothScroll == false) - block: - const command = @[ru"smoothscroll", ru"on"] - status.exModeCommand(command) - check(status.settings.smoothScroll == true) + check(status.settings.tabStop == defaultTabStop) -test "Smooth scroll speed setting command": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Smooth scroll speed setting command": + test "Smooth scroll speed setting command": + var status = initEditorStatus() + status.addNewBuffer("") - block: const command = @[ru"scrollspeed", ru"1"] status.exModeCommand(command) + check(status.settings.smoothScrollSpeed == 1) -test "Highlight current word setting command": - var status = initEditorStatus() - status.addNewBuffer("") + test "Smooth scroll speed setting command 2": + var status = initEditorStatus() + status.addNewBuffer("") - block: - const command = @[ru"highlightcurrentword", ru"off"] - status.exModeCommand(command) - check(status.settings.highlightOtherUsesCurrentWord == false) + let defaultSpeed = status.settings.smoothScrollSpeed - block: - const command = @[ru"highlightcurrentword", ru"on"] + const command = @[ru"scrollspeed", ru"a"] status.exModeCommand(command) - check(status.settings.highlightOtherUsesCurrentWord == true) -test "Clipboard setting command": - var status = initEditorStatus() - status.addNewBuffer("") + check(status.settings.smoothScrollSpeed == defaultSpeed) - block: - const command = @[ru"clipboard", ru"off"] - status.exModeCommand(command) - check(status.settings.systemClipboard == false) +suite "Ex mode: Delete buffer status command": + test "Delete buffer status command": + var status = initEditorStatus() + for i in 0 ..< 2: status.addNewBuffer("") - block: - const command = @[ru"clipboard", ru"on"] + const command = @[ru"bd", ru"0"] status.exModeCommand(command) - check(status.settings.systemClipboard == true) -test "Highlight full width space command": - var status = initEditorStatus() - status.addNewBuffer("") + check(status.bufStatus.len == 1) - block: - const command = @[ru"highlightfullspace", ru"off"] - status.exModeCommand(command) - check(status.settings.highlightFullWidthSpace == false) + test "Delete buffer status command 2": + var status = initEditorStatus() + for i in 0 ..< 2: status.addNewBuffer("") - block: - const command = @[ru"highlightfullspace", ru"on"] + const command = @[ru"bd", ru"a"] status.exModeCommand(command) - check(status.settings.highlightFullWidthSpace == true) - -test "Create work space command": - var status = initEditorStatus() - status.addNewBuffer("") - - const command = @[ru"cws"] - status.exModeCommand(command) - - check(status.workspace.len == 2) -test "Change work space command": - var status = initEditorStatus() - status.addNewBuffer("") + check(status.bufStatus.len == 2) - status.createWrokSpace +suite "Ex mode: Open buffer by number command": + test "Open buffer by number command": + var status = initEditorStatus() + for i in 0 ..< 2: status.addNewBuffer("") - const command = @[ru"ws", ru"1"] - status.exModeCommand(command) - - check(status.currentWorkSpaceIndex == 0) - -test "Delete work space command": - var status = initEditorStatus() - status.addNewBuffer("") - - status.createWrokSpace - - const command = @[ru"dws"] - status.exModeCommand(command) - - check(status.workspace.len == 1) - -test "Tab stop setting command": - var status = initEditorStatus() - status.addNewBuffer("") - - const command = @[ru"tabstop", ru"4"] - status.exModeCommand(command) - - check(status.settings.tabStop == 4) - -test "Tab stop setting command 2": - var status = initEditorStatus() - status.addNewBuffer("") - - let defaultTabStop = status.settings.tabStop - - const command = @[ru"tabstop", ru"a"] - status.exModeCommand(command) - - check(status.settings.tabStop == defaultTabStop) - -test "Smooth scroll speed setting command": - var status = initEditorStatus() - status.addNewBuffer("") - - const command = @[ru"scrollspeed", ru"1"] - status.exModeCommand(command) - - check(status.settings.smoothScrollSpeed == 1) - -test "Smooth scroll speed setting command 2": - var status = initEditorStatus() - status.addNewBuffer("") - - let defaultSpeed = status.settings.smoothScrollSpeed - - const command = @[ru"scrollspeed", ru"a"] - status.exModeCommand(command) - - check(status.settings.smoothScrollSpeed == defaultSpeed) - -test "Delete buffer status command": - var status = initEditorStatus() - for i in 0 ..< 2: status.addNewBuffer("") - - const command = @[ru"bd", ru"0"] - status.exModeCommand(command) - - check(status.bufStatus.len == 1) - -test "Delete buffer status command 2": - var status = initEditorStatus() - for i in 0 ..< 2: status.addNewBuffer("") - - const command = @[ru"bd", ru"a"] - status.exModeCommand(command) - - check(status.bufStatus.len == 2) - -test "Open buffer by number command": - var status = initEditorStatus() - for i in 0 ..< 2: status.addNewBuffer("") - - const command = @[ru"b", ru"0"] - status.exModeCommand(command) - - check(status.bufferIndexInCurrentWindow == 0) - -test "Open buffer by number command 2": - var status = initEditorStatus() - for i in 0 ..< 2: status.addNewBuffer("") - - const command = @[ru"b", ru"a"] - status.exModeCommand(command) - - check(status.bufferIndexInCurrentWindow == 1) - -test "Open help command": - var status = initEditorStatus() - status.addNewBuffer("") - - status.resize(100, 100) - status.update + const command = @[ru"b", ru"0"] + status.exModeCommand(command) - const command = @[ru"help"] - status.exModeCommand(command) + check(status.bufferIndexInCurrentWindow == 0) - status.resize(100, 100) - status.update + test "Open buffer by number command 2": + var status = initEditorStatus() + for i in 0 ..< 2: status.addNewBuffer("") - check(status.workSpace[0].numOfMainWindow == 2) - check(status.bufferIndexInCurrentWindow == 1) + const command = @[ru"b", ru"a"] + status.exModeCommand(command) - check(status.bufStatus[1].mode == Mode.help) + check(status.bufferIndexInCurrentWindow == 1) -test "Open in horizontal split window": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Open help command": + test "Open help command": + var status = initEditorStatus() + status.addNewBuffer("") - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - const command = @[ru"sp", ru"newfile"] - status.exModeCommand(command) + const command = @[ru"help"] + status.exModeCommand(command) - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - check(status.workSpace[0].numOfMainWindow == 2) - check(status.bufStatus.len == 2) + check(status.workSpace[0].numOfMainWindow == 2) + check(status.bufferIndexInCurrentWindow == 1) -test "Open in vertical split window": - var status = initEditorStatus() - status.addNewBuffer("") + check(status.bufStatus[1].mode == Mode.help) - status.resize(100, 100) - status.update +suite "Ex mode: Open in horizontal split window": + test "Open in horizontal split window": + var status = initEditorStatus() + status.addNewBuffer("") - const command = @[ru"vs", ru"newfile"] - status.exModeCommand(command) + status.resize(100, 100) + status.update - status.resize(100, 100) - status.update + const command = @[ru"sp", ru"newfile"] + status.exModeCommand(command) - check(status.workSpace[0].numOfMainWindow == 2) - check(status.bufStatus.len == 2) + status.resize(100, 100) + status.update -test "Create new empty buffer": - var status = initEditorStatus() - status.addNewBuffer("a") + check(status.workSpace[0].numOfMainWindow == 2) + check(status.bufStatus.len == 2) - status.resize(100, 100) - status.update +suite "Ex mode: Open in vertical split window": + test "Open in vertical split window": + var status = initEditorStatus() + status.addNewBuffer("") - const command = @[ru"ene"] - status.exModeCommand(command) + status.resize(100, 100) + status.update - check status.bufStatus.len == 2 + const command = @[ru"vs", ru"newfile"] + status.exModeCommand(command) - check status.bufStatus[0].filename == ru"a" - check status.bufStatus[1].filename == ru"" + status.resize(100, 100) + status.update -test "Create new empty buffer": - var status = initEditorStatus() - status.addNewBuffer("a") + check(status.workSpace[0].numOfMainWindow == 2) + check(status.bufStatus.len == 2) - status.resize(100, 100) - status.update +suite "Ex mode: Create new empty buffer": + test "Create new empty buffer": + var status = initEditorStatus() + status.addNewBuffer("a") - const command = @[ru"ene"] - status.exModeCommand(command) + status.resize(100, 100) + status.update - check status.bufStatus.len == 2 + const command = @[ru"ene"] + status.exModeCommand(command) - check status.bufferIndexInCurrentWindow == 1 + check status.bufStatus.len == 2 - check status.bufStatus[0].filename == ru"a" - check status.bufStatus[1].filename == ru"" + check status.bufStatus[0].filename == ru"a" + check status.bufStatus[1].filename == ru"" -test "Create new empty buffer 2": - var status = initEditorStatus() - status.addNewBuffer("") + test "Create new empty buffer 2": + var status = initEditorStatus() + status.addNewBuffer("") - status.bufStatus[0].countChange = 1 + status.bufStatus[0].countChange = 1 - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - const command = @[ru"ene"] - status.exModeCommand(command) + const command = @[ru"ene"] + status.exModeCommand(command) - check status.bufStatus.len == 1 + check status.bufStatus.len == 1 - check status.bufferIndexInCurrentWindow == 0 + check status.bufferIndexInCurrentWindow == 0 -test "New empty buffer in split window horizontally": - var status = initEditorStatus() - status.addNewBuffer("a") +suite "Ex mode: New empty buffer in split window horizontally": + test "New empty buffer in split window horizontally": + var status = initEditorStatus() + status.addNewBuffer("a") - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - const command = @[ru"new"] - status.exModeCommand(command) + const command = @[ru"new"] + status.exModeCommand(command) - check status.bufStatus.len == 2 + check status.bufStatus.len == 2 - check status.bufferIndexInCurrentWindow == 1 + check status.bufferIndexInCurrentWindow == 1 - check status.bufStatus[0].filename == ru"a" - check status.bufStatus[1].filename == ru"" + check status.bufStatus[0].filename == ru"a" + check status.bufStatus[1].filename == ru"" - check status.workspace[0].numOfMainWindow == 2 + check status.workspace[0].numOfMainWindow == 2 -test "New empty buffer in split window vertically": - var status = initEditorStatus() - status.addNewBuffer("a") +suite "Ex mode: New empty buffer in split window vertically": + test "New empty buffer in split window vertically": + var status = initEditorStatus() + status.addNewBuffer("a") - status.resize(100, 100) - status.update + status.resize(100, 100) + status.update - const command = @[ru"vnew"] - status.exModeCommand(command) + const command = @[ru"vnew"] + status.exModeCommand(command) - check status.bufStatus.len == 2 + check status.bufStatus.len == 2 - check status.bufferIndexInCurrentWindow == 1 + check status.bufferIndexInCurrentWindow == 1 - check status.bufStatus[0].filename == ru"a" - check status.bufStatus[1].filename == ru"" + check status.bufStatus[0].filename == ru"a" + check status.bufStatus[1].filename == ru"" - check status.workspace[0].numOfMainWindow == 2 + check status.workspace[0].numOfMainWindow == 2 -test "Filer icon setting command": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Filer icon setting command": + test "Filer icon setting command": + var status = initEditorStatus() + status.addNewBuffer("") - const command = @[ru"icon", ru"on"] - status.exModeCommand(command) + const command = @[ru"icon", ru"on"] + status.exModeCommand(command) - check status.settings.filerSettings.showIcons + check status.settings.filerSettings.showIcons -test "Filer icon setting command 2": - var status = initEditorStatus() - status.addNewBuffer("") + test "Filer icon setting command 2": + var status = initEditorStatus() + status.addNewBuffer("") - const command = @[ru"icon", ru"off"] - status.exModeCommand(command) + const command = @[ru"icon", ru"off"] + status.exModeCommand(command) - check status.settings.filerSettings.showIcons == false + check status.settings.filerSettings.showIcons == false -test "Put config file command": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Put config file command": + test "Put config file command": + var status = initEditorStatus() + status.addNewBuffer("") - const command = @[ru"putConfigFile"] - status.exModeCommand(command) + const command = @[ru"putConfigFile"] + status.exModeCommand(command) - check existsFile(getHomeDir() / ".config" / "moe" / "moerc.toml") + check existsFile(getHomeDir() / ".config" / "moe" / "moerc.toml") -test "Ex mode: Show/Hide git branch name in status bar when inactive window": - var status = initEditorStatus() - status.addNewBuffer("") +suite "Ex mode: Show/Hide git branch name in status bar when inactive window": + test "Show/Hide git branch name in status bar when inactive window": + var status = initEditorStatus() + status.addNewBuffer("") - block: - const command = @[ru"showGitInactive", ru"off"] - status.exModeCommand(command) - check not status.settings.statusBar.showGitInactive + block: + const command = @[ru"showGitInactive", ru"off"] + status.exModeCommand(command) + check not status.settings.statusBar.showGitInactive - block: - const command = @[ru"showGitInactive", ru"on"] - status.exModeCommand(command) - check status.settings.statusBar.showGitInactive + block: + const command = @[ru"showGitInactive", ru"on"] + status.exModeCommand(command) + check status.settings.statusBar.showGitInactive