o
    jð[Ä  ã                   @   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/usr/lib/python3/dist-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 ©NÚnonexistent)r   ÚassertIsÚget©r   Úcacher   r   r   Útest_get_non_existent_key;   ó   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   ó   |   ¡ }|  t|jd¡ d S ©Né*   )r   ÚassertRaisesÚ	TypeErrorr   r   r   r   r   Útest_get_non_string_key[   ó   z.TestFileCacheInterface.test_get_non_string_keyc                 C   r,   r-   )r   r/   r0   r)   r   r   r   r   Útest_delete_non_string_key`   r2   z1TestFileCacheInterface.test_delete_non_string_keyc                 C   s   |   ¡ }|  t|jdd¡ d S )Nr.   z
the answer)r   r/   r0   r%   r   r   r   r   Útest_set_non_string_keye   r    z.TestFileCacheInterface.test_set_non_string_keyc                 C   s0   |   ¡ }|  t|jdd¡ |  d| d¡¡ d S )NÚanswerr.   ó    )r   r/   r0   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%   r8   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   ÚPY3r0   ÚUnicodeEncodeErrorr/   r%   r8   )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 r:   )r   r%   r8   r)   r   r   r   r   r   r   Útest_delete_unicodeƒ   s   z*TestFileCacheInterface.test_delete_unicode)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úhttplib2Ú	FileCacher   Úunicode_bytesÚdecoder8   r
   r   r   r   r'   r(   r*   r+   r1   r3   r4   r7   r9   r;   r@   rA   Ú__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_typerI   r   ÚTEMPFILE_PREFIX)Úxr   r   r   Úprefix_safename   s   


z#TestAtomicFileCache.prefix_safenamec                 C   s0   |   ¡ }|  t|jdd¡ |  d | d¡¡ d S )Nr5   r.   )r   r/   r0   r%   r   r   r   r   r   r   r7   –   s   z-TestAtomicFileCache.test_set_non_string_valuec                 C   ó&   | j }t| j|ƒ}|  t|jd¡ d S r<   )rP   r   r   r/   Ú
ValueErrorr   ©r   r   r   r   r   r   Útest_bad_safename_get¡   ó   z)TestAtomicFileCache.test_bad_safename_getc                 C   s(   | j }t| j|ƒ}|  t|jdd¡ d S r!   )rP   r   r   r/   rR   r%   rS   r   r   r   Útest_bad_safename_set¦   s   z)TestAtomicFileCache.test_bad_safename_setc                 C   rQ   r<   )rP   r   r   r/   rR   r)   rS   r   r   r   Útest_bad_safename_delete«   rU   z,TestAtomicFileCache.test_bad_safename_deleteN)rB   rC   rD   rE   r   r   ÚstaticmethodrP   r7   rT   rV   rW   r   r   r   r   rK   ‹   s    
rK   )rE   ÚtypeÚ__metaclass__r   r   ÚunittestÚsysÚversion_infor=   ÚbytesrM   ÚstrrF   Úlazr.restfulclient._browserr   r   ÚTestCaser   rK   r   r   r   r   Ú<module>   s   d