o
    G_                     @   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   I/usr/lib/python3/dist-packages/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J |jdksJ |jdu s!J td}|jdd}| dks4J td	}| dksAJ t d
dd td
d}|jdd}| dksZJ d S )NdeltronTi  uses_netlocdefault_portzdeltron://example.comzdeltron:zexample.com)hostzdeltron://example.com:3030nonetroni  r   schemeznonetron://example.com)r   r	   	from_textr!   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sJ d S )N	noloctronFr   r    )examplepath)r.   znoloctron:example/path)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 d    d S 1 sw   Y  d S )NbadnetloclessF   r   )assertRaises
ValueErrorr   r   r   r   r   !test_register_no_netloc_with_port4   s   "z8TestSchemeRegistration.test_register_no_netloc_with_portc                 C   s   |  t tdttd d W d    n1 sw   Y  |  t tdttt d W d    d S 1 s9w   Y  d S )N	badnetlocr,   r2   r3   r   r   boolobjectr   r   r   r   test_invalid_uses_netloc9   s   "z/TestSchemeRegistration.test_invalid_uses_netlocc                 C   D   |  t tdttt d W d    d S 1 sw   Y  d S )Nlolr,   r6   r   r   r   r   !test_register_invalid_uses_netloc@      "z8TestSchemeRegistration.test_register_invalid_uses_netlocc                 C   r:   )Nnoper   r6   r   r   r   r   test_register_invalid_portE   r=   z1TestSchemeRegistration.test_register_invalid_portc                 C   sL   t ddd td}td}|ddgksJ |ddgks$J d S )	NkeepplusF)query_plus_is_spacezkeepplus://example.com/?q=a+bzhttps://example.com/?q=a+bqza+bza b)r   r
   r"   get)r   plus_is_not_space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/   r4   r9   r<   r?   rF   r   r   r   r   r      s    r   N)
__future__r   typingr    r   commonr   r   r	   r
   r   r   r   r   r   <module>   s   