
    /hh[                     0   S SK r S SKJr  S SKrS SKrS SKr " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r	S	r
S
rSrSrSrSrSrSr " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      rS rS  r\S!:X  a  \R8                  " 5         gg)"    N)findfilec                   ,    \ rS rSrS rS rS rS rSrg)TestWithAscii   c                    [         R                  " S SS5      nU R                  UR                  5       SSS9  U R	                  [        UR                  5       5      SS/5        U R	                  UR                  [        5       5        [         R                  " S SS5      nU R                  UR                  5       SSS9  U R	                  [        UR                  5       5      / S	Q5        U R	                  UR                  [        5       5        g )
Ndbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgףp=
?   placesinsertr   r   r      equalr   d   r   e   ebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb))r   r   2   r   r   )r   r   r   r   3   )r   r   r   r   r   )	difflibSequenceMatcherassertAlmostEqualratioassertEquallistget_opcodesbpopularsetselfsms     :/opt/python-3.13.8/usr/lib/python3.13/test/test_difflib.pytest_one_insertTestWithAscii.test_one_insert	   s    $$T9oFrxxz5;bnn./&)+	, 	ce,$$T96OPrxxz5;bnn./-	. 	ce,    c                     [         R                  " S SS5      nU R                  UR                  5       SSS9  U R	                  [        UR                  5       5      / SQ5        g )NQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg+?r
   r   ))r   r   (   r   r*   )deleter*   )   r*   r*   )r   r,   Q   r*   P   )r   r   r   r   r   r   r   r    s     r#   test_one_deleteTestWithAscii.test_one_delete   sT    $$T+DFYZrxxz5;bnn./+	,r&   c                     [         R                  " S SS5      nUR                  5       nU R                  USS/5        U R	                  X!R                  5       5        g )Nr   r	   r   r   )r   r   r   r   assertIs)r!   r"   opcodes      r#   test_opcode_caching!TestWithAscii.test_opcode_caching    sR    $$T9oF!&)+	,
 	fnn./r&   c                 L   [         R                  " S SSS9nU R                  UR                  [	        5       5        [         R                  " S SSS9nU R                  UR                  S15        [         R                  " S SSS9nU R                  UR                  SS	15        g )
Nc                     U S:H  $ N  xs    r#   <lambda>*TestWithAscii.test_bjunk.<locals>.<lambda>+       a3hr&   r)   Taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)isjunkabc                     U S:H  $ r8   r:   r;   s    r#   r=   r>   /   r?   r&   zhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb                    r9   c                     U S;   $ )N)r9   rC   r:   r;   s    r#   r=   r>   3   s    a:or&   rC   )r   r   r   bjunkr   r    s     r#   
test_bjunkTestWithAscii.test_bjunk*   s    $$,>%)<>35)$$,>%)GIC5)$$,E%)GIC:.r&   r:   N)	__name__
__module____qualname____firstlineno__r$   r/   r4   rG   __static_attributes__r:   r&   r#   r   r      s    -,0/r&   r   c                       \ rS rSrSrS rSrg)TestAutojunk8   z-Tests for the autojunk parameter added in 2.7c                 d   SnSn[         R                  " S X5      nU R                  UR                  5       SSS9  U R	                  UR
                  S15        [         R                  " S XSS9nU R                  UR                  5       S	SS9  U R	                  UR
                  [        5       5        g )
Nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr   r
   r   rC   F)autojunkgQ?)r   r   r   r   r   r   r   )r!   seq1seq2r"   s       r#   #test_one_insert_homogenous_sequence0TestAutojunk.test_one_insert_homogenous_sequence:   s     $$T46rxxz1Q7se, $$T4Frxxz6!<ce,r&   r:   N)rI   rJ   rK   rL   __doc__rW   rM   r:   r&   r#   rO   rO   8   s
    7-r&   rO   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)

