Coverage for tests/unit/test_console_unicode.py: 100%
8 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-04-04 03:33 -0600
« prev ^ index » next coverage.py v7.6.1, created at 2025-04-04 03:33 -0600
1import pytest
2from unittest.mock import patch
4from muutils.console_unicode import get_console_safe_str
7@pytest.mark.parametrize(
8 "default, fallback, encoding, expected",
9 [
10 ("hello", "world", "ASCII", "hello"),
11 ("café", "cafe", "ASCII", "cafe"),
12 ("", "", "ASCII", ""),
13 ("こんにちは", "hello", "ASCII", "hello"),
14 ("💖", "heart", "ASCII", "heart"),
15 ("1234", "numbers", "ASCII", "1234"),
16 ("ABCé123", "ABC123", "ASCII", "ABC123"),
17 ("café", "cafe", "UTF-8", "café"),
18 ("こんにちは", "hello", "UTF-8", "こんにちは"),
19 ("💖", "heart", "UTF-8", "💖"),
20 ],
21)
22def test_get_console_safe_str(default, fallback, encoding, expected):
23 with patch("locale.getpreferredencoding", return_value=encoding):
24 result = get_console_safe_str(default, fallback)
25 assert (
26 result == expected
27 ), f"Test failed for default='{default}', fallback='{fallback}', encoding='{encoding}'. Expected '{expected}', got '{result}'."