blob: cbbbcd0bdd35478ae1941afb939075f30b0e6280 (
plain) (
tree)
|
|
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([]))
|