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 )NZdeltronTi  uses_netlocdefault_portzdeltron://example.comzdeltron:zexample.com)Zhostzdeltron://example.com:3030Znonetroni  r   schemeznonetron://example.com)r   r	   	from_textr   Zportr   replaceto_text)r   Zu1Zu2Z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 )NZ	noloctronFr   r   )Z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 )NZ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 )NZ	badnetlocr$   r(   r)   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 )NZlolr$   r+   r   r   r   r   !test_register_invalid_uses_netloc@      "z8TestSchemeRegistration.test_register_invalid_uses_netlocc                 C   r/   )NZnoper   r+   r   r   r   r   test_register_invalid_portE   r1   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 )	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   get)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&   r*   r.   r0   r2   r5   r   r   r   r   r      s    r   N)Z
__future__r   typingr    r   commonr   r   r	   r
   r   r   r   r   r   <module>   s   