1
0

test_codemirror.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from typing import Dict, List
  2. from nicegui import ui
  3. from nicegui.elements.codemirror import _apply_change_set
  4. from nicegui.testing import Screen
  5. def test_codemirror(screen: Screen):
  6. ui.codemirror('Line 1\nLine 2\nLine 3')
  7. screen.open('/')
  8. screen.should_contain('Line 2')
  9. def test_supported_values(screen: Screen):
  10. values: Dict[str, List[str]] = {}
  11. @ui.page('/')
  12. def page():
  13. editor = ui.codemirror()
  14. async def fetch():
  15. values['languages'] = await editor.run_method('getLanguages')
  16. values['themes'] = await editor.run_method('getThemes')
  17. values['supported_themes'] = editor.supported_themes
  18. values['supported_languages'] = editor.supported_languages
  19. ui.label('Done')
  20. ui.button('Fetch', on_click=fetch)
  21. screen.open('/')
  22. screen.click('Fetch')
  23. screen.wait_for('Done')
  24. assert values['languages'] == values['supported_languages']
  25. assert values['themes'] == values['supported_themes']
  26. def test_change_set():
  27. assert _apply_change_set('', [0, 1], [['A']]) == 'A'
  28. assert _apply_change_set('', [0, 2], [['AB']]) == 'AB'
  29. assert _apply_change_set('X', [1, 2], [['AB']]) == 'AB'
  30. assert _apply_change_set('X', [1, -1], []) == 'X'
  31. assert _apply_change_set('X', [1, -1, 0, 1], [[], ['Y']]) == 'XY'
  32. assert _apply_change_set('Hello', [5, -1, 0, 8], [[], [', world!']]) == 'Hello, world!'
  33. assert _apply_change_set('Hello, world!', [5, -1, 7, 0, 1, -1], []) == 'Hello!'
  34. assert _apply_change_set('Hello, hello!', [2, -1, 3, 1, 4, -1, 3, 1, 1, -1], [[], ['y'], [], ['y']]) == 'Hey, hey!'