a
    	3j                     @   sT   d dl mZmZ G dd dZG dd dZG dd deeZG dd	 d	eeZd
S )    )PyTestCTestc                   @   s   e Zd ZdS )JSONTestObjectN__name__
__module____qualname__ r	   r	   Y/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_json/test_recursion.pyr      s   r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestRecursionc                 C   s   g }| | z| | W n ty.   Y n0 | d g }|g}| | z| | W n tyn   Y n0 | d g }||g}| | d S )Nz)didn't raise ValueError on list recursionz5didn't raise ValueError on alternating list recursion)appenddumps
ValueErrorfailselfxyr	   r	   r
   test_listrecursion	   s$    



z TestRecursion.test_listrecursionc                 C   sT   i }||d< z|  | W n ty,   Y n0 | d i }||d}|  | d S )Ntestz)didn't raise ValueError on dict recursion)ab)r   r   r   r   r	   r	   r
   test_dictrecursion    s    

z TestRecursion.test_dictrecursionc                 C   sb   G dd d| j j}| }| |td d|_z|t W n tyR   Y n0 | d d S )Nc                   @   s   e Zd ZdZdd ZdS )zATestRecursion.test_defaultrecursion.<locals>.RecursiveJSONEncoderFc                 S   s&   |t u r| jrt gS dS | jj|S )Nr   )r   recursejsonJSONEncoderdefaultr   or	   r	   r
   r   1   s
    zITestRecursion.test_defaultrecursion.<locals>.RecursiveJSONEncoder.defaultN)r   r   r   r   r   r	   r	   r	   r
   RecursiveJSONEncoder/   s   r   z"JSONTestObject"Tz,didn't raise ValueError on default recursion)r   r   ZassertEqualencoder   r   r   r   )r   r   encr	   r	   r
   test_defaultrecursion.   s    
z#TestRecursion.test_defaultrecursionc                 C   s   |  t* | dd d dd   W d    n1 s:0    Y  |  t* | dd d dd   W d    n1 s~0    Y  |  t* | dd d dd   W d    n1 s0    Y  d S )Nz{"a":順 1}z[1][])assertRaisesRecursionErrorloads)r   r	   r	   r
   #test_highly_nested_objects_decodingD   s    88z1TestRecursion.test_highly_nested_objects_decodingc                 C   s   g i  }}t dD ]}|gd|i }}q| t | | W d    n1 sR0    Y  | t | | W d    n1 s0    Y  d S )Nr#   k)ranger(   r)   r   )r   ldr   r	   r	   r
   #test_highly_nested_objects_encodingN   s    
(z1TestRecursion.test_highly_nested_objects_encodingc                 C   sR   G dd d| j j}| t  |ddd W d    n1 sD0    Y  d S )Nc                   @   s   e Zd Zdd ZdS )z@TestRecursion.test_endless_recursion.<locals>.EndlessJSONEncoderc                 S   s   |gS )z?If check_circular is False, this will keep adding another list.r	   r   r	   r	   r
   r   [   s    zHTestRecursion.test_endless_recursion.<locals>.EndlessJSONEncoder.defaultN)r   r   r   r   r	   r	   r	   r
   EndlessJSONEncoderZ   s   r1   F)Zcheck_circulary              @)r   r   r(   r)   r    )r   r1   r	   r	   r
   test_endless_recursionX   s    z$TestRecursion.test_endless_recursionN)	r   r   r   r   r   r"   r+   r0   r2   r	   r	   r	   r
   r      s   

r   c                   @   s   e Zd ZdS )TestPyRecursionNr   r	   r	   r	   r
   r3   c       r3   c                   @   s   e Zd ZdS )TestCRecursionNr   r	   r	   r	   r
   r5   d   r4   r5   N)Ztest.test_jsonr   r   r   r   r3   r5   r	   r	   r	   r
   <module>   s   [