U
    ^»{jŸ"  ã                   @   s–   d dl Z d dlZd dlZddlmZ d dlZddlmZ G dd„ dƒZ	G dd„ dƒZ
G d	d
„ d
ejƒZG dd„ de	ee jƒZG dd„ de
ee jƒZdS )é    Né   )Úwarnings_helper)Úutilc                   @   s   e Zd ZdZdZdS )ÚStringAnchorMixinÚdata01Údata02N)Ú__name__Ú
__module__Ú__qualname__Úanchor01Úanchor02© r   r   úh/var/www/html/bwave/python/venv/lib/python3.8/site-packages/importlib_resources/tests/test_functional.pyr      s   r   c                   @   s$   e Zd Zedd„ ƒZedd„ ƒZdS )ÚModuleAnchorMixinc                 C   s
   t  d¡S )Nr   ©Ú	importlibÚimport_module©Úselfr   r   r   r      s    zModuleAnchorMixin.anchor01c                 C   s
   t  d¡S ©Nr   r   r   r   r   r   r      s    zModuleAnchorMixin.anchor02N)r   r	   r
   Úpropertyr   r   r   r   r   r   r      s   
r   c                       s€   e Zd Z‡ f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d„ Zejed�dd„ ƒZdd„ Z‡  ZS )ÚFunctionalAPIBasec                    s   t ƒ  ¡  |  d¡ d S r   )ÚsuperÚsetUpZload_fixturer   ©Ú	__class__r   r   r       s    
zFunctionalAPIBase.setUpc              
   c   s,   dD ]"}| j |d�� |V  W 5 Q R X qdS )zAYield various names of a text file in anchor02, each in a subTest))ÚsubdirectoryÚ	subsubdirúresource.txt)z#subdirectory/subsubdir/resource.txt)zsubdirectory/subsubdirr   )Ú
path_partsN)ÚsubTest©r   r   r   r   r   Ú_gen_resourcetxt_path_parts$   s    z-FunctionalAPIBase._gen_resourcetxt_path_partsc                 C   s   |   |t|ƒ d… |¡ dS )zqAssert that `string` ends with `suffix`.

        Used to ignore an architecture-specific UTF-16 byte-order mark.N)ÚassertEqualÚlen)r   ÚstringÚsuffixr   r   r   ÚassertEndsWith.   s    z FunctionalAPIBase.assertEndsWithc              	   C   s  |   t | jd¡d¡ |   tj| jddddd�d¡ |  ¡ D ]$}|   tj| jf|žd	diŽd¡ q<|  t¡� t | j¡ W 5 Q R X |  t¡� t | jd
¡ W 5 Q R X |  t¡� t | jd¡ W 5 Q R X |   tj| jddd�d¡ |  	tj| jddd�d 
d¡jdd�¡ d S )Nú
utf-8.fileúHello, UTF-8 world!
r   r   r   úutf-8©Úencodingú
a resourcer,   úno-such-fileúutf-16.fileúbinary.fileÚlatin1ú Úbackslashreplace©ÚerrorsúHello, UTF-16 world!
ú	utf-16-le)r#   Ú	resourcesÚ	read_textr   r   r"   ÚassertRaisesÚOSErrorÚUnicodeDecodeErrorr'   ÚencodeÚdecoder!   r   r   r   Útest_read_text4   sb    þûø
ÿþýú
ýúý
ÿúz FunctionalAPIBase.test_read_textc                 C   sB   |   t | jd¡d¡ |  ¡ D ]}|   tj| jf|žŽ d¡ qd S ©Nr(   s   Hello, UTF-8 world!
s
   a resource)r#   r8   Úread_binaryr   r"   r   r!   r   r   r   Útest_read_binaryg   s    þþz"FunctionalAPIBase.test_read_binaryc              
   C   sX  t  | jd¡�}|  | ¡ d¡ W 5 Q R X |  ¡ D ]8}t j| jf|žddiŽ�}|  | ¡ d¡ W 5 Q R X q2|  t¡� t  | j¡ W 5 Q R X |  t¡� t  | jd¡ W 5 Q R X t  | jd¡�$}|  t	¡� | ¡  W 5 Q R X W 5 Q R X t j| jdd	d
