diff --git a/test.py b/test.py new file mode 100644 index 0000000..1a6ce63 --- /dev/null +++ b/test.py @@ -0,0 +1,77 @@ +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() \ No newline at end of file diff --git a/testfile.txt b/testfile.txt new file mode 100644 index 0000000..0839846 --- /dev/null +++ b/testfile.txt @@ -0,0 +1,2 @@ +line 1 +line 2 \ No newline at end of file