mirror of
				https://github.com/python-escpos/python-escpos
				synced 2025-10-23 09:30:00 +00:00 
			
		
		
		
	Merge branch 'master' into aerialist-patch-1
This commit is contained in:
		
							
								
								
									
										2
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							@@ -12,7 +12,7 @@
 | 
				
			|||||||
  "editor.formatOnPaste": true,
 | 
					  "editor.formatOnPaste": true,
 | 
				
			||||||
  "python.formatting.provider": "black",
 | 
					  "python.formatting.provider": "black",
 | 
				
			||||||
  "editor.codeActionsOnSave": {
 | 
					  "editor.codeActionsOnSave": {
 | 
				
			||||||
    "source.organizeImports": true
 | 
					    "source.organizeImports": "explicit"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "python.testing.unittestEnabled": false,
 | 
					  "python.testing.unittestEnabled": false,
 | 
				
			||||||
  "python.testing.pytestEnabled": true,
 | 
					  "python.testing.pytestEnabled": true,
 | 
				
			||||||
 
 | 
				
			|||||||
 Submodule capabilities-data updated: 375135d552...e3bf6056ee
									
								
							@@ -4,7 +4,10 @@
 | 
				
			|||||||
I doubt that this currently works correctly.
 | 
					I doubt that this currently works correctly.
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import types
 | 
				
			||||||
 | 
					import typing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jaconv: typing.Optional[types.ModuleType]
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
    import jaconv
 | 
					    import jaconv
 | 
				
			||||||
except ImportError:
 | 
					except ImportError:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										80
									
								
								test/test_functions/test_function_software_columns.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								test/test_functions/test_function_software_columns.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/python
 | 
				
			||||||
 | 
					#  -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					"""tests for software_columns
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:author: Benito López and the python-escpos developers
 | 
				
			||||||
 | 
					:organization: `python-escpos <https://github.com/python-escpos>`_
 | 
				
			||||||
 | 
					:copyright: Copyright (c) 2024 `python-escpos <https://github.com/python-escpos>`_
 | 
				
			||||||
 | 
					:license: MIT
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import pytest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_rearrange_into_cols(driver) -> None:
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    GIVEN a list of columnable text
 | 
				
			||||||
 | 
					    WHEN the column width is different for each column and some strings exceed the max width
 | 
				
			||||||
 | 
					    THEN check the strings are properly wrapped, truncated and rearranged into some columns
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    output = driver._rearrange_into_cols(
 | 
				
			||||||
 | 
					        text_list=["fits", "row1 row2", "truncate and wrap"], widths=[4, 5, 6]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    assert output == [["fits", "row1", "trunc."], ["", "row2", "and"], ["", "", "wrap"]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_add_padding_into_cols(driver) -> None:
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    GIVEN a list of strings
 | 
				
			||||||
 | 
					    WHEN adding padding and different alignments to each string
 | 
				
			||||||
 | 
					    THEN check the strings are correctly padded and aligned
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    output = driver._add_padding_into_cols(
 | 
				
			||||||
 | 
					        text_list=["col1", "col2", "col3"],
 | 
				
			||||||
 | 
					        widths=[6, 6, 6],
 | 
				
			||||||
 | 
					        align=["center", "left", "right"],
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    assert output == [" col1 ", "col2  ", "  col3"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@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", "left", "right"], ["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()
 | 
				
			||||||
@@ -7,7 +7,8 @@
 | 
				
			|||||||
:copyright: Copyright (c) 2016 `python-escpos <https://github.com/python-escpos>`_
 | 
					:copyright: Copyright (c) 2016 `python-escpos <https://github.com/python-escpos>`_
 | 
				
			||||||
:license: MIT
 | 
					:license: MIT
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
 | 
					import types
 | 
				
			||||||
 | 
					import typing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import hypothesis.strategies as st
 | 
					import hypothesis.strategies as st
 | 
				
			||||||
import pytest
 | 
					import pytest
 | 
				
			||||||
@@ -111,6 +112,7 @@ class TestMagicEncode:
 | 
				
			|||||||
            assert driver.output == b"\x1bt\x00? ist teuro."
 | 
					            assert driver.output == b"\x1bt\x00? ist teuro."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jaconv: typing.Optional[types.ModuleType]
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
    import jaconv
 | 
					    import jaconv
 | 
				
			||||||
except ImportError:
 | 
					except ImportError:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user