4C^SSKrSSKJrJrJrJrJrJr "SS\R5r "SS\ 5r "SS\ 5r "S S \ 5r "S S \ 5r "S S\ 5r"SS\R5r"SS\R5r"SS\ 5r\S:Xa\R&"5 gg)N) TextWrapperwrapfilldedentindentshortenc0\rSrSrSrSrSrSrSrSr g) BaseTestCasez5Parent class with utility methods for textwrap tests.c[U[5(aS/n[[U55HnUR SX1U4-5 M U(aSR U5nU$SnU$[U[ 5(aS[U5-nW$)Nz %d: %r z no linesz %s ) isinstancelistrangelenappendjoinstrrepr)selftextinresultis 9/opt/alt/python313/lib64/python3.13/test/test_textwrap.pyshowBaseTestCase.shows fd # #F3v;' jAay>9:(*0TYYv&F 7CF  $ $V ,F c tURXSURU5<SURU5<35 g)Nz expected: z but got: ) assertEqualr)rrexpects rcheckBaseTestCase.checks0  &!499V#4 6 7rc >[X40UD6nURXS5 gN)rr!rtextwidthr kwargsrs r check_wrapBaseTestCase.check_wrap#sd,V, 6"rcnURRU5nURX2SU<SU<35 g)Nz expected z but got )wrapper_splitr)rr&r rs r check_splitBaseTestCase.check_split's2$$T* *0&: ;rN) __name__ __module__ __qualname____firstlineno____doc__rr!r)r.__static_attributes__r0rrr r s?7 #;rr c\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"g!)" WrapTestCase.c [SS9Ulg)N-)r')rr,rs rsetUpWrapTestCase.setUp0s", rcSnURUS/SQ5 URUSSS/5 URUSU/5 g)N=Hello there, how are you this fine day? I'm glad to hear it!  Hello there, how are you this finez day? I'mz glad to hearzit!*z'Hello there, how are you this fine day?zI'm glad to hear it!Pr)rr&s r test_simpleWrapTestCase.test_simple3sPO b  ! bB/1 2 b4&)rcNURSS/5 URSS/SS9 g)NFdrop_whitespacerHr<s rtest_empty_stringWrapTestCase.test_empty_stringDs& Ar" Ar59rcNURSS/SS9 URSS/SSS9 g)NrMrN++initial_indentF)rVrPrHr<s r%test_empty_string_with_initial_indent2WrapTestCase.test_empty_string_with_initial_indentIs, Ar$7 Ar$Nrc*Sn/SQn[SSS9nURU5nURXB5 URU5nURUSR U55 SnS/nUR US U5 S nS /nUR US US S 9 g)NzThis is a paragraph that already has line breaks. But some of its lines are much longer than the others, so it needs to be wrapped. Some lines are tabbed too. What a mess! )z)This is a paragraph that already has linez'breaks. But some of its lines are muchz)longer than the others, so it needs to bez-wrapped. Some lines are tabbed too. What azmess!r;Tfix_sentence_endingsr z Test default tabsize.z( Test default tabsize.rGz Test custom tabsize.z Test custom tabsize.)tabsize)rrr!rrr))rr&r r,rs rtest_whitespaceWrapTestCase.test_whitespaceNs bt<d# 6"d# 6499V,-,<= b&)+45 b&!4rc[SSS9nSnS/nURURU5U5 SnS/nURURU5U5 SnURURU5U5 S nS /nURURU5U5 S Ul/S QnURURU5U5 S n/SQnURURU5U5 SUlS/nURURU5U5 SnS/nURURU5U5 g)N<TrZz$A short line. Note the single space.z%A short line. Note the single space.z Well, Doctor? What do you think?z!Well, Doctor? What do you think?z Well, Doctor? What do you think?z)I say, chaps! Anyone for "tennis?" Hmmph!z+I say, chaps! Anyone for "tennis?" Hmmph!)z I say, chaps!zAnyone for "tennis?"zHmmph!z1And she said, "Go to hell!" Can you believe that?)zAnd she said, "Go tozhell!" Can youz believe that?z2And she said, "Go to hell!" Can you believe that?zFile stdio.h is nice.)rr!rr')rr,r&r s rtest_fix_sentence_endings&WrapTestCase.test_fix_sentence_endingsns,bt< 69: 7<<%v. 256 7<<%v.2 7<<%v.;?@ 7<<%v. D 7<<%v.C# 7<<%v. FG 7<<%v.&)* 7<<%v.rcZSnURUSSS/5 URUSS/5 g)NzThis is a short paragraph.rbzThis is a shortz paragraph.(zThis is a short paragraph.rHrIs rtest_wrap_shortWrapTestCase.test_wrap_shorts8- b#4#/#1 2 b#?"@ArcVSnURUSS/5 URUSS/SS9 g)NzThis is a short line.z(1) This is a short line.z(1) rUrHrIs rtest_wrap_short_1line"WrapTestCase.test_wrap_short_1lines;' b#:";< b#>"?'-  /rc|SnURUSSS/5 URUSSS/5 URUSSS/5 S RS 5nURUS US S 9 URX5 URSS/5 URSS/5 URSSRS 55 g)NzBthis-is-a-useful-feature-for-reformatting-posts-from-tim-peters'lyrfzthis-is-a-useful-feature-for-z%reformatting-posts-from-tim-peters'ly)rFz*this-is-a-useful-feature-for-reformatting-zposts-from-tim-peters'lyzLthis-|is-|a-|useful-|feature-|for-|reformatting-|posts-|from-|tim-|peters'ly|Fbreak_long_wordsze-mailzJelly-Oz half-a-crownzhalf-|a-|crown)r)splitr.rr&r s rtest_hyphenatedWrapTestCase.test_hyphenateds8 b8@B C b8@B C bE35 6>?DuSz  a%@ & H:. YK0 )9)?)?)DErc\SnURUS/SQ5 URUSSS/5 URUSUR5SS 9 S nURUS S S /5 URUSS S /5 URUSS /5 URUSUR5SS 9 g)NzRPython 1.0.0 was released on 1994-01-26. Python 1.0.1 was released on 1994-02-15.rj)zPython 1.0.0 was released onz1994-01-26. Python 1.0.1 waszreleased on 1994-02-15.rfz(Python 1.0.0 was released on 1994-01-26.z(Python 1.0.1 was released on 1994-02-15.rpFrqzI do all my shopping at 7-11.zI do all my shopping atz7-11.)r)rsrIs rtest_hyphenated_numbers$WrapTestCase.test_hyphenated_numberss* b#> ? b#M#M#O P aF. b#<#*#, - b#<#*#, - b#B"CD aFrcSnURUSSS/5 URUSSS/5 SS /nURUS U5 URUS U5 URUS S/5 S n/SQnURUSU5 URUSU5 /SQnURUSU5 URUSU5 SS/nURUSU5 URUSU5 SS/nURUSU5 URUS U5 Sn/SQnURX5 Sn/SQnURX5 g)Nz$Em-dashes should be written -- thus.rxzEm-dashes should bezwritten -- thus.rzzEm-dashes should be writtenz-- thus.zEm-dashes should be written --zthus.rj#$z%You can also do--this or even---this.)zYou can also doz--this or even---this.r )zYou can also do--zthis or even---this.zYou can also do--this or evenrz You can also do--this or even---r z7Here's an -- em-dash and--here's another---and another!)zHere's anr--rzem-dashrandrzhere'sranotherz---rrzanother!zand then--bam!--he was gone) rrthenrzbam!rherwasrgoner)r.rts r test_em_dashWrapTestCase.test_em_dashsq5 b.+- . b6#% &3 b&) b&) b?@ B 7 b&) b&) b&) b&)1 b&) b&)4 b&) b&)I* &,1 &rcSnURUS/SQ5 URUS/SQ5 SS/nURUSU5 URUS U5 URUS U5 URUS U5 S S /nURUSU5 URUSU5 SS/nURUSU5 Sn/SQnURX5 g)Nz%' b&)9? &rcURS/SQ5 URS/SQ5 URS/SQ5 URSS/5 URSS/5 URS S S /5 URS /S Q5 g)Nzwhat the--hey!)whatrrrzhey!z what the--)rrzthe--z what the--.)rrzthe--.z --text--.z--optionz --option-opt --option-optzfoo --option-opt bar)foorrrrbarr.r<s rtest_funky_hyphensWrapTestCase.test_funky_hyphens3s )+MN '=> (?@ {m4 j\2 +u)=> /E GrcURS/SQ5 URS/SQ5 URS/SQ5 URS/SQ5 URS S RS 55 g) Nzthe 'wibble-wobble' widget)rrz'wibble-zwobble'rwidgetzthe "wibble-wobble" widget)rrz"wibble-zwobble"rrzthe (wibble-wobble) widget)rrz(wibble-zwobble)rrzthe ['wibble-wobble'] widget)rrz ['wibble-zwobble']rrzwhat-d'you-call-it.zwhat-d'you-|call-|it.ro)r.rsr<s rtest_punct_hyphensWrapTestCase.test_punct_hyphensDsy 5K M 5K M 5K M 7M O .066s; =rc|URS/SQ5 URS/SQ5 URS/SQ5 g)Nzfoo (--option) bar)rrz (--option)rrz foo (bar) baz)rrz(bar)rbazzblah (ding dong), wubba)blahrz(dingrzdong),rwubbarr<s rtest_funky_parensWrapTestCase.test_funky_parensYsD -? A : < 2( )rc0SnURUS/SQSS9 g)Nz0 This is a sentence with much whitespace. )z This is a z sentence z with z much whitezspace.FrOrHrIs rtest_drop_whitespace_false'WrapTestCase.test_drop_whitespace_falsefs'B b>(-  /rc*URSSS/SS9 g)N rNFrOrHr<s r*test_drop_whitespace_false_whitespace_only7WrapTestCase.test_drop_whitespace_false_whitespace_onlyos q5'5Arc,URSSS/SSS9 g)NrrN F )rPrVrHr<s r6test_drop_whitespace_false_whitespace_only_with_indentCWrapTestCase.test_drop_whitespace_false_whitespace_only_with_indentss" q7)U'+  -rc*URSS/5 g)NrrNrHr<s r$test_drop_whitespace_whitespace_only1WrapTestCase.test_drop_whitespace_whitespace_onlyys a$rcZSnURUSS/5 URUSSS/5 g)Nz, This is a sentence with leading whitespace.2rjz This is a sentence withzleading whitespace.rHrIs r'test_drop_whitespace_leading_whitespace4WrapTestCase.test_drop_whitespace_leading_whitespace}s: > bGH J b35JK MrcZSnURUS/SQSS9 URUSSS/5 g)Nz abcd efghrN)abcdrefghFrOrrrHrIs r$test_drop_whitespace_whitespace_line1WrapTestCase.test_drop_whitespace_whitespace_lines9 a!9(-  / a&&!12rc(URSS/SS9 g)NrrNrTrUrHr<s r0test_drop_whitespace_whitespace_only_with_indent=WrapTestCase.test_drop_whitespace_whitespace_only_with_indents aD9rc.URSSSS/SSS9 g)Nz abcd efghrNz abcdz efghrrVsubsequent_indentrHr<s r&test_drop_whitespace_whitespace_indent3WrapTestCase.test_drop_whitespace_whitespace_indents&  Q8(<'+t  ErcfSnURRU5nURU/SQ5 g)Nz0Hello there -- you goof-ball, use the -b option!)Hellorthererrryourzgoof-zball,ruserrrz-brzoption!)r,r-r!)rr&rs r test_splitWrapTestCase.test_splits3B$$T* 6K LrcXSnURUSSS/SS9 URUSSS/S S9 g) Nz yaba daba-doorz yaba daba-dooTbreak_on_hyphensyabazdaba-dooFrHrIs rtest_break_on_hyphens"WrapTestCase.test_break_on_hyphenssE b<"7)-  / b6:"6).  0rcxSnUR[[US5 UR[[US5 g)NzWhatever, it doesn't matter.r) assertRaises ValueErrorrrIs rtest_bad_widthWrapTestCase.test_bad_widths/- *dD!4 *dD"5rc2SnURUS/SQ5 g)NuDie Empfänger-Auswahl )Dieu Empfänger-AuswahlrHrIs rtest_no_split_at_umlaut$WrapTestCase.test_no_split_at_umlauts) b"EFrc2SnURUSSS/5 g)Nu aa ää-ääuaa ää-uäärHrIs rtest_umlaut_followed_by_dash)WrapTestCase.test_umlaut_followed_by_dashs% a.*!=>rcXSnURUS/SQSS9 URUS/SQSS9 g)Nu,This is a sentence with non-breaking space.rb)This is a sentence with non-ubreaking space.Tr)rwithunon-breaking space.FrHrIs rtest_non_breaking_space$WrapTestCase.test_non_breaking_spacesHM b=*.  / bA*/  0rcXSnURUS/SQSS9 URUS/SQSS9 g)Nu-This is a sentence with non-breaking space.rb)rrubreaking space.Tr)rrunon-breaking space.FrHrIs rtest_narrow_non_breaking_space+WrapTestCase.test_narrow_non_breaking_spacesM2 bD*.  / bH*/  0r)r,N)#r1r2r3r4r=rJrQrWr^rcrgrkrur{rrrrrrrrrrrrrrrrrrrrr6r0rrr8r8.s-*": O 5@(/TB/F4G(4'n 'DG"=* )/B- % M3: E L06 G? 00rr8c0\rSrSrSrSrSrSrSrSr g) MaxLinesTestCaseir@czURURSS/SS9 URURSS/SS9 URURSSS/SS9 URURS SS /SS9 URURS UR/SS9 URURS/S QS S9 g)NrAz Hello [...]r max_linesrprCz how [...]rz how are [...]rGrBrNr)r&r<s rrJMaxLinesTestCase.test_simples  2&"#  %  2&"#  %  2'$&"#  %  2'(*"#  %  2 {a@  2 #$  %rcURURS/SQSS9 URURSSS/SS9 URURS -S/S QSS9 g) NrA)rCrDrEz day? [...]r\rrNr[...]rz rBrr<s r test_spacesMaxLinesTestCase.test_spacessx  2'#$  %  1  ""#  %  H,b #$  %rc fURURSS/SSS9 URURSSS/SSS9 UR[5 [ URS S SS S 9 SSS5 UR[5 [ URS S SS S 9 SSS5 URURS SS/SS SS S9 URURS S/SSS S S9 URURSUR/SS9 g!,(df  N=f!,(df  N=f)NrAzHello...rpz...r placeholderrCz how are...rr rz [truncated]...)rVrr )rrr z Hello there,z [truncated]...r)rrVrr rGa........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................r )r)r&rrrr<s rtest_placeholder!MaxLinesTestCase.test_placeholders=  2# "#$)  +  2'%'"#$)  +   z * Bv*; =+  z * B&*; =+  2++-"#'-*.$5  7  2+,"#'+*0$5  7  2 { K'+ *+ *sDD" D" D0c2SnURUSSS/SSS9 g)Nz1Good grief Python features are advancing quickly!rAz Good griefz Python*****z*****rrHrIs rtest_placeholder_backtrack+MaxLinesTestCase.test_placeholder_backtrack2s- C b%}5"#$+  -rr0N) r1r2r3r4r&rJrr rr6r0rrrrs JD%2%.L@ -rrc,\rSrSrSrSrSrSrSrg)LongWordTestCasei>c0[5UlSUlg)Nz]Did you say "supercalifragilisticexpialidocious?" How *do* you spell that odd word, anyways? )rr,r&r<s rr=LongWordTestCase.setUp?s"}  rcURURS/SQ5 URURSSS/5 URSS/SQS S 9 URURS /S Q5 g) Nrj)zDid you say "supercalifragiliszticexpialidocious?" How *do*zyou spell that odd word,anyways?rz1Did you say "supercalifragilisticexpialidocious?"z*How *do* you spell that odd word, anyways?z----------hellor)z ----------z hz e lrz oz )rrA) Did you say "supercalifr agilisticexpz ialidocious?z " How *do*z you spellzthat oddzword,rrr<s rtest_break_long LongWordTestCase.test_break_longFs|  2% &  2LEG H - -3  4  2% &rcSURlSURl/SQnURRUR5nUR X!5 [URSSS9nUR X!5 g)Nrrj)z Did you sayz%"supercalifragilisticexpialidocious?"zHow *do* you spell that oddzword, anyways?)r'rr)r,rrr'rr&r!rr rs rtest_nobreak_long"LongWordTestCase.test_nobreak_longjsg() %  ""499- 6"diirA> 6"rc@URURS/SQSS9 g)NrA)rrrrr\rrr<s rtest_max_lines_long$LongWordTestCase.test_max_lines_longzs%  2"#$  %r)r&r,N) r1r2r3r4r=rrr"r6r0rrrr>s"&H# %rrc2\rSrSrSrSrSrSrSrSr g) LongWordWithHyphensTestCaseic>[5UlSUlSUlg)NzOWe used enyzme 2-succinyl-6-hydroxy-2,4-cyclohexadiene-1-carboxylate synthase. zC1234567890-1234567890--this_is_a_very_long_option_indeed-good-bye" )rr,text1text2r<s rr=!LongWordWithHyphensTestCase.setUps"}   rcSS/nURURSU5 /SQnURURSU5 /SQnURURSU5 g)Nz(We used enyzme 2-succinyl-6-hydroxy-2,4-z&cyclohexadiene-1-carboxylate synthase.r) We usedz enyzme 2-z succinyl-z 6-hydroxy-z2,4- cyclohexadziene-1- carboxylate synthase.r 1234567890z -123456789z 0--this_is _a_very_lo ng_option_zindeed-z good-bye"r)r'r(rexpecteds rtest_break_long_words_on_hyphen;LongWordWithHyphensTestCase.test_break_long_words_on_hyphensZ><>  B1M  B1:  B1rcSS/nURURSUSS9 /SQnURURSUSS9 /SQnURURSU5 g) Nz2We used enyzme 2-succinyl-6-hydroxy-2,4-cyclohexadziene-1-carboxylate synthase.rFr)r+z enyzme 2-sz uccinyl-6-z hydroxy-2,z 4-cyclohexz adiene-1-c arboxylater/rr0r4r5s r#test_break_long_words_not_on_hyphen?LongWordWithHyphensTestCase.test_break_long_words_not_on_hyphensbH24  B5IK  B5I:  B1rc/SQnURURSUSS9 /SQnURURSUSS9 /SQnURURSU5 g)NzWe used enyzme52-succinyl-6-hydroxy-2,4-cyclohexadiene-1-carboxylater/rFrqr+enyzmer?r/rr0r4r5s r'test_break_on_hyphen_but_not_long_wordsCLongWordWithHyphensTestCase.test_break_on_hyphen_but_not_long_wordss_!  B5I!  B5I:  B1rc/SQnURURSUSSS9 /SQnURURSUSSS9 /SQnURURSU5 g)Nr>rF)rrrr@rr0r4r5s r*test_do_not_break_long_words_or_on_hyphensFLongWordWithHyphensTestCase.test_do_not_break_long_words_or_on_hyphenssq!  B).).  0!  B).).  0:  B1r)r'r(r,N) r1r2r3r4r=r7r;rBrEr6r0rrr%r%s 2 22"2rr%c,\rSrSrSrSrSrSrSrg)IndentTestCasesicSUlg)NznThis paragraph will be filled, first without any indentation, and then with some (including a hanging indent).r&r<s rr=IndentTestCases.setUps 4 rcVSn[URS5nURX!5 g)NznThis paragraph will be filled, first without any indentation, and then with some (including a hanging indent).rfrr&r!rs r test_fillIndentTestCases.test_fills'& dii$ 6"rc/SQn[URSSS9nURX!5 SRU5n[ URSSS9nURX!5 g)N)z# This paragraph will be filled,z'first without any indentation, and thenz'with some (including a hanging indent).rfrrUr )rr&r!rrrs rtest_initial_indent#IndentTestCases.test_initial_indentsU=diiG< 6"6"diiG< 6"rcVSn[URSSSS9nURX!5 g)Nz~ * This paragraph will be filled, first without any indentation, and then with some (including a hanging indent).rfz * rrrMrs rtest_subsequent_indent&IndentTestCases.test_subsequent_indents/ dii%+vG 6"rrJN) r1r2r3r4r=rNrQrTr6r0rrrHrHs4 # # #rrHc>\rSrSrSrSrSrSrSrSr Sr S r g ) DedentTestCaseic:URU[U55 g)z,assert that dedent() has no effect on 'text'NrrrIs rassertUnchangedDedentTestCase.assertUnchangeds vd|,rcSnURU5 SnURU5 SnURU5 SnURU5 g)Nz,Hello there. How are you? Oh good, I'm glad.zHello there. Boo!z Hello there. This is indented.zHello there. Boo! )rZrIs rtest_dedent_nomargin#DedentTestCase.test_dedent_nomarginsT? T"& T"3 T"* T"rcSnSnURU[U55 SnSnURU[U55 SnSnURU[U55 g)Nz' Hello there. How are ya? Oh good.z!Hello there. How are ya? Oh good.z) Hello there. How are ya? Oh good. z#Hello there. How are ya? Oh good. z+ Hello there. How are ya? Oh good. rYrts rtest_dedent_evenDedentTestCase.test_dedent_evensa:6 .?: .A: .rcSnSnURU[U55 SnSnURU[U55 SnSnURU[U55 g)NzK def foo(): while 1: return foo z+def foo(): while 1: return foo z Foo Bar Baz zFoo Bar Baz z Foo Bar Baz rYrts rtest_dedent_uneven!DedentTestCase.test_dedent_uneven%sf   .,' .-' .rcSnSnURU[U55 SnSnURU[U55 SnSnURU[U55 g)Nz Foo Bar z Foo Bar z Foo Bar z Foo Bar z Foo Bar rYrts rtest_dedent_declining$DedentTestCase.test_dedent_declining=s`$ .'  .+  .rcxSnSnURU[U55 URU[U55 g)Nz hello there how are you?zhello there how are you?rYrts r"test_dedent_preserve_internal_tabs1DedentTestCase.test_dedent_preserve_internal_tabsNs60. . 0rc~SnURU5 SnURU5 SnSnURU[U55 SnURU[U55 SnURU[U55 SnSnURU[U55 S nS nURU[U55 g) Nz hello there how are you?z! hello there how are you?z hello there how are you?zhello there how are you?z hello there how are you?z" hello there how are you?z hello there how are you?zhello there how are you?z2 hello there how are you? I'm fine, thanksz/ hello there how are you? I'm fine, thanks)rZrrrts r test_dedent_preserve_margin_tabs/DedentTestCase.test_dedent_preserve_margin_tabsZs. T"5 T"/, .2 .6 .4. .IG .rr0N) r1r2r3r4rZr]r`rcrfrirlr6r0rrrWrWs%-#"/ /0/"1/rrWcd\rSrSrSr\S-rSrSrSrSr Sr S r S r S r S rS rSrSrg)IndentTestCaseix)Hi. This is a test. Testing.zHi. This is a test. Testing.z Hi. This is a test. Testing. ) Hi. This is a test. Testing. z# Hi. This is a test. Testing. cbURHnUR[US5U5 M! gNrMCASESrrrIs rtest_indent_nomargin_default+IndentTestCase.test_indent_nomargin_defaults'JJD   VD"-t 4rcdURH nUR[USS5U5 M" grsrtrIs r%test_indent_nomargin_explicit_default4IndentTestCase.test_indent_nomargin_explicit_defaults+JJD   VD"d3T :rcjSnURH nUR[USU5U5 M" g)NcgNTr0lines r?IndentTestCase.test_indent_nomargin_all_lines..rrMrtr predicater&s rtest_indent_nomargin_all_lines-IndentTestCase.test_indent_nomargin_all_liness0& JJD   VD"i8$ ?rcjSnURH nUR[USU5U5 M" g)Ncg)NFr0r~s rr5IndentTestCase.test_indent_no_lines..srrrtrs rtest_indent_no_lines#IndentTestCase.test_indent_no_liness.& JJD   VD&)    H5LD   VD$7 @6rcSnSnSn[URU5H!upEUR[XAU5U5 M# g)Nr)rz% Hi. This is a test. Testing.z& Hi. This is a test. Testing. rz/ Hi. This is a test. Testing. cgr}r0r~s rr6IndentTestCase.test_indent_all_lines..rrrrrr6rr&r s rtest_indent_all_lines$IndentTestCase.test_indent_all_linessC  &  H5LD   VD).s TZZ\!1rrrs rtest_indent_empty_lines&IndentTestCase.test_indent_empty_linessC  2  H5LD   VD)\rSrSrSrSrSrSrSrSr Sr S r g ) ShortenTestCaseic >[X40UD6nURXS5 gr$)rr!r%s r check_shortenShortenTestCase.check_shortens// 6"rcSnURUSS5 URU[U5U5 URU[U5S- S5 g)Nz>This is a paragraph that already has line breaks and tabs too.=z:This is a paragraph that already has line breaks and [...]zhello world! rAz hello world! z hello [...]rrrrIs rr^ShortenTestCase.test_whitespacesx, 44 5 40 1 0"nE 0"mD 0"g>rc[SSSS9 UR[5 [SSSS9 SSS5 g!,(df  g=f)Nxxxxxxxxxxxxxxxxxxxxz(......))r'r z (.......))rrrr<s r$test_width_too_small_for_placeholder4ShortenTestCase.test_width_too_small_for_placeholder.s4z:   z * HA; ?+ * *s 6 Ac*URSSS5 g)NHelloorrr<s r-test_first_word_too_long_but_placeholder_fits=ShortenTestCase.test_first_word_too_long_but_placeholder_fits3s 8Q0rr0N) r1r2r3r4rrJr rQr^rrr6r0rrrrs&#! 4&?$@ 1rr__main__)unittesttextwraprrrrrrTestCaser r8rrr%rHrWrorr1mainr0rrrsEE;8$$;