U
    O5[0                     @   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   @/usr/lib/python3/dist-packages/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    Z__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   Z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   Z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'   r.   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   r2   r   r   r   bad_encoder2M   s    z5TestEncode.test_bad_str_encoder.<locals>.bad_encoder2c                 S   s   t | S r
   r4   r6   r   r   r   r8   P   r9   )decimalr   r   ZDecimalr%   r0   r,   )r   r=   r3   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>.testZskipkeysZensure_asciiZcheck_circularZ	allow_nanZ	sort_keysZuse_decimalZnamedtuple_as_objectZtuple_as_arrayZbigint_as_stringZfor_jsonZ
ignore_nanZiterable_as_array)r%   r,   r-   r   r   r   r.   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   r@   rA   r   Z
long_countr   r   r+   j   s    z=TestEncode.test_int_as_string_bitcount_overflow.<locals>.test)r   r%   r0   OverflowErrorr-   r   rF   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   r@   rA   r	   r   r   r   r   test_bad_encodingo   s    zTestEncode.test_bad_encodingN)
r!   r"   r#   r   r1   r?   r.   rH   r   rM   r   r   r   r   r/   2   s   

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