TestSFbugsJ   c                     [         R                  " S / / 5      nU R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        g )Nr   )r   r   r   r   quick_ratioreal_quick_ratio)r!   ss     r#   test_ratio_for_null_seqn#TestSFbugs.test_ratio_for_null_seqnK   s[    ##D"b1A&!,++-q1r&   c                     [         R                  " S / / 5      R                  5       nU R                  [        [
        U5        [         R                  " / / 5      nU R                  [        [
        U5        g N)r   r   get_grouped_opcodesassertRaisesStopIterationnextunified_diff)r!   	group_gendiff_gens      r#   test_comparing_empty_lists%TestSFbugs.test_comparing_empty_listsR   sU    ++D"b9MMO	-y9''B/-x8r&   c                 .   [         R                  " S SS5      nUR                  5       nUR                  5       nU R                  US   R                  S5        U R                  US   R                  S5        U R                  US   R                  S5        g )Nabxcdabcdr      r   )r   r   get_matching_blocksr   size)r!   r`   firstseconds       r#   test_matching_blocks_cache%TestSFbugs.test_matching_blocks_cacheY   sz    ##D'6:%%'&&(+++r&   c                    [        [        R                  " 5       R                  S/S/5      5      nU R	                  SUS   5        U R	                  SUS   5        U R	                  SUS   5        U R	                  S	US
   5        g )Nz	I am a buggyz		I am a bugz- 	I am a buggyr   z? 	          --
r   z+ 		I am a bugrq   z? +
r
   r   r   Differcomparer   r!   diffs     r#   test_added_tab_hintTestSFbugs.test_added_tab_hintb   s{    GNN$,,.>-?AQ@RST+T!W5-tAw7+T!W5$q'*r&   c                     [        [        R                  " 5       R                  S/S/5      5      nU R	                  SUS   5        U R	                  SUS   5        U R	                  SUS   5        g )	Nz	 	 	^z	 	 	^
