diff --git a/tests/css/test_grid_rows_columns_relative_units.py b/tests/css/test_grid_rows_columns_relative_units.py new file mode 100644 index 000000000..e56bec65c --- /dev/null +++ b/tests/css/test_grid_rows_columns_relative_units.py @@ -0,0 +1,42 @@ +""" +Regression tests for #1406 https://github.com/Textualize/textual/issues/1406 + +The scalars in grid-rows and grid-columns were not aware of the dimension +they should be relative to. +""" + +from textual.css.parse import parse_declarations +from textual.css.scalar import Unit +from textual.css.styles import Styles + + +def test_grid_rows_columns_relative_units_are_correct(): + """Ensure correct relative dimensions for programmatic assignments.""" + + styles = Styles() + + styles.grid_columns = "1fr 5%" + fr, percent = styles.grid_columns + assert fr.percent_unit == Unit.WIDTH + assert percent.percent_unit == Unit.WIDTH + + styles.grid_rows = "1fr 5%" + fr, percent = styles.grid_rows + assert fr.percent_unit == Unit.HEIGHT + assert percent.percent_unit == Unit.HEIGHT + + +def test_styles_builder_uses_correct_relative_units_grid_rows_columns(): + """Ensure correct relative dimensions for CSS parsed from files.""" + + CSS = "grid-rows: 1fr 5%; grid-columns: 1fr 5%;" + + styles = parse_declarations(CSS, "test") + + fr, percent = styles.grid_columns + assert fr.percent_unit == Unit.WIDTH + assert percent.percent_unit == Unit.WIDTH + + fr, percent = styles.grid_rows + assert fr.percent_unit == Unit.HEIGHT + assert percent.percent_unit == Unit.HEIGHT