1
0
mirror of https://github.com/python-escpos/python-escpos synced 2025-06-25 08:38:43 +00:00
python-escpos/test/test_functions/test_function_kanji.py

191 lines
5.4 KiB
Python

import pytest
import escpos.printer as printer
from escpos.constants import (
KANJI_DEFINE_USER_DEFINED,
KANJI_DELETE_USER_DEFINED,
KANJI_ENTER_KANJI_MODE,
KANJI_EXIT_KANJI_MODE,
KANJI_PRINT_MODE,
KANJI_SET_CHAR_STYLE,
KANJI_SET_ENCODING,
KANJI_SET_QUADRUPLE_SIZE,
KANJI_SET_SPACING,
KANJI_UNDERLINE,
)
checkerboard_kanji = (
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\xf0\xf0\xf0"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
b"\x0f\x0f\x0f"
)
def test_enter_kanji_mode() -> None:
"""should enter kanji mode."""
instance = printer.Dummy()
instance._enter_kanji_mode()
assert instance.output == KANJI_ENTER_KANJI_MODE
def test_exit_kanji_mode() -> None:
"""should exit kanji mode."""
instance = printer.Dummy()
instance._exit_kanji_mode()
assert instance.output == KANJI_EXIT_KANJI_MODE
def test_kanji_text_ISO_2022_JP() -> None:
"""should print kanji text."""
instance = printer.Dummy()
instance.set_kanji_encoding("iso2022_jp")
instance.kanji_text("Hello世界Hello")
assert instance.output == (
KANJI_SET_ENCODING
+ b"\x00"
+ b"\x48\x65\x6c\x6c\x6f"
+ KANJI_ENTER_KANJI_MODE
+ b"\x40\x24\x33\x26"
+ KANJI_EXIT_KANJI_MODE
+ b"\x48\x65\x6c\x6c\x6f"
)
def test_kanji_text_shift_jis() -> None:
"""should print kanji text."""
instance = printer.Dummy()
instance.set_kanji_encoding("shift_jis")
instance.kanji_text("Hello世界Hello")
assert instance.output == (
KANJI_SET_ENCODING
+ b"\x01"
+ KANJI_ENTER_KANJI_MODE
+ b"\x48\x65\x6c\x6c\x6f"
+ b"\x90\xa2\x8a\x45"
+ b"\x48\x65\x6c\x6c\x6f"
+ KANJI_EXIT_KANJI_MODE
)
def test_kanji_text_without_encoding() -> None:
"""Test behavior when no encoding is set."""
instance = printer.Dummy()
with pytest.raises(ValueError):
instance.kanji_text("Hello世界Hello")
def test_set_kanji_decoration() -> None:
"""should set kanji decoration."""
instance = printer.Dummy()
instance.set_kanji_decoration()
assert instance.output == KANJI_PRINT_MODE + b"\x00" + KANJI_UNDERLINE + b"\x00"
instance = printer.Dummy()
instance.set_kanji_decoration(double_width=True, double_height=True, underline=1)
assert instance.output == KANJI_PRINT_MODE + b"\x0c" + KANJI_UNDERLINE + b"\x01"
def test_define_user_defined_kanji() -> None:
"""should define user defined kanji."""
instance = printer.Dummy()
instance.define_user_defined_kanji(b"\x77\x7e", checkerboard_kanji)
assert (
instance.output == KANJI_DEFINE_USER_DEFINED + b"\x77\x7e" + checkerboard_kanji
)
def test_delete_user_defined_kanji() -> None:
"""should delete user defined kanji."""
instance = printer.Dummy()
instance.delete_user_defined_kanji(b"\x77\x7e")
assert instance.output == KANJI_DELETE_USER_DEFINED + b"\x77\x7e"
def test_kanji_set_encoding() -> None:
"""should set kanji encoding."""
instance = printer.Dummy()
instance.set_kanji_encoding("iso2022_jp")
assert instance.output == KANJI_SET_ENCODING + b"\x00"
instance = printer.Dummy()
instance.set_kanji_encoding("shift_jis")
assert instance.output == KANJI_SET_ENCODING + b"\x01"
instance = printer.Dummy()
instance.set_kanji_encoding("shift_jis_2004")
assert instance.output == KANJI_SET_ENCODING + b"\x02"
instance = printer.Dummy()
instance.set_kanji_encoding("big5")
assert instance.output == KANJI_SET_ENCODING + b"\x00"
instance = printer.Dummy()
instance.set_kanji_encoding("euc_kr")
assert instance.output == KANJI_SET_ENCODING + b"\x00"
instance = printer.Dummy()
instance.set_kanji_encoding("gb2312")
assert instance.output == KANJI_SET_ENCODING + b"\x00"
instance = printer.Dummy()
instance.set_kanji_encoding("gb18030")
assert instance.output == KANJI_SET_ENCODING + b"\x00"
def test_kanji_spacing() -> None:
"""should set kanji spacing."""
instance = printer.Dummy()
instance.set_kanji_spacing(16, 0)
assert instance.output == KANJI_SET_SPACING + b"\x10\x00"
instance = printer.Dummy()
instance.set_kanji_spacing(0, 16)
assert instance.output == KANJI_SET_SPACING + b"\x00\x10"
def test_kanji_quadruple_size() -> None:
"""should set kanji quadruple size."""
instance = printer.Dummy()
instance.set_kanji_quadruple_size(True)
assert instance.output == KANJI_SET_QUADRUPLE_SIZE + b"\x01"
instance = printer.Dummy()
instance.set_kanji_quadruple_size(False)
assert instance.output == KANJI_SET_QUADRUPLE_SIZE + b"\x00"
def test_kanji_set_font() -> None:
"""should set kanji font."""
instance = printer.Dummy()
instance.set_kanji_font(0)
assert instance.output == KANJI_SET_CHAR_STYLE + b"\x02\x00\x30\x00"
instance = printer.Dummy()
instance.set_kanji_font(1)
assert instance.output == KANJI_SET_CHAR_STYLE + b"\x02\x00\x30\x01"
instance = printer.Dummy()
instance.set_kanji_font(2)
assert instance.output == KANJI_SET_CHAR_STYLE + b"\x02\x00\x30\x02"