z- 	 	 	^r   z	+ 	 	 	^
r   z
? 	 	 	 +
rq   ry   r|   s     r#   %test_hint_indented_properly_with_tabs0TestSFbugs.test_hint_indented_properly_with_tabsj   sa    GNN$,,k]]OLMQ0$q'2)473r&   c           	      l    U R                  [        [        R                  " S/S/S5      5      S/5        g )N23r   ))r   z -2)r   z +3T)r   r   r   _mdiffr!   s    r#   test_mdiff_catch_stop_iteration*TestSFbugs.test_mdiff_catch_stop_iterationp   s/    ua019:	
r&   r:   N)rI   rJ   rK   rL   ra   rl   rv   r~   r   r   rM   r:   r&   r#   r[   r[   J   s     29,+4
r&   r[   z
   1. Beautiful is beTTer than ugly.
   2. Explicit is better than implicit.
   3. Simple is better than complex.
   4. Complex is better than complicated.
z
   1. Beautiful is better than ugly.
   3.   Simple is better than complex.
   4. Complicated is better than complex.
   5. Flat is better than nested.
u   
   1. Beautiful is beTTer than ugly.
   2. Explicit is better than ımplıcıt.
   3. Simple is better than complex.
   4. Complex is better than complicated.
u   
   1. Beautiful is better than ügly.
   3.   Sımple is better than complex.
   4. Complicated is better than cömplex.
   5. Flat is better than nested.
z
		Line 1: preceded by from:[tt] to:[ssss]
  		Line 2: preceded by from:[sstt] to:[sssst]
  	 	Line 3: preceded by from:[sstst] to:[ssssss]
Line 4:  	has from:[sst] to:[sss] after :
Line 5: has from:[t] to:[ss] at end	
z
    Line 1: preceded by from:[tt] to:[ssss]
    	Line 2: preceded by from:[sstt] to:[sssst]
      Line 3: preceded by from:[sstst] to:[ssssss]
Line 4:   has from:[sst] to:[sss] after :
Line 5: has from:[t] to:[ss] at end
zline 0
1234567890123456789012345689012345
line 1
line 2
line 3
line 4   changed
line 5   changed
line 6   changed
line 7
line 8  subtracted
line 9
1234567890123456789012345689012345
short line
just fits in!!
just fits in two lines yup!!
the endzline 0
1234567890123456789012345689012345
line 1
line 2    added
line 3
line 4   chanGEd
line 5a  chanGed
line 6a  changEd
line 7
line 8
line 9
1234567890
another long line that needs to be wrapped
just fitS in!!
just fits in two lineS yup!!
the endc                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestSFpatches   c           !      8   [         S-   S-  n[        S-   S-  nSU-   nSU-   nUR                  5       nUR                  5       nUR                  5       nUR                  5       n[        R                  5       n[        R                  5       n[
        n[        n[        R                  " 5       n	[        R                  " SS9n
[        R                  " SS9nU	R                  XSS	S
SS9nSR                  SU	R                  XSS	SS9SU	R                  X4SS	SS9SU	R                  XSS	SSS9SU	R                  XSS	SSS9SU	R                  XSS	SS9SU	R                  XSS	S
S9SU	R                  / / SS	SS9SU	R                  / / SS	S
S9SU
R                  XV5      SU	R                  XV5      SUR                  UR                  5       UR                  5       SSS9SUR                  UR                  5       UR                  5       5      SUR                  UR                  S5      UR                  S5      5      /5      nUR                  SS U-  5      n[        [        S!5      S"S#9 nU R                  XR!                  5       5        S S S 5        g ! , (       d  f       g = f)$Nz(123
123
123
123
123
123
123
123
123
123
r
   z(456
456
456
456
456
456
456
456
456
456
rq   )tabsize   )
wrapcolumnfromtoF   )contextnumlines
z8<h2>Context (first diff within numlines=5(default))</h2>T)r   z7<h2>Context (first diff after numlines=5(default))</h2>z<h2>Context (numlines=6)</h2>   z<h2>Context (numlines=0)</h2>r   z<h2>Same Context</h2>z<h2>Same Full</h2>z<h2>Empty Context</h2>z<h2>Empty Full</h2>z<h2>tabsize=2</h2>z<h2>tabsize=default</h2>z+<h2>Context (wrapcolumn=14,numlines=0)</h2>z#<h2>wrapcolumn=14,splitlines()</h2>z'<h2>wrapcolumn=14,splitlines(True)</h2>z</body>z
%s
</body>ztest_difflib_expect.htmlzutf-8)encoding)patch914575_from1patch914575_to1
splitlinespatch914575_from2patch914575_to2patch914575_from3patch914575_to3r   HtmlDiff	make_filejoin
make_tablereplaceopenr   r   read)r!   f1at1af1bt1bf2t2f3t3ijkfulltablesactualfps                   r#   test_html_diffTestSFpatches.test_html_diff   sq   !J.1+Q.33nnnnnnnn))+'')Q'+{{36$ua{HG\\#&d\;F\\#&d\;,\\#&dA\F,\\#&dA\F$\\#&d\;!\\#&e\<%\\"RtD\9"\\"RtE\:!\\" '\\" :\\"--/"--/$PQ\R2\\"--/"--/:6\\"---bmmD.AB5: i&(@A (56IRVWWY/ JIIs   " J
Jc                 `   [         R                  " 5       n[        US-  5       Vs/ s H  o"S-  =(       a    S=(       d    SU-  PM     nn[        US-  5       Vs/ s H  o"S-  =(       a    S=(       d    SU-  PM     nn[        R                  " S X45      R                  5         g s  snf s  snf )Nrq   zK:%dzV:A:%dzV:B:%d)sysgetrecursionlimitranger   r   r   )r!   limitr   oldnews        r#   test_recursion_limit"TestSFpatches.test_recursion_limit  s    %%'9>uQwHA!*(a/H9>uQwHA!*(a/Hc/;;= IHs   #B&#B+c                     [         R                  " 5       nUR                  [        R	                  5       [
        R	                  5       5      nU R                  SU5        g )Nz"content="text/html; charset=utf-8"r   r   r   r   r   r   assertInr!   	html_diffoutputs      r#   test_make_file_default_charset,TestSFpatches.test_make_file_default_charset  sH    $$&	$$%6%A%A%C%4%?%?%AC:FCr&   c                     [         R                  " 5       nUR                  [        R	                  5       [
        R	                  5       SS9nU R                  SU5        g )Nz
iso-8859-1charsetz'content="text/html; charset=iso-8859-1"r   r   s      r#   test_make_file_iso88591_charset-TestSFpatches.test_make_file_iso88591_charset  sQ    $$&	$$%6%A%A%C%4%?%?%A-9 % ; 	?Hr&   c                     [         R                  " 5       nUR                  [        R	                  5       [
        R	                  5       SS9nU R                  SU5        U R                  SU5        g )Nzus-asciir   z%content="text/html; charset=us-ascii"z&#305;mpl&#305;c&#305;t)r   r   r   patch914575_nonascii_from1r   patch914575_nonascii_to1r   r   s      r#   2test_make_file_usascii_charset_with_nonascii_input@TestSFpatches.test_make_file_usascii_charset_with_nonascii_input  s`    $$&	$$%?%J%J%L%=%H%H%J-7 % 9 	=vF/8r&   c                     [         R                  " 5       R                  SS5      nU R                  [	        U5      / SQ5        g )Nbbabb)z+ a  br   r   rz   r{   r   r   r!   ms     r#   r$   TestSFpatches.test_one_insert  s0    NN$$Wm<a"78r&   c                     [         R                  " 5       R                  SS5      nU R                  [	        U5      / SQ5        g )Nr   r   )z- ar   r   r   r   s     r#   r/   TestSFpatches.test_one_delete"  s0    NN$$]G<a"78r&   r:   N)rI   rJ   rK   rL   r   r   r   r   r   r$   r/   rM   r:   r&   r#   r   r      s(    70r>DI999r&   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestOutputFormati'  c                     / SQn[         R                  " USS06nU R                  [        U5      SS SS/5        [         R                  " USS06nU R                  [        U5      SS SS	/5        g )
N)onetwoOriginalCurrentz2005-01-26 23:30:50z2010-04-02 10:20:52lineterm r   rq   z --- Original	2005-01-26 23:30:50z+++ Current	2010-04-02 10:20:52z *** Original	2005-01-26 23:30:50z--- Current	2010-04-02 10:20:52r   ri   r   r   context_diffr!   argsudcds       r#   test_tab_delimiter#TestOutputFormat.test_tab_delimiter(  s    :!!45"5b!A>=)? 	@ !!45"5b!A>=)? 	@r&   c                     / SQn[         R                  " USS06nU R                  [        U5      SS SS/5        [         R                  " USS06nU R                  [        U5      SS SS	/5        g )
N)r   r   r   r   r   r   r   rq   z--- Originalz+++ Currentz*** Originalz--- Currentr   r   s       r#   &test_no_trailing_tab_on_empty_filedate7TestOutputFormat.test_no_trailing_tab_on_empty_filedate4  so    4!!45"5b!A(GH!!45"5b!A(GHr&   c                 "   Sn[         R                  nU R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S	5        U R                  U" S
S
5      S5        g )Na             Each <range> field shall be of the form:
             %1d", <beginning line number>  if the range contains exactly one line,
           and:
            "%1d,%1d", <beginning line number>, <number of lines> otherwise.
           If a range is empty, its beginning line number shall be the number of
           the line just before the range, or 0 if the empty range starts the file.
        r
   z3,0   4r   z4,2r   z4,3r   z0,0)r   _format_range_unifiedr   r!   specfmts      r#   test_range_format_unified*TestOutputFormat.test_range_format_unified<  s     ++Qq5)Qq3'Qq5)Qq5)Qq5)r&   c                 "   Sn[         R                  nU R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S	5        U R                  U" S
S
5      S5        g )Na             The range of lines in file1 shall be written in the following format
           if the range contains two or more lines:
               "*** %d,%d ****
", <beginning line number>, <ending line number>
           and the following format otherwise:
               "*** %d ****
", <ending line number>
           The ending line number of an empty range shall be the number of the preceding line,
           or 0 if the range is at the start of the file.

           Next, the range of lines in file2 shall be written in the following format
           if the range contains two or more lines:
               "--- %d,%d ----
", <beginning line number>, <ending line number>
           and the following format otherwise:
               "--- %d ----
", <ending line number>
        r
   r   r   r   r   z4,5r   z4,6r   0)r   _format_range_contextr   r   s      r#   test_range_format_context*TestOutputFormat.test_range_format_contextM  s     ++Qq3'Qq3'Qq5)Qq5)Qq3'r&   r:   N)	rI   rJ   rK   rL   r   r   r   r   rM   r:   r&   r#   r   r   '  s    
@I*"(r&   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)	TestBytesif  c                 `    [        U5      nU H  nU R                  U[        SU-  5        M     g )Nz.all lines of diff should be bytes, but got: %r)r   assertIsInstancebytes)r!   r}   lines      r#   checkTestBytes.checki  s1    DzD!!e@4GI r&   c                 T   SS/nSS/n[         R                  n[         R                  nU R                  nU" [         R                  " X1U5      5        U" [         R                  " X1U5      5        U" [         R                  " X1USS5      5        U" [         R                  " X1USS5      5        U" [         R                  " X1USSSS5      5        U" [         R                  " X1USSSS5      5        U" [         R                  " XAU5      5        U" [         R                  " XAU5      5        U" [         R                  " XAUSS5      5        U" [         R                  " XAUSS5      5        U" [         R                  " XAUSSSS5      5        U" [         R                  " XAUSSSS5      5        g )N   hellos   andrs   andré   a   bs   2005s   2013)r   ri   r   r  
diff_bytes)r!   rB   rC   unifiedr   r  s         r#   test_byte_contentTestBytes.test_byte_contentp  sg   {#'&&&&

g  Q/0g  Q/0 	g  Qd;<g  Qd;< 	g  QdGWMNg  QdGWMN 	g  Q/0g  Q/0g  Qd;<g  Qd;<g  QdGWMNg  QdGWMNr&   c                   ^  SnSnS/nS/nT R                   n[        R                  n[        R                  nU" [        R                  " XcXAU5      5        U" [        R                  " XsXAU5      5        U 4S jn/ SQn	[        R                  " XcXAUSS9n
U" X5        S	nS
nU" [        R                  " XcXAX+U5      5        U" [        R                  " XsXAX+U5      5        / SQn	[        R                  " XcXAX+USS9n
U" X5        g )Ns   odz.txts	   łodz.txts   odz is a city in Poland.s   Łodz is a city in Poland.c                    > [        U5      nTR                  [        U 5      [        U5      5        [        X5       H  u  p#TR                  X#5        M     g rd   )r   r   lenzip)expectr   erB   r!   s       r#   
assertDiff1TestBytes.test_byte_filenames.<locals>.assertDiff  sE     &\FS[#f+6F+  & ,r&   )s   --- odz.txts   +++ łodz.txt   @@ -1 +1 @@   -odz is a city in Poland.   +Łodz is a city in Poland.r&   )r   s
   2005-03-18s
   2005-03-19)s   --- odz.txt	2005-03-18s   +++ łodz.txt	2005-03-19r  r  r  )r  r   ri   r   r  )r!   fnafnbrB   rC   r  r  r   r  r  r   dateadatebs   `            r#   test_byte_filenamesTestBytes.test_byte_filenames  s     --01

&&&&g  QS9:g  QS9:	'
 ##GcJ6" g  QSGHg  QSGH	
 ##GE-026"r&   c                    S/nS/n[         R                  n[         R                  nSnU R                  XSX5        U R                  XSX!5        U R                  XTX5        U R                  XTX!5        SnU R                  U[         R                  X1U5        U R                  U[         R                  X2U5        U R                  U[         R                  XAU5        U R                  U[         R                  XBU5        g )Nr  helloz2lines to compare must be str, not bytes (b'hello')z.all arguments must be bytes, not str ('hello'))r   ri   r   _assert_type_errorr  )r!   rB   rC   r  r   r  s         r#   test_mixed_types_content"TestBytes.test_mixed_types_content  s    JI&&&&E6666A(:(:GJ(:(:GJ(:(:GJ(:(:GJr&   c                 \    S/nS/nSnSnU R                  S[        R                  XX45        g )Nzhello
zohell
s   ol.txts	   ola9.txtz-all arguments must be str, not: b'ol\xe9.txt')r"  r   ri   )r!   rB   rC   r  r  s        r#   test_mixed_types_filenames$TestBytes.test_mixed_types_filenames  s:     KK<  !	2r&   c                     S/nS/nSnSnU R                  S[        R                  [        R                  XSSX45	        S/nS	/n[	        [        R                  " XS
SX45      5        g )Ns   foo
s   bar
u   1 févu   3 févu/   all arguments must be bytes, not str ('1 fév')r	  r
  zfoo
zbar
rB   rC   )r"  r   r  ri   r   )r!   rB   rC   r  r  s        r#   test_mixed_types_dates TestBytes.test_mixed_types_dates  sn    JJ= 4 4$e	, IIW!!!S%?@r&   c                     U R                  [        5       n[        U" U6 5        S S S 5        U R                  U[	        WR
                  5      5        g ! , (       d  f       N4= frd   )rf   	TypeErrorr   r   str	exception)r!   msg	generatorr   ctxs        r#   r"  TestBytes._assert_type_error  sF    y)SD!" *c#--01 *)s   A
A!r:   N)rI   rJ   rK   rL   r  r  r  r#  r&  r)  r"  rM   r:   r&   r#   r   r   f  s*    IO83#jK(
2A 2r&   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestJunkAPIsi  c                 t    S H2  nU R                  [        R                  " U5      [        U5      5        M4     g )N)#z  z #z# z # r   )
assertTruer   IS_LINE_JUNKreprr!   r  s     r#   test_is_line_junk_true#TestJunkAPIs.test_is_line_junk_true  s)    6DOOG006T
C 7r&   c                 t    S H2  nU R                  [        R                  " U5      [        U5      5        M4     g )N)##z ##z## zabc zabc #zMr. Moose is up!)assertFalser   r8  r9  r:  s     r#   test_is_line_junk_false$TestJunkAPIs.test_is_line_junk_false  s,    MDW11$7dD Nr&   c                 ^    SS-  S-   nU R                  [        R                  " U5      5        g )N	i@B r>  )r?  r   r8  )r!   
evil_inputs     r#   test_is_line_junk_REDOS$TestJunkAPIs.test_is_line_junk_REDOS  s)    Wn,
--j9:r&   c                 t    S H2  nU R                  [        R                  " U5      [        U5      5        M4     g )N)r9   rC  )r7  r   IS_CHARACTER_JUNKr9  r!   chars     r#   test_is_character_junk_true(TestJunkAPIs.test_is_character_junk_true  s)    DOOG55d;T$ZH  r&   c                 t    S H2  nU R                  [        R                  " U5      [        U5      5        M4     g )N)rB   r6  r   )r?  r   rH  r9  rI  s     r#   test_is_character_junk_false)TestJunkAPIs.test_is_character_junk_false  s+    6DW66t<d4jI 7r&   r:   N)
rI   rJ   rK   rL   r;  r@  rE  rK  rQ  rM   r:   r&   r#   r4  r4    s    DE;IJr&   r4  c                   &    \ rS rSrS rS rS rSrg)TestFindLongesti  c           
         ^ [        U4S j[        S[        U5      U-
  S-
  5       Vs/ s H  oBXDU-   S-    PM     sn 5       5      $ s  snf )Nc              3   ,   >#    U  H	  oT;   v   M     g 7frd   r:   ).0b_partrB   s     r#   	<genexpr>6TestFindLongest.longer_match_exists.<locals>.<genexpr>  s      GE $*Q;Es   r   r   )anyr   r  )r!   rB   rC   nr   s    `   r#   longer_match_exists#TestFindLongest.longer_match_exists  sR     G,1!SVaZ!^,DE,DqaA	N,DEG G 	GEs   A
c                    SnSn[         R                  " XS9nUR                  5       nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        U R                  XR                  UR                  UR                  -    X$R
                  UR
                  UR                  -    5        U R                  U R                  XUR                  5      5        UR                  SSS9nU R                  UR                  S	5        U R                  UR
                  S
5        U R                  UR                  S5        U R                  XR                  UR                  UR                  -    X$R
                  UR
                  UR                  -    5        U R                  U R                  USS  USS  UR                  5      5        UR                  SSS9nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        U R                  XR                  UR                  UR                  -    X$R
                  UR
                  UR                  -    5        U R                  U R                  XSS UR                  5      5        g )Nzfoo barzfoo baz barrB   rC   r   r   rq   r   )aloblor
      r   r   )bhirb  )	r   r   find_longest_matchr   rB   rC   rs   r?  r]  r!   rB   rC   r"   matchs        r#   test_default_args!TestFindLongest.test_default_args  s6   $$q.%%'!$!$Q'77EGGejj$8977EGGejj$89	;11!

CD%%!%3!$!$Q'77EGGejj$8977EGGejj$89	;11!AB%12

KL%%!%3!$!$Q'77EGGejj$8977EGGejj$89	;11!qVUZZHIr&   c                 .   SnSn[         R                  " XS9nUR                  S[        U5      S[        U5      5      nU R	                  UR
                  S5        U R	                  UR                  S5        U R	                  UR                  S5        U R	                  XR
                  UR
                  UR                  -    X$R                  UR                  UR                  -    5        U R                  U R                  XUR                  5      5        g )Ndabcdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddabcddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddr`  r   c   r   )
r   r   re  r  r   rB   rC   rs   r?  r]  rf  s        r#   %test_longest_match_with_popular_chars5TestFindLongest.test_longest_match_with_popular_chars,  s    %$$q.%%aQCF;!$"%Q'77EGGejj$8977EGGejj$89	;11!

CDr&   r:   N)rI   rJ   rK   rL   r]  rh  rn  rM   r:   r&   r#   rT  rT    s    GJ8
Er&   rT  c                       \ rS rSrS rSrg)TestCloseMatchesi9  c                 4   U R                  [        [        R                  SS/SS9  U R                  [        [        R                  SS/SS9  U R                  [        [        R                  SS/SS9  U R                  [        [        R                  SS/SS9  g )	Nspameggr   )r\  g?)cutoffg)rf   
ValueErrorr   get_close_matchesr   s    r#   test_invalid_inputs$TestCloseMatches.test_invalid_inputs<  s    *g&?&?%TUV*g&?&?%TVW*g&?&?%Y\]*g&?&?%Y]^r&   r:   N)rI   rJ   rK   rL   ry  rM   r:   r&   r#   rq  rq  9  s    _r&   rq  c                       \ rS rSrS rSrg)TestRestoreiC  c                 X   U R                  [        5         SR                  [        R                  " / S5      5        S S S 5        U R                  [        5         SR                  [        R                  " / S5      5        S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Nr   r   r
   )rf   rw  r   r   restorer   s    r#   test_invalid_inputTestRestore.test_invalid_inputF  si    z*GGGOOB*+ +z*GGGOOB*+ +* +***s   'B
'B

B
B)r:   N)rI   rJ   rK   rL   r  rM   r:   r&   r#   r|  r|  C  s    ,r&   r|  c                  .    S[         R                  l        g )Nr   )r   r   _default_prefixr:   r&   r#   setUpModuler  M  s    '(G$r&   c                 X    UR                  [        R                  " [        5      5        U$ rd   )addTestdoctestDocTestSuiter   )loadertestspatterns      r#   
load_testsr  Q  s    	MM'&&w/0Lr&   __main__)r   test.supportr   unittestr  r   TestCaser   rO   r[   r   r   r   r   r   r   r   r   r   r   r   r4  rT  rq  r|  r  r  rI   mainr:   r&   r#   <module>r     s7    !   
-/H%% -/`-8$$ -$+
"" +
\     ""^9H%% ^9B<(x(( <(~N2!! N2`J8$$ J*+Eh'' +E\_x(( _,(## ,)
 zMMO r&   