U
    1ÜŸjÞ  ã                   @   sX   d dl mZ d dlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 G dd	„ d	eƒZd
S )é    )Úunicode_literals)Úcasté   )Ú_urlé   )ÚHyperlinkTestCase)Úregister_schemeÚURLÚ
DecodedURLc                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestSchemeRegistrationc                 C   s   t tjƒ| _ttjƒ| _d S ©N)Údictr   ÚSCHEME_PORT_MAPÚ_orig_scheme_port_mapÚsetÚNO_NETLOC_SCHEMESÚ_orig_no_netloc_schemes©Úself© r   úK/tmp/pip-unpacked-wheel-8d8uvhbz/hyperlink/test/test_scheme_registration.pyÚsetUp   s    zTestSchemeRegistration.setUpc                 C   s   | j t_| jt_d S r   )r   r   r   r   r   r   r   r   r   ÚtearDown   s    zTestSchemeRegistration.tearDownc                 C   s¸   t dddd� t d¡}|jdks&t‚|jdks4t‚|jdksBt‚t d¡}|jdd�}| ¡ dksht‚t d	¡}| ¡ dks‚t‚t d
dd� td
d�}|jdd�}| ¡ dks´t‚d S )NZdeltronTiÖ  ©Úuses_netlocÚdefault_portzdeltron://example.comzdeltron:zexample.com)Úhostzdeltron://example.com:3030Znonetroni×  ©r   ©Úschemeznonetron://example.com)	r   r	   Ú	from_textr   ÚAssertionErrorÚportr   ÚreplaceÚto_text)r   Úu1Úu2Úu3Úu4r   r   r   Útest_register_scheme_basic   s    



z1TestSchemeRegistration.test_register_scheme_basicc                 C   s6   t ddd� tdd�}|jdd�}| ¡ dks2t‚d S )NZ	noloctronF©r   r   )ZexampleÚpath)r+   znoloctron:example/path)r   r	   r#   r$   r!   )r   r(   r   r   r   Útest_register_no_netloc_scheme-   s    
z5TestSchemeRegistration.test_register_no_netloc_schemec              	   C   s(   |   t¡� tdddd� W 5 Q R X d S )NZbadnetloclessFé   r   )ÚassertRaisesÚ
ValueErrorr   r   r   r   r   Ú!test_register_no_netloc_with_port4   s    z8TestSchemeRegistration.test_register_no_netloc_with_portc              	   C   sV   |   t¡� tdttd ƒd� W 5 Q R X |   t¡� tdtttƒ ƒd� W 5 Q R X d S )NZ	badnetlocr*   ©r.   r/   r   r   ÚboolÚobjectr   r   r   r   Útest_invalid_uses_netloc9   s    z/TestSchemeRegistration.test_invalid_uses_netlocc              	   C   s.   |   t¡� tdtttƒ ƒd� W 5 Q R X d S )NZlolr*   r1   r   r   r   r   Ú!test_register_invalid_uses_netloc@   s    z8TestSchemeRegistration.test_register_invalid_uses_netlocc              	   C   s.   |   t¡� tdtttƒ ƒd� W 5 Q R X d S )NZnoper   r1   r   r   r   r   Útest_register_invalid_portE   s    z1TestSchemeRegistration.test_register_invalid_portc                 C   sL   t ddd� t d¡}t d¡}| d¡dgks4t‚| d¡dgksHt‚d S )	NZkeepplusF)Zquery_plus_is_spacezkeepplus://example.com/?q=a+bzhttps://example.com/?q=a+bÚqza+bza b)r   r
   r    Úgetr!   )r   Zplus_is_not_spaceZplus_is_spacer   r   r   Ú"test_register_no_quote_plus_schemeJ   s    ÿ
z9TestSchemeRegistration.test_register_no_quote_plus_schemeN)Ú__name__Ú
__module__Ú__qualname__r   r   r)   r,   r0   r4   r5   r6   r9   r   r   r   r   r      s   r   N)Ú
__future__r   Útypingr   Ú r   Úcommonr   r   r	   r
   r   r   r   r   r   Ú<module>   s
   