# 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()