o
    Ïù^è  ã                   @   s\   d Z eZdgZddlmZ ddlZddlmZm	Z	m
Z
mZmZ G dd„ dejƒZdd	„ ZdS )
zUnit tests.Ú
test_suiteé    )ÚdefaultdictN)ÚInvalidURIErrorÚURIÚfind_uris_in_textÚmergeÚremove_dot_segmentsc                   @   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 )ÚURITestCasec                 C   s|   |   ttdƒƒd¡ |   ttdƒƒd¡ |   ttdƒƒd¡ |   ttdƒƒd¡ |   ttd	ƒƒd¡ |   ttd
ƒƒd¡ d S )Nú"eXAMPLE://a/./b/../b/%63/%7bfoo%7dúexample://a/b/c/%7Bfoo%7Dúhttp://www.EXAMPLE.com/úhttp://www.example.com/úhttp://www.gnome.org/%7ejamesh/úhttp://www.gnome.org/~jamesh/úhttp://example.comúhttp://example.com/úhttp://example.com:/úhttp://example.com:80/)ÚassertEqualÚstrr   ©Úself© r   ú9/usr/lib/python3/dist-packages/lazr/uri/tests/test_uri.pyÚtest_normalisation!   s$   ÿÿÿÿÿÿzURITestCase.test_normalisationc              
   C   s”   ddgddgddgg d¢g}t tƒ}|D ]}|D ]}|tt|ƒƒ  |¡ qq|  t|ƒt|ƒ¡ |D ]}|  t|ƒt|tt|d ƒƒ ƒ¡ q3d S )	Nr
   r   r   r   r   r   )r   r   r   r   r   )r   ÚlistÚhashr   Úappendr   ÚlenÚsorted)r   Ú
uri_groupsÚ
uri_hashesÚ	uri_groupÚurir   r   r   Útest_hashable4   s.   ÿÿÿùÿþÿzURITestCase.test_hashablec                 C   s   |   ttd¡ d S )Nu   http://â‚¬xample.com/)ÚassertRaisesr   r   r   r   r   r   Útest_invalid_uriK   s   zURITestCase.test_invalid_uric                 C   s\   |   tdddd�d¡ |   tdddd�d¡ |   tdddd�d¡ |   td	ddd�d¡ d S )
NÚ ÚfooT)Úhas_authorityz/fooFz/a/b/cz/a/b/fooz/a/b/)r   r   r   r   r   r   Ú
test_mergeN   s   ÿÿzURITestCase.test_mergec                 C   s$   |   tdƒd¡ |   tdƒd¡ d S )Nz/a/b/c/./../../gz/a/gzmid/content=5/../6zmid/6)r   r   r   r   r   r   Útest_remove_dot_segmentsX   s   z$URITestCase.test_remove_dot_segmentsc                    sˆ  t dƒ‰ ‡ fdd„}|  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd	¡ |  |d
ƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd ¡ |  |d!ƒd ¡ |  |d"ƒd#¡ |  |d$ƒd#¡ |  |d%ƒd&¡ |  |d'ƒd(¡ |  |d)ƒd(¡ |  |d*ƒd¡ d S )+Núhttp://a/b/c/d;p?qc                    ó   t ˆ  | ¡ƒS ©N©r   Úresolve©Úrelative©Úbaser   r   r0   `   ó   z3URITestCase.test_normal_resolution.<locals>.resolvezg:hÚgzhttp://a/b/c/gz./gzg/úhttp://a/b/c/g/z/gú
http://a/gz//gz	http://g/z?yzhttp://a/b/c/d;p?yzg?yzhttp://a/b/c/g?yz#szhttp://a/b/c/d;p?q#szg#szhttp://a/b/c/g#szg?y#szhttp://a/b/c/g?y#sz;xzhttp://a/b/c/;xzg;xzhttp://a/b/c/g;xzg;x?y#szhttp://a/b/c/g;x?y#sr'   Ú.zhttp://a/b/c/z./z..zhttp://a/b/z../z../gúhttp://a/b/gz../..z	http://a/z../../z../../g©r   r   ©r   r0   r   r3   r   Útest_normal_resolution]   s2   z"URITestCase.test_normal_resolutionc                    s8  t dƒ‰ ‡ fdd„}|  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |d	ƒd
¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd ¡ |  |d!ƒd"¡ |  |d#ƒd$¡ d S )%Nr,   c                    r-   r.   r/   r1   r3   r   r   r0   ~   r5   z5URITestCase.test_abnormal_resolution.<locals>.resolvez
../../../gr8   z../../../../gz/./gz/../gzg.zhttp://a/b/c/g.z.gzhttp://a/b/c/.gzg..zhttp://a/b/c/g..z..gzhttp://a/b/c/..gz./../gr:   z./g/.r7   zg/./hzhttp://a/b/c/g/hzg/../hzhttp://a/b/c/hz	g;x=1/./yzhttp://a/b/c/g;x=1/yz
g;x=1/../yzhttp://a/b/c/yzg?y/./xzhttp://a/b/c/g?y/./xzg?y/../xzhttp://a/b/c/g?y/../xzg#s/./xzhttp://a/b/c/g#s/./xzg#s/../xzhttp://a/b/c/g#s/../xr;   r<   r   r3   r   Útest_abnormal_resolution{   s(   z$URITestCase.test_abnormal_resolutionc                 C   ó<   t dƒ}|  | d¡¡ |  | d¡¡ |  | d¡¡ d S )Núhttp://code.launchpad.dev/foozcode.launchpad.devzlaunchpad.devr'   )r   Ú
assertTrueÚunderDomain©r   r#   r   r   r   Ú"test_underDomain_matches_subdomain—   ó   z.URITestCase.test_underDomain_matches_subdomainc                 C   r?   )Nr@   zbeta.code.launchpad.devz
google.comzunchpad.dev)r   ÚassertFalserB   rC   r   r   r   Ú+test_underDomain_doesnt_match_non_subdomainŸ   rE   z7URITestCase.test_underDomain_doesnt_match_non_subdomainN)Ú__name__Ú
__module__Ú__qualname__r   r$   r&   r*   r+   r=   r>   rD   rG   r   r   r   r   r	      s    
r	   c                   C   s   t  ¡  t¡S r.   )ÚunittestÚ
TestLoaderÚloadTestsFromNamerH   r   r   r   r   Úadditional_tests¨   r5   rN   )Ú__doc__ÚtypeÚ__metaclass__Ú__all__Úcollectionsr   rK   Úlazr.urir   r   r   r   r   ÚTestCaser	   rN   r   r   r   r   Ú<module>   s   ÿ 
