
    3hhJ                     x    S SK Jr  S SKJrJr   " S S5      r " S S5      r " S S\\5      r " S	 S
\\5      rg)    )support)PyTestCTestc                       \ rS rSrSrg)JSONTestObject    N__name__
__module____qualname____firstlineno____static_attributes__r	       F/opt/python-3.13.8/usr/lib/python3.13/test/test_json/test_recursion.pyr   r      s    r   r   c                   b    \ rS rSrS rS rS rS r\R                  " S5      S 5       r
S rS	rg
)TestRecursion	   c                 N   / nUR                  U5         U R                  U5        U R                  S5        / nU/nUR                  U5         U R                  U5        U R                  S5        / nX"/nU R                  U5        g ! [         a     N\f = f! [         a     N3f = f)Nz)didn't raise ValueError on list recursionz5didn't raise ValueError on alternating list recursion)appenddumpsfail
ValueErrorselfxys      r   test_listrecursion 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                     0 nXS'    U R                  U5        U R                  S5        0 nXS.nU R                  U5        g ! [         a     N$f = f)Ntestz)didn't raise ValueError on dict recursion)ab)r   r   r   r   s      r   test_dictrecursion TestRecursion.test_dictrecursion!   sZ    &		CJJqM IIAB

1  		s   A 
AAc                     " S SU R                   R                  5      nU" 5       nU R                  UR                  [        5      S5        SUl         UR                  [        5        U R                  S5        g ! [         a     g f = f)Nc                       \ rS rSrSrS rSrg)ATestRecursion.test_defaultrecursion.<locals>.RecursiveJSONEncoder0   Fc                     U[         L a  U R                  (       a  [         /$ gU R                  R                  R	                  U5      $ )Nr   )r   recursejsonJSONEncoderdefaultr   os     r   r.   ITestRecursion.test_defaultrecursion.<locals>.RecursiveJSONEncoder.default2   s8    &|| .///yy,,44Q77r   r	   N)r   r   r   r   r+   r.   r   r	   r   r   RecursiveJSONEncoderr(   0   s    G8r   r2   z"JSONTestObject"Tz,didn't raise ValueError on default recursion)r,   r-   assertEqualencoder   r+   r   r   )r   r2   encs      r   test_defaultrecursion#TestRecursion.test_defaultrecursion/   sx    	8499#8#8 	8 #$N35GH	FJJ~& IIDE  		s   A; ;
BBc                    U R                  [        5         [        R                  " 5          U R	                  SS-  S-   SS-  -   5        S S S 5        S S S 5        U R                  [        5         [        R                  " 5          U R	                  SS-  S-   SS-  -   5        S S S 5        S S S 5        U R                  [        5         [        R                  " 5          U R	                  SS-  S-   SS-  -   5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N[= f! , (       d  f       g = f)Nz{"a":順 1}z[1][])assertRaisesRecursionErrorr   infinite_recursionloads)r   s    r   #test_highly_nested_objects_decoding1TestRecursion.test_highly_nested_objects_decodingE   s	    ~.++-

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

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

3<#-f<= . /. .- /. .- /. .- /.sj   DD
D/E D/#E E"E<E"
D	D
D,/
D=	9E  
E
E	E""
E0cpuc                    / 0 p![        S5       H	  nU/SU0p!M     U R                  [        5         [        R                  " S5         U R                  U5        S S S 5        S S S 5        U R                  [        5         [        R                  " S5         U R                  U5        S S S 5        S S S 5        g ! , (       d  f       Ne= f! , (       d  f       Nn= f! , (       d  f       N9= f! , (       d  f       g = f)Nr9   ki  )ranger>   r?   r   r@   r   )r   ldr   s       r   #test_highly_nested_objects_encoding1TestRecursion.test_highly_nested_objects_encodingR   s     21vA3Qq ~.++D1

1 2 / ~.++D1

1 2 /. 21 /. 21 /.sG   C
B9C
?C,C(C,9
C	C


C
C)	%C,,
C:c                 *    " S SU R                   R                  5      nU R                  [        5         [        R
                  " S5         U" SS9R                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)@TestRecursion.test_endless_recursion.<locals>.EndlessJSONEncodera   c                     U/$ )Nr	   r/   s     r   r.   HTestRecursion.test_endless_recursion.<locals>.EndlessJSONEncoder.defaultb   s	    s
r   r	   N)r   r   r   r   r.   r   r	   r   r   EndlessJSONEncoderrN   a   s    r   rR   i  F)check_circulary              @)r,   r-   r>   r?   r   r@   r4   )r   rR   s     r   test_endless_recursion$TestRecursion.test_endless_recursion_   sf    	!6!6 	
 ~.++D1"%8??C 2 /.11 /.s#   BA3"B3
B	=B
Br	   N)r   r   r   r   r   r$   r6   rB   r   requires_resourcerJ   rT   r   r	   r   r   r   r   	   s<    .F,> u%
 &
	Dr   r   c                       \ rS rSrSrg)TestPyRecursionk   r	   Nr
   r	   r   r   rX   rX   k   s    dr   rX   c                       \ rS rSrSrg)TestCRecursionl   r	   Nr
   r	   r   r   r[   r[   l   s    Dr   r[   N)	r!   r   test.test_jsonr   r   r   r   rX   r[   r	   r   r   <module>r^      s:     (	 	_D _DD 3mV 2 0]E 0r   