
    Vh                     f    d dl mZ d dlmZmZ ddlmZmZ ddlm	Z	 ddl
mZ dZd	Z G d
 de      Zy)    )unicode_literals)DictUnion   )
DecodedURLURL)_percent_decode   )HyperlinkTestCasezhttp://example.com/#ua   https://%75%73%65%72:%00%00%00%00@xn--bcher-kva.ch:8080/a/nice%20nice/./path/?zot=23%25&zut#frégc                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)TestURLc                 .   t        j                  t              }|j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ t        j                  t              }|j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  d	k(  sJ |j                  d
k(  sJ |j                  d      dgk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )Nhttpzexample.comP   ) r   httpsu
   bücher.chi  )az	nice nice.pathr   u   frégzot23%user)r   z    )r   	from_text	BASIC_URLschemehostportr   fragment	TOTAL_URLgetr   userinfo)selfbdurldurls      O/home/dcms/DCMS/lib/python3.12/site-packages/hyperlink/test/test_decoded_url.pytest_durl_basiczTestURL.test_durl_basic   s   $$Y/||v%%%zz]***zzRzzU"""~~#####I.{{g%%%yyL(((yyD   yy????}}'''xx5')))yyF"""}} 4444    c                    t        j                  t              }|j                  d      j                  d   dk(  sJ |j                  d      j                  d   dk(  sJ |j                         |k(  sJ |j                         |u sJ |j                  d      j                  d   dk(  sJ |j                  dk(  sJ d|j                  v sJ d|j                         j                  vsJ |j                         j                  dk(  sJ d	|j                         j                  d
   v sJ |j                  d      t        k(  sJ |j                  sJ |j                  sJ ||j                  j!                         k(  sJ t        j                  t        d      }||j                  j!                  d      k(  sJ t#        t        j                  t$              j                  d	            dk(  sJ |d
k(  rJ |d
k7  sJ y )Nzte%tz	../test2%/r   r   r   z	fr%C3%A9g r
   T)with_password)lazyzhttp://example.com/%20)r   r   r   siblingr   childclickr   	normalizeto_urir   to_irito_textabsoluterootedencoded_urlget_decoded_urlstrr   r"   r$   durl2s      r%   test_passthroughszTestURL.test_passthroughs'   s    ##I.||F#((,666zz+&++B/;>>>zz|t###zz|t###zz###B'2---yyF"""dii$..*/////{{}%%444dkkm((++++||$|/9<<<}}}{{{t''779999$$YT:))99t9DDDD 
$$Y/55c:;'(	
( AIqyyr'   c                     t        j                  t              }t        |      dt        |j                        z   dz   k(  sJ y )NzDecodedURL(url=))r   r   r   repr_urlr"   r$   s     r%   	test_reprzTestURL.test_reprM   s7    ##I.Dz.dii@3FFFFr'   c                    t        j                  t              }|j                  d      dgk(  sJ |j	                  dd      }|j                  d      dgk(  sJ |j                  dd      }|j                  d      dgk(  sJ t        |j                               }|j                  d      dgk(  sJ |j                  d      }|j                  d      g k(  sJ t        j                  d      }|j                  d      d	d
gk(  sJ |j                  dd      j                  d      dgk(  sJ t        j                  d      }|j                  d      t        j                  d      k(  sJ |j                  dd      t        j                  d      k(  sJ |j                  dd      t        j                  d      k(  sJ |j                  ddd      t        j                  d      k(  sJ y )Nr   r   r+   spacezspa%ed)urlz/?%61rg=b&arg=cargbcdu.   https://example.com/a/b/?fóó=1&bar=2&fóó=3u   fóózhttps://example.com/a/b/?bar=21)valueu&   https://example.com/a/b/?bar=2&fóó=3r
   )limitr   )rK   rL   )r   r   r   r    addsetr2   removerA   s     r%   test_query_manipulationzTestURL.test_query_manipulationR   s   ##I.xx5')))xxW%xx}	)))xxX&xx}
***dkkm,xx}
***{{3xx}"""##$56xx3*,,,xxs#''.3%777##<
 {{7#z';';,(
 
 	
 
 {{7#{.*2F2F43
 
 	
 
 {{7!{,
0D0D41
 
 	
 
 {{7#Q{7:;O;O<<
 
 	
 
r'   c                    t        j                  t              }t        j                  t              }t        j                  t              }|j	                         }||k(  sJ ||k(  sJ ||k7  sJ |J ||j
                  k7  sJ t        t        t         f   }i }|||<   |||<   t        |      dk(  sJ |||<   t        |      dk(  sJ |||<   t        |      dk(  sJ y )Nr
   r      )	r   r   r   r   r2   r@   r   r   len)r"   r$   r;   burldurl_uriAnyURLdurl_maps          r%   test_equality_and_hashabilityz%TestURL.test_equality_and_hashabilityv   s    ##I.$$Y/##I.;;=t||u}}t||tyy   sJ'8}!!!8}!!!%8}!!!r'   c                 ,   t        j                  t              }|j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  	      }||k(  sJ y )N)	r   r   r   queryr   r   r6   r!   uses_netloc)r   r   r   replacer   r   r   rZ   r   r   r6   r!   r[   r:   s      r%   test_replace_roundtripzTestURL.test_replace_roundtrip   st    ##I.;;**]];;]]((  

 u}}r'   c                     t        j                  t              }| j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY w)N)r   pwthiswillcauseafailure)r!   )r   r   r   assertRaises
ValueErrorr\   rA   s     r%   test_replace_userinfozTestURL.test_replace_userinfo   sP    ##I.z* 	LL  	 		 	s   AAc                     t        j                  t              }|t        j                  t              k(  sJ dt	        |      v sJ dt	        |      vsJ |j                         |j                         k(  sJ y )Nr4   asText)r   r   r   fromTextdirr4   re   rA   s     r%   test_twisted_compatzTestURL.test_twisted_compat   si    ##I.z**95555CI%%%s4y(((||~...r'   c                     t        d      dk(  sJ t        d      dk(  sJ | j                  t              5  t        dd       d d d        t        dd      dk(  sJ y # 1 sw Y   xY w)	Nu   abcdé%C3%A9éfgu   abcdéééfgu   abcdé%C3éfgT)raise_subencoding_excu   é%25éascii)subencoding)r	   ra   UnicodeDecodeError)r"   s    r%   test_percent_decode_mixedz!TestURL.test_percent_decode_mixed   sx    
 12nDDD /?BBB 12 	IO4H	I yg>)KKK		I 	Is   AA(c                    t        j                  t              }t        j                  d      }|j                  |      }|j                  |j                  k(  sJ |j
                  |j
                  k(  sJ |j
                  dk(  sJ y )Nu   /tëst)u   tëst)r   r   r   r0   r   r   )r"   r$   	durl_destclickeds       r%   test_click_decoded_urlzTestURL.test_click_decoded_url   sn    ##I.((2	**Y'||tyy(((||y~~---||z)))r'   c                     t        j                  d      }|j                  dk(  sJ |j                  d      dgk(  sJ |j                  dk(  sJ y )N/x+y%2B?a=b+c%2Bzx+y+r   b c+))r   rv   r   r   r   r    rZ   rA   s     r%   test_decode_pluszTestURL.test_decode_plus   sP    ##$67yyI%%%xx}(((zz----r'   c                     t        j                  dd      }|j                  dk(  sJ |j                  d      dgk(  sJ |j                  dk(  sJ y )Nrt   F)query_plus_is_spaceru   r   b+c+))r   r{   rw   rA   s     r%   test_decode_nonplussedzTestURL.test_decode_nonplussed   sV    ##E
 yyI%%%xx}(((zz----r'   N)__name__
__module____qualname__r&   r<   rB   rP   rX   r]   rc   rh   rn   rr   rx   r|    r'   r%   r   r      sB    5*$LG
"
H":$/L"*..r'   r   N)
__future__r   typingr   r   r   r   r   r@   r	   commonr   r   r   r   r   r'   r%   <module>r      s4    (   " %"	0 
S. S.r'   