VIM-like-text-editor/test.py

79 lines
2.7 KiB
Python
Raw Permalink Normal View History

2025-02-11 15:24:58 +03:00
# python -m unittest test.py
2025-02-11 15:24:12 +03:00
import unittest
from mvc.models import VimModel
from mystring import MyString as MyString
class TestVimModel(unittest.TestCase):
def setUp(self):
self.model = VimModel(displayLinesCount=10, displayColsCount=80)
self.model.displayBuffer = [MyString("line 1"), MyString("line 2")]
def test_initial_state(self):
self.assertEqual(self.model.currentLine, 0)
self.assertEqual(self.model.currentCol, 0)
self.assertEqual(len(self.model.displayBuffer), 2)
def test_insert_symbol(self):
self.model.InsertSymbol(ord('a'))
self.assertEqual(self.model.displayBuffer[0].data(), "aline 1")
self.assertEqual(self.model.currentCol, 1)
def test_move_right(self):
self.model.currentCol = 5
self.model.MoveRight()
self.assertEqual(self.model.currentCol, 6)
def test_move_left(self):
self.model.currentCol = 5
self.model.MoveLeft()
self.assertEqual(self.model.currentCol, 4)
def test_move_up(self):
self.model.currentLine = 1
self.model.MoveUp()
self.assertEqual(self.model.currentLine, 0)
def test_move_down(self):
self.model.MoveDown()
self.assertEqual(self.model.currentLine, 1)
def test_backspace(self):
self.model.currentCol = 5
self.model.Backspace()
self.assertEqual(self.model.displayBuffer[0].data(), "line1")
self.assertEqual(self.model.currentCol, 4)
def test_enter(self):
self.model.currentCol = 5
self.model.Enter()
self.assertEqual(len(self.model.displayBuffer), 3)
self.assertEqual(self.model.displayBuffer[0].data(), "line ")
self.assertEqual(self.model.displayBuffer[1].data(), "1")
self.assertEqual(self.model.currentLine, 1)
self.assertEqual(self.model.currentCol, 0)
def test_to_line_start(self):
self.model.currentCol = 5
self.model.ToLineStart()
self.assertEqual(self.model.currentCol, 0)
def test_to_line_end(self):
self.model.ToLineEnd()
self.assertEqual(self.model.currentCol, len(self.model.displayBuffer[0]))
def test_save_file(self):
self.model.SaveFile()
with open("testfile.txt", "r") as file:
lines = file.readlines()
self.assertEqual(lines[0].strip(), "line 1")
self.assertEqual(lines[1].strip(), "line 2")
def test_load_file(self):
self.model.LoadFile("testfile.txt")
self.assertEqual(len(self.model.displayBuffer), 2)
self.assertEqual(self.model.displayBuffer[0].data(), "line 1")
self.assertEqual(self.model.displayBuffer[1].data(), "line 2")
if __name__ == '__main__':
unittest.main()