U
    Æ½„b0  ã                   @   sš   d dl mZ d dlZd dlZd dlmZ d dlZd dlmZmZmZ d dl	m
Z
mZmZ dd„ Zdd	„ ZG d
d„ dƒZG dd„ deƒZG dd„ deƒZdS )é    )Úwith_statementN)ÚTestCase)ÚencoderÚdecoderÚscanner)ÚPY3Ú	long_typeÚbc                   C   s
   t jd k	S ©N)r   Úc_make_encoder© r   r   úB/tmp/pip-unpacked-wheel-9yxrzpkm/simplejson/tests/test_speedups.pyÚhas_speedups   s    r   c                    s   ‡ fdd„}|S )Nc                     s6   t ƒ s,ttdƒrt d¡‚ntj d¡ d S ˆ | |ŽS )NÚSkipTestzC Extension not available)r   ÚhasattrÚunittestr   ÚsysÚstdoutÚwrite)ÚargsÚkwargs©Úfuncr   r   Úwrapper   s    
z)skip_if_speedups_missing.<locals>.wrapperr   )r   r   r   r   r   Úskip_if_speedups_missing   s    	r   c                   @   s   e Zd Zdd„ ZeZdS )ÚBadBoolc                 C   s   dd  d S ©Né   r   r   ©Úselfr   r   r   Ú__bool__   s    zBadBool.__bool__N)Ú__name__Ú
__module__Ú__qualname__r    Ú__nonzero__r   r   r   r   r      s   r   c                   @   s$   e Zd Zedd„ ƒZedd„ ƒZdS )Ú
TestDecodec                 C   s   |   ttjd¡ d S )Nr   )ÚassertRaisesÚAttributeErrorr   Úc_make_scannerr   r   r   r   Útest_make_scanner$   s    zTestDecode.test_make_scannerc                 C   sH   dd„ }|   t|d¡ |   t|d¡ tsD|   t|d¡ |   t|d¡ d S )Nc                 S   s   t jtƒ d� | ¡ d S )N)Ústrict)r   ÚJSONDecoderr   Údecode)Úvaluer   r   r   Útest*   s    z+TestDecode.test_bad_bool_args.<locals>.testz""z{})r&   ÚZeroDivisionErrorr   ©r   r.   r   r   r   Útest_bad_bool_args(   s    zTestDecode.test_bad_bool_argsN)r!   r"   r#   r   r)   r1   r   r   r   r   r%   #   s   
r%   c                   @   sL   e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZerHed	d
„ ƒZ	dS )Ú
TestEncodec                 C   s   |   ttjd dd ¡ d S )Nu   Ã�}=NLÃ¹yÃ—RÂºÂ‚Ã²'J}Â ÃŠu)r&   Ú	TypeErrorr   r   r   r   r   r   Útest_make_encoder3   s    úzTestEncode.test_make_encoderc                 C   s¼   dd l }dd„ }t d dd„ |d dddddi dddd d d	dd|jd¡}|  t|d
d¡ |  t|d
did¡ dd„ }t d dd„ |d dddddi dddd d d	dd|jd¡}|  t|d
d¡ d S )Nr   c                  W   s   d S r
   r   ©r   r   r   r   Úbad_encoder1C   s    z5TestEncode.test_bad_str_encoder.<locals>.bad_encoder1c                 S   s   t | ƒS r
   ©Ústr©Úobjr   r   r   Ú<lambda>F   ó    z1TestEncode.test_bad_str_encoder.<locals>.<lambda>z: z, Fzutf-8Zspamé   é*   c                  W   s   dd  d S r   r   r5   r   r   r   Úbad_encoder2M   s    z5TestEncode.test_bad_str_encoder.<locals>.bad_encoder2c                 S   s   t | ƒS r
   r7   r9   r   r   r   r;   P   r<   )Údecimalr   r   ÚDecimalr&   r3   r/   )r   r@   r6   Úencr?   r   r   r   Útest_bad_str_encoder>   sd                    ü                üzTestEncode.test_bad_str_encoderc                 C   s´   dd„ }|   t|d¡ |   t|d¡ |   t|d¡ |   t|d¡ |   t|d¡ |   t|d¡ |   t|d	¡ |   t|d
¡ |   t|d¡ |   t|d¡ |   t|d¡ |   t|d¡ d S )Nc                 S   s   t jf | tƒ iŽ i ¡ d S r
   )r   ÚJSONEncoderr   Úencode)Únamer   r   r   r.   X   s    z+TestEncode.test_bad_bool_args.<locals>.testÚskipkeysÚensure_asciiÚcheck_circularÚ	allow_nanÚ	sort_keysZuse_decimalZnamedtuple_as_objectZtuple_as_arrayZbigint_as_stringZfor_jsonZ
ignore_nanZiterable_as_array)r&   r/   r0   r   r   r   r1   V   s    zTestEncode.test_bad_bool_argsc                    s0   t dƒd d ‰ ‡ fdd„}|  ttf|¡ d S )Né   é    é   c                      s   t jˆ d� d¡ d S )N)Zint_as_string_bitcountr   )r   rD   rE   r   ©Z
long_countr   r   r.   j   s    z=TestEncode.test_int_as_string_bitcount_overflow.<locals>.test)r   r&   r3   ÚOverflowErrorr0   r   rO   r   Ú$test_int_as_string_bitcount_overflowg   s    z/TestEncode.test_int_as_string_bitcount_overflowc              	   C   s4   |   t¡�  tjdd� tdƒdi¡ W 5 Q R X d S )Nu   í³¿)ÚencodingÚkeyé{   )r&   ÚUnicodeEncodeErrorr   rD   rE   r	   r   r   r   r   Útest_bad_encodingo   s    zTestEncode.test_bad_encodingN)
r!   r"   r#   r   r4   rC   r1   rQ   r   rV   r   r   r   r   r2   2   s   




r2   )Ú
__future__r   r   r   r   Z
simplejsonr   r   r   Zsimplejson.compatr   r   r	   r   r   r   r%   r2   r   r   r   r   Ú<module>   s   