
    Tf                     n    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dS )    )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                   V    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dS )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 |	                    d          dgk    sJ |j
        dk    sJ |j        dk    sJ d S )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      Q/var/www/html/env/lib/python3.11/site-packages/hyperlink/test/test_decoded_url.pytest_durl_basiczTestURL.test_durl_basic   s+   $Y//|v%%%%z]****zRzU""""~#####I..{g%%%%yL((((yD    y?????}''''xx5'))))yF""""} 4444444    c                 (   t          j        t                    }|                    d          j        d         dk    sJ |                    d          j        d         dk    sJ |                                |k    sJ |                                |u sJ |                    d          j        d         dk    sJ |j        dk    sJ d|j        v sJ d|                                j        vsJ |	                                j
        dk    sJ d	|                                j        d
         v sJ |                    d          t          k    sJ |j        sJ |j        sJ ||j                                        k    sJ t          j        t          d          }||j                            d          k    sJ t#          t          j        t$                                        d	                    dk    sJ |d
k    rJ |d
k    sJ d S )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6zz+&&+B/;>>>>zz||t####zz||t####zz##B'2----yF""""di$..**/////{{}}%4444dkkmm(+++++||$|//9<<<<}}{{t'77999999$YT:::)99t9DDDDDD 
$Y//55c::;;'( ( ( ( AIIIqyyyyyyr'   c                     t          j        t                    }t          |          dt          |j                  z   dz   k    sJ d S )NzDecodedURL(url=))r   r   r   repr_urlr"   r$   s     r%   	test_reprzTestURL.test_reprM   sB    #I..Dzz.di@3FFFFFFFr'   c                 t   t          j        t                    }|                    d          dgk    sJ |                    dd          }|                    d          dgk    sJ |                    dd          }|                    d          dgk    sJ t          |                                          }|                    d          dgk    sJ |                    d          }|                    d          g k    sJ t          j        d          }|                    d          d	d
gk    sJ |                    dd                              d          dgk    sJ t          j        d          }|                    d          t          j        d          k    sJ |                    dd          t          j        d          k    sJ |                    dd          t          j        d          k    sJ |                    ddd          t          j        d          k    sJ d S )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   sX   #I..xx5'))))xxW%%xx}}	))))xxX&&xx}}
****dkkmm,,,xx}}
****{{3xx}}""""#$566xx3*,,,,xxs##''..3%7777#<
 
 {{7##z';,(
 (
 
 
 
 
 {{7#{..*2F43
 3
 
 
 
 
 {{7!{,,
0D41
 1
 
 
 
 
 {{7#Q{77:;O<<
 <
 
 
 
 
 
 
r'   c                    t          j        t                    }t          j        t                    }t          j        t                    }|                                }||k    sJ ||k    sJ ||k    sJ |J ||j        k    sJ t          t          t           f         }i }|||<   |||<   t          |          dk    sJ |||<   t          |          dk    sJ |||<   t          |          dk    sJ d S )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||||ty    sJ'8}}!!!!8}}!!!!%8}}!!!!!!r'   c                     t          j        t                    }|                    |j        |j        |j        |j        |j        |j	        |j
        |j        |j        	  	        }||k    sJ d S )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   sk    #I..;*];](  

 

 u}}}}}}r'   c                     t          j        t                    }|                     t                    5  |                    d           d d d            n# 1 swxY w Y   d S )N)r   pwthiswillcauseafailure)r!   )r   r   r   assertRaises
ValueErrorr\   rA   s     r%   test_replace_userinfozTestURL.test_replace_userinfo   s    #I..z** 	 	LL    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                    t          j        t                    }|t          j        t                    k    sJ dt	          |          v sJ dt	          |          vsJ |                                |                                k    sJ d S )Nr4   asText)r   r   r   fromTextdirr4   re   rA   s     r%   test_twisted_compatzTestURL.test_twisted_compat   s    #I..z*9555555CII%%%%s4yy((((||~~......r'   c                    t          d          dk    sJ t          d          dk    sJ |                     t                    5  t          dd           d d d            n# 1 swxY w Y   t          dd          dk    sJ d S )	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   s    
 122nDDDD //?BBBB 122 	I 	IO4HHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I yg>>>)KKKKKKs   A##A'*A'c                     t          j        t                    }t          j        d          }|                    |          }|j        |j        k    sJ |j        |j        k    sJ |j        dk    sJ d S )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   sv    #I..(22	**Y''|ty((((|y~----|z))))))r'   c                     t          j        d          }|j        dk    sJ |                    d          dgk    sJ |j        dk    sJ d S )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   s]    #$677yI%%%%xx}}((((z-------r'   c                     t          j        dd          }|j        dk    sJ |                    d          dgk    sJ |j        dk    sJ d S )Nrt   F)query_plus_is_spaceru   r   b+c+))r   r{   rw   rA   s     r%   test_decode_nonplussedzTestURL.test_decode_nonplussed   sj    #E
 
 
 yI%%%%xx}}((((z-------r'   N)__name__
__module____qualname__r&   r<   rB   rP   rX   r]   rc   rh   rn   rr   rx   r|    r'   r%   r   r      s        5 5 5*$ $ $LG G G
"
 "
 "
H" " ":  $  / / /L L L"* * *. . .. . . . .r'   r   N)
__future__r   typingr   r   r   r   r   r@   r	   commonr   r   r   r   r   r'   r%   <module>r      s    ( ' ' ' ' '                 " " " " " " % % % % % %"	0 
S. S. S. S. S. S. S. S. S. S.r'   