Files
textual/tests/test_animation.py
Will McGugan 46d12fcfe0 win fix
2022-11-12 12:17:01 +00:00

46 lines
1.3 KiB
Python

from time import perf_counter
from textual.app import App, ComposeResult
from textual.widgets import Static
class AnimApp(App):
CSS = """
#foo {
height: 1;
}
"""
def compose(self) -> ComposeResult:
yield Static("foo", id="foo")
async def test_animate_height() -> None:
"""Test animating styles.height works."""
# Styles.height is a scalar, which makes it more complicated to animate
app = AnimApp()
async with app.run_test() as pilot:
static = app.query_one(Static)
assert static.size.height == 1
static.styles.animate("height", 100, duration=0.5, easing="linear")
start = perf_counter()
# Wait for half the animation
await pilot.pause(0.25)
# Check we reached the half way point
assert abs(static.styles.height.value - 50) < 5
elapsed = perf_counter() - start
# Check at least that much time has elapsed
assert 0.5 > elapsed > 0.25
# Wait for the animation to finished
await pilot.wait_for_animation()
elapsed = perf_counter() - start
# Check that the full time has elapsed
assert elapsed > 0.5
# Check the height reached the maximum
assert static.styles.height.value == 100