79 lines
2.7 KiB
Python
79 lines
2.7 KiB
Python
# python -m unittest test.py
|
|
|
|
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() |