test_document.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import pytest
  2. from prompt_toolkit.document import Document
  3. @pytest.fixture
  4. def document():
  5. return Document(
  6. "line 1\n" + "line 2\n" + "line 3\n" + "line 4\n", len("line 1\n" + "lin")
  7. )
  8. def test_current_char(document):
  9. assert document.current_char == "e"
  10. assert document.char_before_cursor == "n"
  11. def test_text_before_cursor(document):
  12. assert document.text_before_cursor == "line 1\nlin"
  13. def test_text_after_cursor(document):
  14. assert document.text_after_cursor == "e 2\n" + "line 3\n" + "line 4\n"
  15. def test_lines(document):
  16. assert document.lines == ["line 1", "line 2", "line 3", "line 4", ""]
  17. def test_line_count(document):
  18. assert document.line_count == 5
  19. def test_current_line_before_cursor(document):
  20. assert document.current_line_before_cursor == "lin"
  21. def test_current_line_after_cursor(document):
  22. assert document.current_line_after_cursor == "e 2"
  23. def test_current_line(document):
  24. assert document.current_line == "line 2"
  25. def test_cursor_position(document):
  26. assert document.cursor_position_row == 1
  27. assert document.cursor_position_col == 3
  28. d = Document("", 0)
  29. assert d.cursor_position_row == 0
  30. assert d.cursor_position_col == 0
  31. def test_translate_index_to_position(document):
  32. pos = document.translate_index_to_position(len("line 1\nline 2\nlin"))
  33. assert pos[0] == 2
  34. assert pos[1] == 3
  35. pos = document.translate_index_to_position(0)
  36. assert pos == (0, 0)
  37. def test_is_cursor_at_the_end(document):
  38. assert Document("hello", 5).is_cursor_at_the_end
  39. assert not Document("hello", 4).is_cursor_at_the_end