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

1import pytest 

2from unittest.mock import patch 

3 

4from muutils.console_unicode import get_console_safe_str 

5 

6 

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}'."