39 lines
		
	
	
		
			825 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			825 B
		
	
	
	
		
			Python
		
	
	
	
from _pytest._io.wcwidth import wcswidth
 | 
						||
from _pytest._io.wcwidth import wcwidth
 | 
						||
import pytest
 | 
						||
 | 
						||
 | 
						||
@pytest.mark.parametrize(
 | 
						||
    ("c", "expected"),
 | 
						||
    [
 | 
						||
        ("\0", 0),
 | 
						||
        ("\n", -1),
 | 
						||
        ("a", 1),
 | 
						||
        ("1", 1),
 | 
						||
        ("א", 1),
 | 
						||
        ("\u200b", 0),
 | 
						||
        ("\u1abe", 0),
 | 
						||
        ("\u0591", 0),
 | 
						||
        ("🉐", 2),
 | 
						||
        ("$", 2),  # noqa: RUF001
 | 
						||
    ],
 | 
						||
)
 | 
						||
def test_wcwidth(c: str, expected: int) -> None:
 | 
						||
    assert wcwidth(c) == expected
 | 
						||
 | 
						||
 | 
						||
@pytest.mark.parametrize(
 | 
						||
    ("s", "expected"),
 | 
						||
    [
 | 
						||
        ("", 0),
 | 
						||
        ("hello, world!", 13),
 | 
						||
        ("hello, world!\n", -1),
 | 
						||
        ("0123456789", 10),
 | 
						||
        ("שלום, עולם!", 11),
 | 
						||
        ("שְבֻעָיים", 6),
 | 
						||
        ("🉐🉐🉐", 6),
 | 
						||
    ],
 | 
						||
)
 | 
						||
def test_wcswidth(s: str, expected: int) -> None:
 | 
						||
    assert wcswidth(s) == expected
 |