1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- from __future__ import annotations
- import pytest
- from prompt_toolkit.layout import InvalidLayoutError, Layout
- from prompt_toolkit.layout.containers import HSplit, VSplit, Window
- from prompt_toolkit.layout.controls import BufferControl
- def test_layout_class():
- c1 = BufferControl()
- c2 = BufferControl()
- c3 = BufferControl()
- win1 = Window(content=c1)
- win2 = Window(content=c2)
- win3 = Window(content=c3)
- layout = Layout(container=VSplit([HSplit([win1, win2]), win3]))
- # Listing of windows/controls.
- assert list(layout.find_all_windows()) == [win1, win2, win3]
- assert list(layout.find_all_controls()) == [c1, c2, c3]
- # Focusing something.
- layout.focus(c1)
- assert layout.has_focus(c1)
- assert layout.has_focus(win1)
- assert layout.current_control == c1
- assert layout.previous_control == c1
- layout.focus(c2)
- assert layout.has_focus(c2)
- assert layout.has_focus(win2)
- assert layout.current_control == c2
- assert layout.previous_control == c1
- layout.focus(win3)
- assert layout.has_focus(c3)
- assert layout.has_focus(win3)
- assert layout.current_control == c3
- assert layout.previous_control == c2
- # Pop focus. This should focus the previous control again.
- layout.focus_last()
- assert layout.has_focus(c2)
- assert layout.has_focus(win2)
- assert layout.current_control == c2
- assert layout.previous_control == c1
- def test_create_invalid_layout():
- with pytest.raises(InvalidLayoutError):
- Layout(HSplit([]))
|