diff --git a/test/test_functions/test_function_software_columns.py b/test/test_functions/test_function_software_columns.py new file mode 100644 index 0000000..a273380 --- /dev/null +++ b/test/test_functions/test_function_software_columns.py @@ -0,0 +1,54 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +"""tests for software_columns + +:author: Benito López and the python-escpos developers +:organization: `python-escpos `_ +:copyright: Copyright (c) 2024 `python-escpos `_ +:license: MIT +""" + + +import pytest + + +@pytest.mark.parametrize("text_list", ["", [], None]) +@pytest.mark.parametrize("widths", [30.5, "30", None]) +@pytest.mark.parametrize("align", ["invalid_align_name", "", None]) +def test_software_columns_invalid_args(driver, text_list, widths, align) -> None: + """ + GIVEN a dummy printer object + WHEN non valid params are passed + THEN check raise exception + """ + bad_text_list = {"text_list": text_list, "widths": 5, "align": "left"} + bad_widths = {"text_list": ["valid"], "widths": widths, "align": "left"} + bad_align = {"text_list": ["valid"], "widths": 5, "align": align} + + bad_args = [bad_text_list, bad_widths, bad_align] + for kwargs in bad_args: + with pytest.raises(Exception): + driver.software_columns(**kwargs) + driver.close() + + +@pytest.mark.parametrize( + "text_list", + [ + ["col1", "col2", "col3"], + ["wrap this string", "wrap this string", "wrap this string"], + ["truncate_this_string", "truncate_this_string", "truncate_this_string"], + ], +) +@pytest.mark.parametrize("widths", [[10, 10, 10], [10], 30]) +@pytest.mark.parametrize( + "align", [["center", "center", "center"], ["center"], "center"] +) +def test_software_columns_valid_args(driver, text_list, widths, align) -> None: + """ + GIVEN a dummy printer object + WHEN valid params are passed + THEN check no errors + """ + driver.software_columns(text_list=text_list, widths=widths, align=align) + driver.close()