U
    /e|                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ dd Zej	
deejdd g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	jej	ejdd Zej	jej	ejej	jejdkd d!d"d# ZdS )$    N)File)
utils_testc                 C   s   t | }t| dS )z,
    Test mapping interface for File().
    N)r   r   check_mappingtmp_pathcheck_fd_leaksz r	   8/tmp/pip-unpacked-wheel-z3s6s24u/zict/tests/test_file.pytest_mapping   s    r   dirtypec                 C   s   | S Nr	   )xr	   r	   r
   <lambda>       r   c              	   C   s   t || }|rtd|d< t| dgks0tt| d d}| dksPtW 5 Q R X d|ksft|d }t|ts|t|dkstd S N   123r   x#0rb)r   AssertionErroroslistdiropenread
isinstance	bytearray)r   r   r   r   foutr	   r	   r
   test_implementation   s    r   c                 C   s   t | dd}|rttd}d|ks(t||d< t| dgksDtd|ksPt|d }|dksdt|d |d< |dks|td S )	NT)Zmemmapr   r   r      r   s   223)r   r   
memoryviewr   r   )r   r   r   mvZmv2r	   r	   r
   test_memmap_implementation#   s    r"   c                 C   s6   t | }t|t|  kr,d|  dks2n td S )Nz<File: z, 0 elements>)r   strreprr   r   r	   r	   r
   test_str3   s    r%   c              	   C   s*   t | }tt d|d< W 5 Q R X d S )N{   r   )r   pytestraises	TypeErrorr   r	   r	   r
   test_setitem_typeerror8   s    r*   c              	   C   sJ   t | }d|d< W 5 Q R X t| d d}| dks<tW 5 Q R X d S r   )r   r   r   r   )r   r   r   fhr	   r	   r
   test_contextmanager>   s    
r,   c                 C   sx   t | }d|d< t| dgks$t|d= t| g ks<td|d< t| dgksXtd|d< t| dgksttd S )Nr   r   r   zx#1zx#2)r   r   r   r   r   r	   r	   r
   test_delitemF   s    r-   c              	   C   s*   t | }tt |d  W 5 Q R X d S )Nr   )r   r'   r(   KeyErrorr   r	   r	   r
   test_missing_keyU   s    r/   c                 C   sz  t | }d}tdd|D ]Z}ddgdd t|td|| D  }tt ||  W 5 Q R X d||< || dks~tt||gkstt|	 |gkstt|
 |dfgkstt| dgkstt | }|| dkstt||gkstt|	 |gkstt|
 |dfgks6tt| dgksNt~||= tt ||  W 5 Q R X qd S )	N   r       Zfoo_c                 S   s   g | ]}t |qS r	   )chr).0ir	   r	   r
   
<listcomp>b   s     z(test_arbitrary_chars.<locals>.<listcomp>s   foo)r   rangejoinminr'   r(   r.   r   listkeysitemsvalues)r   r   r   chunkr5   keyzzr	   r	   r
   test_arbitrary_chars\   s,    *rA   c                 C   s(   t | }ddg|d< |d dks$td S )Nr   s   4567r   s   1234567)r   r   r   r	   r	   r
   test_write_list_of_bytesy   s    rB   c                 C   s    t | }t| t| d S r   )r   r   Zcheck_bad_key_typesZcheck_bad_value_typesr   r	   r	   r
   test_bad_types   s    
rC   c                 C   s    t | }t| t| d S r   )r   r   Zcheck_different_keys_threadsafer   r   r   r	   r	   r
   %test_stress_different_keys_threadsafe   s    
rE   win32zCan't delete file with open fd)reasonc                 C   s    t | }t| t| d S r   )r   r   Zcheck_same_key_threadsafer   rD   r	   r	   r
   test_stress_same_key_threadsafe   s    
rH   )r   pathlibsysr'   Zzictr   Z
zict.testsr   r   markZparametrizer#   Pathr   r"   r%   r*   r,   r-   r/   rA   rB   rC   ZstressrepeatZREPEAT_STRESS_TESTSrE   ZskipifplatformrH   r	   r	   r	   r
   <module>   s0   
