From 9d1f9da641267f2c46dd56e059da39d7e5e5affe Mon Sep 17 00:00:00 2001 From: Olivier Philippon Date: Wed, 27 Apr 2022 10:18:46 +0100 Subject: [PATCH] [widget] Add a test for types of values we handle in style's size --- tests/test_widget.py | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/tests/test_widget.py b/tests/test_widget.py index 7eee43a54..1fdcf738f 100644 --- a/tests/test_widget.py +++ b/tests/test_widget.py @@ -1,16 +1,22 @@ +from contextlib import nullcontext as does_not_raise +from decimal import Decimal + import pytest from textual.css.errors import StyleValueError +from textual.css.scalar import Scalar, Unit from textual.widget import Widget @pytest.mark.parametrize( - "set_val, get_val, style_str", [ + "set_val, get_val, style_str", + [ [True, True, "visible"], [False, False, "hidden"], ["hidden", False, "hidden"], ["visible", True, "visible"], - ]) + ], +) def test_widget_set_visible_true(set_val, get_val, style_str): widget = Widget() widget.visible = set_val @@ -26,3 +32,29 @@ def test_widget_set_visible_invalid_string(): widget.visible = "nope! no widget for me!" assert widget.visible + + +@pytest.mark.parametrize( + "size_input, expectation", + [ + (None, does_not_raise()), + (10, does_not_raise()), + (10.0, does_not_raise()), + (10.2, does_not_raise()), + (Scalar(100, Unit.CELLS, Unit.WIDTH), does_not_raise()), + (Scalar(10.2, Unit.CELLS, Unit.WIDTH), does_not_raise()), + ("10", does_not_raise()), + # And now for some common types we don't handle... + ("a", pytest.raises(StyleValueError)), + (list(), pytest.raises(StyleValueError)), + (tuple(), pytest.raises(StyleValueError)), + (dict(), pytest.raises(StyleValueError)), + (3.14j, pytest.raises(StyleValueError)), + (Decimal("3.14"), pytest.raises(StyleValueError)), + ], +) +def test_widget_style_size_can_accept_various_data_types(size_input, expectation): + widget = Widget() + + with expectation: + widget.styles.width = size_input