��}|  | ¡ d¡ W 5 Q R X t j| jddd��$}|  
| ¡ d d¡jdd�¡ W 5 Q R X d S )Nr(   r)   r,   r*   r-   r.   r/   r0   r1   r+   r2   r3   r4   r6   r7   )r8   Ú	open_textr   r#   Úreadr"   r   r:   r;   r<   r'   r=   r>   ©r   Úfr   r   r   r   Útest_open_textr   sL    ÿþýýý
ÿþz FunctionalAPIBase.test_open_textc              
   C   sj   t  | jd¡�}|  | ¡ d¡ W 5 Q R X |  ¡ D ]2}t j| jf|žŽ �}|  | ¡ d¡ W 5 Q R X q2d S r@   )r8   Úopen_binaryr   r#   rD   r"   r   rE   r   r   r   Útest_open_binary—   s    ÿþz"FunctionalAPIBase.test_open_binaryc              
   C   s”   t  | jd¡�2}tt|ƒdd��}|  | ¡ d¡ W 5 Q R X W 5 Q R X t  | j¡�8}ttj |d¡dd��}|  | ¡ d¡ W 5 Q R X W 5 Q R X d S )Nr(   r*   r+   r)   )	r8   Úpathr   ÚopenÚstrr#   rD   ÚosÚjoin)r   rJ   rF   r   r   r   Ú	test_path¡   s    $zFunctionalAPIBase.test_pathc                 C   st   t j}|  || jdƒ¡ |  || jdƒ¡ |  || jƒ¡ |  || jdƒ¡ |  ¡ D ]}|  || jf|žŽ ¡ qTd S )Nr(   Zno_such_filer   )r8   Úis_resourceZ
assertTruer   ZassertFalser"   r   )r   rP   r   r   r   r   Útest_is_resource©   s    z"FunctionalAPIBase.test_is_resourcec                 C   s  t  dtf¡� t | j¡}W 5 Q R X |  t|ƒddddh¡ |  t	¡�2 t  dtf¡� t
t | jd¡ƒ W 5 Q R X W 5 Q R X |  ¡ D ]J}|  t	¡�6 t  dtf¡� t
tj| jf|žŽ ƒ W 5 Q R X W 5 Q R X qˆt  dtf¡� t | jd¡}W 5 Q R X |  t|ƒdh¡ d S )Nz.*contents.*r(   r/   r0   r   )r   Zcheck_warningsÚDeprecationWarningr8   Úcontentsr   ZassertGreaterEqualÚsetr:   r;   Úlistr"   )r   Úcr   r   r   r   Útest_contents²   s.    
þþ&þ,þzFunctionalAPIBase.test_contents)Úcategoryc                 C   s    t jt jt jt jt jt jt jfD ]z}| j|d��d |  	t
¡� |d ƒ W 5 Q R X |  	t
tf¡� |dƒ W 5 Q R X |  	t¡� |dƒ W 5 Q R X W 5 Q R X q d S )N©ÚfunciÒ  z$missing module$)r8   r9   rA   rC   rH   rJ   rP   rS   r    r:   Ú	TypeErrorÚAttributeErrorÚModuleNotFoundError©r   rZ   r   r   r   Útest_common_errorsÌ   s    ù	z$FunctionalAPIBase.test_common_errorsc                 C   sT   t jt jfD ]B}| j|d��, |  t¡� || jdddƒ W 5 Q R X W 5 Q R X qd S )NrY   r   r   r   )r8   r9   rC   r    r:   r[   r   r^   r   r   r   Útest_text_errorsâ   s    þüz"FunctionalAPIBase.test_text_errors)r   r	   r
   r   r"   r'   r?   rB   rG   rI   rO   rQ   rW   r   Zignore_warningsrR   r_   r`   Ú__classcell__r   r   r   r   r      s   
3%
	

r   c                   @   s   e Zd ZdS )ÚFunctionalAPITest_StringAnchorN©r   r	   r
   r   r   r   r   rb   ò   s   rb   c                   @   s   e Zd ZdS )ÚFunctionalAPITest_ModuleAnchorNrc   r   r   r   r   rd   ú   s   rd   )ZunittestrM   r   Zcompat.py39r   Zimportlib_resourcesr8   Ú r   r   r   Z	DiskSetupr   ZTestCaserb   rd   r   r   r   r   Ú<module>   s&   
 T
ý
ý