a
    $Rîh  ã                   @   s`   d dl mZ 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 )é    )Úsupport)ÚPyTestÚCTestc                   @   s   e Zd ZdS )ÚJSONTestObjectN©Ú__name__Ú
__module__Ú__qualname__© r
   r
   úE/opt/python-3.9.24/usr/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   2   s
    zITestRecursion.test_defaultrecursion.<locals>.RecursiveJSONEncoder.defaultN)r   r   r	   r   r   r
   r
   r
   r   ÚRecursiveJSONEncoder0   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   sL  |   t¡R t ¡ * |  dd d dd  ¡ W d   ƒ n1 sD0    Y  W d   ƒ n1 sb0    Y  |   t¡R t ¡ * |  dd d dd  ¡ W d   ƒ n1 s°0    Y  W d   ƒ n1 sÎ0    Y  |   t¡T t ¡ * |  dd d dd  ¡ W d   ƒ n1 s0    Y  W d   ƒ n1 s>0    Y  d S )Nz{"a":é † Ú1ú}z[1]ú[ú])ÚassertRaisesÚRecursionErrorr   Úinfinite_recursionÚloads)r   r
   r
   r   Ú#test_highly_nested_objects_decodingE   s    
V
V
z1TestRecursion.test_highly_nested_objects_decodingc              	   C   sä   g i  }}t dƒD ]}|gd|i }}q|  t¡B t ¡  |  |¡ W d   ƒ n1 s\0    Y  W d   ƒ n1 sz0    Y  |  t¡B t ¡  |  |¡ W d   ƒ n1 s¸0    Y  W d   ƒ n1 sÖ0    Y  d S )Nr$   Úk)Úranger)   r*   r   r+   r   )r   ÚlÚdr   r
   r
   r   Ú#test_highly_nested_objects_encodingR   s    

F
z1TestRecursion.test_highly_nested_objects_encodingc              	   C   sz   G dd„ d| j jƒ}|  t¡H t ¡   |dd d¡ W d   ƒ n1 sN0    Y  W d   ƒ n1 sl0    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   a   s    zHTestRecursion.test_endless_recursion.<locals>.EndlessJSONEncoder.defaultN)r   r   r	   r   r
   r
   r
   r   ÚEndlessJSONEncoder`   s   r3   F)Zcheck_circulary              @)r   r   r)   r*   r   r+   r!   )r   r3   r
   r
   r   Útest_endless_recursion^   s    
z$TestRecursion.test_endless_recursionN)	r   r   r	   r   r   r#   r-   r2   r4   r
   r
   r
   r   r   	   s   r   c                   @   s   e Zd ZdS )ÚTestPyRecursionNr   r
   r
   r
   r   r5   j   ó    r5   c                   @   s   e Zd ZdS )ÚTestCRecursionNr   r
   r
   r
   r   r7   k   r6   r7   N)	r   r   Ztest.test_jsonr   r   r   r   r5   r7   r
   r
   r
   r   Ú<module>   s
   a