U
    ¶[ÖeÄ  ã                   @   s‚   d Z eZddlZddlZddlZddlZejd dkZer@e	Z
neZ
ddlZddlmZmZ G dd„ dejƒZG dd„ deƒZdS )	z Tests for the atomic file cache.é    Né   )ÚAtomicFileCacheÚsafenamec                       s°   e Zd ZdZejZdZe d¡Z	‡ fd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dd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Z‡  ZS )$ÚTestFileCacheInterfaceúTests for ``AtomicFileCache``.s	   paÉªÎ¸É™núutf-8c                    s   t t| ƒ ¡  t ¡ | _d S ©N)Úsuperr   ÚsetUpÚtempfileÚmkdtempÚ	cache_dir©Úself©Ú	__class__© úo/var/www/html/services/stratfitenv/lib/python3.8/site-packages/lazr/restfulclient/tests/test_atomicfilecache.pyr
   /   s    zTestFileCacheInterface.setUpc                    s   t  | j¡ tt| ƒ ¡  d S r   )ÚshutilÚrmtreer   r	   r   ÚtearDownr   r   r   r   r   3   s    zTestFileCacheInterface.tearDownc                 C   s   |   | jt¡S )z*Make a FileCache-like object to be tested.)Úfile_cache_factoryr   r   r   r   r   r   Úmake_file_cache7   s    z&TestFileCacheInterface.make_file_cachec                 C   s   |   ¡ }|  d | d¡¡ d S ©NZnonexistent)r   ÚassertIsÚget©r   Úcacher   r   r   Útest_get_non_existent_key;   s    z0TestFileCacheInterface.test_get_non_existent_keyc                 C   s*   |   ¡ }| dd¡ |  d| d¡¡ d S ©NÚkeyó   value©r   ÚsetÚassertEqualr   r   r   r   r   Útest_set_key@   s    z#TestFileCacheInterface.test_set_keyc                 C   s6   |   ¡ }| dd¡ | dd¡ |  d| d¡¡ d S )Nr    r!   s	   new-valuer"   r   r   r   r   Útest_set_twice_overridesF   s    z/TestFileCacheInterface.test_set_twice_overridesc                 C   s(   |   ¡ }| d¡ |  d | d¡¡ d S r   )r   Údeleter   r   r   r   r   r   Útest_delete_absent_keyM   s    
z-TestFileCacheInterface.test_delete_absent_keyc                 C   s4   |   ¡ }| dd¡ | d¡ |  d | d¡¡ d S r   )r   r#   r'   r   r   r   r   r   r   Útest_delete_keyS   s    
z&TestFileCacheInterface.test_delete_keyc                 C   s   |   ¡ }|  t|jd¡ d S ©Né*   )r   ÚassertRaisesÚ	TypeErrorr   r   r   r   r   Útest_get_non_string_key[   s    z.TestFileCacheInterface.test_get_non_string_keyc                 C   s   |   ¡ }|  t|jd¡ d S r*   )r   r,   r-   r'   r   r   r   r   Útest_delete_non_string_key`   s    z1TestFileCacheInterface.test_delete_non_string_keyc                 C   s   |   ¡ }|  t|jdd¡ d S )Nr+   z
the answer)r   r,   r-   r#   r   r   r   r   Útest_set_non_string_keye   s    z.TestFileCacheInterface.test_set_non_string_keyc                 C   s0   |   ¡ }|  t|jdd¡ |  d| d¡¡ d S )NÚanswerr+   ó    )r   r,   r-   r#   r$   r   r   r   r   r   Útest_set_non_string_valuej   s    z0TestFileCacheInterface.test_set_non_string_valuec                 C   s    |   ¡ }|  d | | j¡¡ d S r   )r   r   r   Úunicode_textr   r   r   r   Útest_get_unicoder   s    z'TestFileCacheInterface.test_get_unicodec                 C   s.   |   ¡ }| | jd¡ |  d| | j¡¡ d S ©Nr!   )r   r#   r4   r$   r   r   r   r   r   Útest_set_unicode_keysw   s    z,TestFileCacheInterface.test_set_unicode_keysc                 C   s,   |   ¡ }trtnt}|  ||jd| j¡ d S ©Nr    )r   ÚPY3r-   ÚUnicodeEncodeErrorr,   r#   r4   )r   r   Úerrorr   r   r   Útest_set_unicode_value|   s       ÿz-TestFileCacheInterface.test_set_unicode_valuec                 C   s:   |   ¡ }| | jd¡ | | j¡ |  d | | j¡¡ d S r6   )r   r#   r4   r'   r   r   r   r   r   r   Útest_delete_unicodeƒ   s    z*TestFileCacheInterface.test_delete_unicode)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úhttplib2Ú	FileCacher   Zunicode_bytesÚdecoder4   r
   r   r   r   r%   r&   r(   r)   r.   r/   r0   r3   r5   r7   r<   r=   Ú__classcell__r   r   r   r   r   '   s(   
r   c                   @   s@   e Zd ZdZeZedd„ ƒZdd„ Zdd„ Z	dd	„ Z
d
d„ ZdS )ÚTestAtomicFileCacher   c                 C   s   t | tƒr|  d¡} tj|  S )Nr   )Ú
isinstanceÚbinary_typerD   r   ZTEMPFILE_PREFIX)Úxr   r   r   Úprefix_safename   s    

z#TestAtomicFileCache.prefix_safenamec                 C   s0   |   ¡ }|  t|jdd¡ |  d | d¡¡ d S )Nr1   r+   )r   r,   r-   r#   r   r   r   r   r   r   r3   –   s    z-TestAtomicFileCache.test_set_non_string_valuec                 C   s&   | j }t| j|ƒ}|  t|jd¡ d S r8   )rJ   r   r   r,   Ú
ValueErrorr   ©r   r   r   r   r   r   Útest_bad_safename_get¡   s    z)TestAtomicFileCache.test_bad_safename_getc                 C   s(   | j }t| j|ƒ}|  t|jdd¡ d S r   )rJ   r   r   r,   rK   r#   rL   r   r   r   Útest_bad_safename_set¦   s    z)TestAtomicFileCache.test_bad_safename_setc                 C   s&   | j }t| j|ƒ}|  t|jd¡ d S r8   )rJ   r   r   r,   rK   r'   rL   r   r   r   Útest_bad_safename_delete«   s    z,TestAtomicFileCache.test_bad_safename_deleteN)r>   r?   r@   rA   r   r   ÚstaticmethodrJ   r3   rM   rN   rO   r   r   r   r   rF   ‹   s   
rF   )rA   ÚtypeZ__metaclass__r   r   ZunittestÚsysÚversion_infor9   ÚbytesrH   ÚstrrB   Zlazr.restfulclient._browserr   r   ZTestCaser   rF   r   r   r   r   Ú<module>   s   d