
    daf                     x    d dl mZ d dlmZmZ  G d d      Z G d d      Z G d dee      Z G d	 d
ee      Zy)    )support)PyTestCTestc                       e Zd Zy)JSONTestObjectN__name__
__module____qualname__     8/root/Python-3.12.4/Lib/test/test_json/test_recursion.pyr   r      s    r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestRecursionc                 L   g }|j                  |       	 | j                  |       | j                  d       g }|g}|j                  |       	 | j                  |       | j                  d       g }||g}| j                  |       y # t        $ r Y \w xY w# t        $ r Y 2w xY w)Nz)didn't raise ValueError on list recursionz5didn't raise ValueError on alternating list recursion)appenddumpsfail
ValueErrorselfxys      r   test_listrecursionz TestRecursion.test_listrecursion
   s    		CJJqM IIABC		OJJqM IIMNF

1!  		  		s#   B B 	BB	B#"B#c                     i }||d<   	 | j                  |       | j                  d       i }||d}| j                  |       y # t        $ r Y $w xY w)Ntestz)didn't raise ValueError on dict recursion)ab)r   r   r   r   s      r   test_dictrecursionz TestRecursion.test_dictrecursion!   s^    &		CJJqM IIAB!

1  		s   A 	AAc                     G d d| j                   j                        } |       }| j                  |j                  t              d       d|_        	 |j                  t               | j                  d       y # t        $ r Y y w xY w)Nc                       e Zd ZdZd Zy)ATestRecursion.test_defaultrecursion.<locals>.RecursiveJSONEncoderFc                     |t         u r| j                  rt         gS y| j                  j                  j	                  |      S )Nr   )r   recursejsonJSONEncoderdefaultr   os     r   r'   zITestRecursion.test_defaultrecursion.<locals>.RecursiveJSONEncoder.default2   s8    &|| .///yy,,44Q77r   N)r	   r
   r   r$   r'   r   r   r   RecursiveJSONEncoderr"   0   s    G8r   r*   z"JSONTestObject"Tz,didn't raise ValueError on default recursion)r%   r&   assertEqualencoder   r$   r   r   )r   r*   encs      r   test_defaultrecursionz#TestRecursion.test_defaultrecursion/   sx    	8499#8#8 	8 #$N35GH	FJJ~& IIDE  		s   A; ;	BBc                    | j                  t              5  t        j                         5  | j	                  ddz  dz   ddz  z          d d d        d d d        | j                  t              5  t        j                         5  | j	                  ddz  dz   ddz  z          d d d        d d d        | j                  t              5  t        j                         5  | j	                  ddz  dz   ddz  z          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   BxY w# 1 sw Y   y xY w)Nz{"a":順 1}z[1][])assertRaisesRecursionErrorr   infinite_recursionloads)r   s    r   #test_highly_nested_objects_decodingz1TestRecursion.test_highly_nested_objects_decodingE   sE    ~. 	B++- B

7V+c1C&L@AB	B ~. 	D++- D

7V+e3cFlBCD	D ~. 	>++- >

3<#-f<=>	> 	>B B	B 	BD D	D 	D> >	> 	>sj   DD
	D.D.D"!D.ED:9E
D	DD"D+	'D..D7:E	?EEc                    g i }}t        d      D ]	  }|gd|i}} | j                  t              5  t        j                         5  | j                  |       d d d        d d d        | j                  t              5  t        j                         5  | j                  |       d d d        d d d        y # 1 sw Y   ^xY w# 1 sw Y   bxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr0   k)ranger5   r6   r   r7   r   )r   ldr   s       r   #test_highly_nested_objects_encodingz1TestRecursion.test_highly_nested_objects_encodingR   s    21v 	 A3QqA	 ~. 	++- 

1	 ~. 	++- 

1	 	 	 	 	 	sG   CB5C=CC$C5B>	:CC
C	CC"c                     G d d| j                   j                        }| j                  t              5  t	        j
                         5   |d      j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)@TestRecursion.test_endless_recursion.<locals>.EndlessJSONEncoderc                     |gS )z?If check_circular is False, this will keep adding another list.r   r(   s     r   r'   zHTestRecursion.test_endless_recursion.<locals>.EndlessJSONEncoder.defaulta   s	    s
r   N)r	   r
   r   r'   r   r   r   EndlessJSONEncoderrB   `   s    r   rD   F)check_circulary              @)r%   r&   r5   r6   r   r7   r,   )r   rD   s     r   test_endless_recursionz$TestRecursion.test_endless_recursion^   s    	!6!6 	
 ~. 	D++- D"%8??CD	D 	DD D	D 	Ds#   B 
A4#B 4A=	9B  B	N)	r	   r
   r   r   r   r.   r9   r?   rF   r   r   r   r   r   	   s"    .F,>
	Dr   r   c                       e Zd Zy)TestPyRecursionNr   r   r   r   rH   rH   j       r   rH   c                       e Zd Zy)TestCRecursionNr   r   r   r   rK   rK   k   rI   r   rK   N)	r   r   test.test_jsonr   r   r   r   rH   rK   r   r   r   <module>rM      s:     (	 	^D ^DB 3mV 2 0]E 0r   