diff --git a/src/textual/_resolve.py b/src/textual/_resolve.py index 7193931b5..cf10dfcb5 100644 --- a/src/textual/_resolve.py +++ b/src/textual/_resolve.py @@ -71,32 +71,3 @@ def resolve( ] return results - - -if __name__ == "__main__": - - dimensions = [Scalar.parse("3"), Scalar.parse("1fr"), Scalar.parse("1")] - - print(resolve(dimensions, 20, 1, Size(40, 20), Size(40, 20))) - - print( - resolve( - [Scalar.parse("1fr"), Scalar.parse("1fr")], - 20, - 1, - Size(40, 20), - Size(40, 20), - ) - ) - - print( - resolve( - [ - Scalar.parse("1fr"), - ], - 20, - 1, - Size(40, 20), - Size(40, 20), - ) - ) diff --git a/tests/test_resolve.py b/tests/test_resolve.py new file mode 100644 index 000000000..4fac5ded2 --- /dev/null +++ b/tests/test_resolve.py @@ -0,0 +1,58 @@ +import pytest + +from textual.geometry import Size +from textual.css.scalar import Scalar +from textual._resolve import resolve + + +def test_resolve_empty(): + assert resolve([], 10, 1, Size(20, 10), Size(80, 24)) == [] + + +@pytest.mark.parametrize( + "scalars,total,gutter,result", + [ + (["10"], 100, 0, [(0, 10)]), + ( + ["10", "20"], + 100, + 0, + [(0, 10), (10, 20)], + ), + ( + ["10", "20"], + 100, + 1, + [(0, 10), (11, 20)], + ), + ( + ["10", "1fr"], + 100, + 1, + [(0, 10), (11, 89)], + ), + ( + ["1fr", "1fr"], + 100, + 0, + [(0, 50), (50, 50)], + ), + ( + ["3", "1fr", "1fr", "1"], + 100, + 1, + [(0, 3), (4, 46), (51, 47), (99, 1)], + ), + ], +) +def test_resolve(scalars, total, gutter, result): + assert ( + resolve( + [Scalar.parse(scalar) for scalar in scalars], + total, + gutter, + Size(40, 20), + Size(80, 24), + ) + == result + )