o
    
i                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d+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g dfdd Zg dfd!d"Zg dfd#d$Zd%d& Zd'd( Zd)d* ZdS ),    N)OrderedDict)BytesIO)packbunpackbUnpackerPackerFc                 C   s    t t| |d}|| ksJ d S )Nuse_listr   r   )datar	   re r   Q/home/ubuntu/.local/lib/python3.10/site-packages/srsly/tests/msgpack/test_pack.pycheck   s   r   c                  C   s   g 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id} | D ]}t | qFd S )Nr                  i  i   l    l        iiiii il     l          ?       as   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTFr   )r   )r   Ni   r   	test_datatdr   r   r   testPack   s   	
 "
r   c                  C   sl   dddgdg} | D ]*}t t|ddd}||ksJ t }||}tt|ddd }||ks3J q	d S )	N abcddefgh   Русский текстr   F)r	   rawr"   r	   )r   r   r   packr   r   unpack)r   r   r   packerr   r   r   r   testPackUnicode4   s   
r'   c               
   C   s   t tdddddd} | dksJ t tdddddd} | dks"J t tdgddddd} | dgks5J z	tddd W d S  tyX } ztt| W Y d }~d S d }~ww )	Nr   zutf-32)encodingr   )r	   r(   r   r    r!   )r   r   LookupErrorpytestxfailstr)r   er   r   r   testPackUTF32?   s   r.   c                  C   s   g d} | D ]}t | qd S )N)r      abcd)   defghr   r   r   r   r   testPackBytesQ   s   
r1   c                  C   s.   t dt dt dfg} | D ]}t| qd S )Nr   r/   r0   )	bytearrayr   r   r   r   r   testPackByteArraysW   s   
r3   c                  C   s$   t tddddd} | dksJ d S )N   abcdefzutf-8ignorer   )r(   unicode_errorsr	   abcdefr
   r   r   r   r   testIgnoreUnicodeErrors]   s   r9   c                   C   sB   t t ttdddd W d    d S 1 sw   Y  d S )Nr4   Fr   r#   )r*   raisesUnicodeDecodeErrorr   r   r   r   r   r   testStrictUnicodeUnpackd   s   "r<   c                   C   s>   t t tdddd W d    d S 1 sw   Y  d S )Nu   abcídefasciistrictr(   r6   )r*   r:   UnicodeEncodeErrorr   r   r   r   r   testStrictUnicodePacki   s   "rA   c                  C   s(   t tddddddd} | dksJ d S )	Nu   abcФФФdefr=   r5   r?   Fr   r#   r7   r
   r8   r   r   r   testIgnoreErrorsPackn   s   rB   c                  C   s"   t tdd dd} | dksJ d S )Ns   abcr   )r(   r	   r
   r8   r   r   r   testDecodeBinaryw   s   rC   c                   C   sL   t ddddttdd ksJ t ddddttdd ks$J d S )	Nr   T)use_single_float   z>fF   z>d)r   structr$   r,   r   r   r   r   testPackFloat|   s   $(rH   )r      2   i  c                 C   s   t  }t }| D ]}||| t|D ]
}||| qq|d t|dd}| D ]}| t	t|ks=J q/d S )Nr   r   r   )
r   r   writepack_array_headerranger$   seekr   r%   listsizesbior&   sizeiunpackerr   r   r   testArraySize   s   
rV   c                 C   s   t dd}| D ]}|| t|D ]}|| qqt| }t|dd}| D ]}| tt|ks7J q)|	  | dksDJ d S )NF)	autoresetr   r   r   )
r   rL   rM   r$   r   bytesr   r%   rO   reset)rQ   r&   rS   rT   rR   rU   r   r   r   test_manualreset   s   

rZ   c                 C   s   t  }t }| D ]#}||| t|D ]}||| |||d  qq|d t|}| D ]}| t	dd t|D ksJJ q7d S )N   r   c                 s   s    | ]	}||d  fV  qdS )r[   Nr   ).0rT   r   r   r   	<genexpr>   s    ztestMapSize.<locals>.<genexpr>)
r   r   rK   pack_map_headerrM   r$   rN   r   r%   dictrP   r   r   r   testMapSize   s   
$r`   c                  C   sR   g d} t | }tt|ddt| ksJ dd }tt||dd| ks'J d S )N))s   oner   )s   twor[   )s   three   )s   four   r   r   c                 S   s   t | S )N)rO   )seqr   r   r   	pair_hook   s   ztest_odict.<locals>.pair_hook)object_pairs_hookr	   )r   r   r   r_   )rc   odrd   r   r   r   
test_odict   s
   rg   c                  C   s4   g d} t  }|| }t|td}| |ksJ d S )N))r   r   )r[      b)s   foos   bar)re   )r   pack_map_pairsr   rO   )pairlistr&   packedunpackedr   r   r   test_pairlist   s
   
rm   c                  C   sV   t ddd} | ddg t }||   | }tddgdd}||ks)J d S )Nr   T)rW   use_bin_typer   r[   )rn   )r   r$   r   rK   	getbuffergetvaluer   )r&   strmwrittenexpectedr   r   r   test_get_buffer   s   rt   )F)rG   r*   collectionsr   ior   srsly.msgpackr   r   r   r   r   r   r'   r.   r1   r3   r9   r<   rA   rB   rC   rH   rV   rZ   r`   rg   rm   rt   r   r   r   r   <module>   s.    
'	