@@ -294,3 +294,47 @@ def test_simplify():
294294 assert content .spans == [Span (0 , 3 , "bold" ), Span (3 , 6 , "bold" )]
295295 content .simplify ()
296296 assert content .spans == [Span (0 , 6 , "bold" )]
297+
298+
299+ @pytest .mark .parametrize (
300+ ["input" , "tab_width" , "expected" ],
301+ [
302+ (Content ("" ), 8 , Content ("" )),
303+ (Content ("H" ), 8 , Content ("H" )),
304+ (Content ("Hello" ), 8 , Content ("Hello" )),
305+ (Content ("\t " ), 8 , Content (" " * 8 )),
306+ (Content ("A\t " ), 8 , Content ("A" + " " * 7 )),
307+ (Content ("ABCD\t " ), 8 , Content ("ABCD" + " " * 4 )),
308+ (Content ("ABCDEFG\t " ), 8 , Content ("ABCDEFG " )),
309+ (Content ("ABCDEFGH\t " ), 8 , Content ("ABCDEFGH" + " " * 8 )),
310+ (Content ("Hel\t lo!" ), 4 , Content ("Hel lo!" )),
311+ (Content ("\t \t " ), 4 , Content (" " * 8 )),
312+ (Content ("FO\t \t " ), 4 , Content ("FO " )),
313+ (Content ("FO\t OB\t " ), 4 , Content ("FO OB " )),
314+ (
315+ Content ("FOO" , spans = [Span (0 , 3 , "red" )]),
316+ 4 ,
317+ Content ("FOO" , spans = [Span (0 , 3 , "red" )]),
318+ ),
319+ (
320+ Content ("FOO\t BAR" , spans = [Span (0 , 3 , "red" )]),
321+ 8 ,
322+ Content ("FOO BAR" , spans = [Span (0 , 3 , "red" )]),
323+ ),
324+ (
325+ Content ("FOO\t BAR" , spans = [Span (0 , 3 , "red" ), Span (4 , 8 , "blue" )]),
326+ 8 ,
327+ Content ("FOO BAR" , spans = [Span (0 , 3 , "red" ), Span (8 , 11 , "blue" )]),
328+ ),
329+ (
330+ Content ("foo\t bar\n baz" , spans = [Span (0 , 11 , "red" )]),
331+ 8 ,
332+ Content ("foo bar\n baz" , spans = [Span (0 , 15 , "red" )]),
333+ ),
334+ ],
335+ )
336+ def test_expand_tabs (input : Content , tab_width : int , expected : Content ):
337+ output = input .expand_tabs (tab_width ).simplify ()
338+ print (repr (output ))
339+ assert output .plain == expected .plain
340+ assert output ._spans == expected ._spans
0 commit comments