a  ze @sTddlmZmZGdddZGdddZGdddeeZGdd d eeZd S) )PyTestCTestc@s eZdZdS)JSONTestObjectN__name__ __module__ __qualname__r r Q/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_json/test_recursion.pyrsrc@s<eZdZddZddZddZddZd d Zd d Zd S) TestRecursioncCsg}||z||Wnty.Yn 0|dg}|g}||z||WntynYn 0|dg}||g}||dS)Nz)didn't raise ValueError on list recursionz5didn't raise ValueError on alternating list recursion)appenddumps ValueErrorfailselfxyr r r test_listrecursion s$      z TestRecursion.test_listrecursioncCsTi}||d<z||Wnty,Yn 0|di}||d}||dS)Ntestz)didn't raise ValueError on dict recursion)ab)r rrrr r r test_dictrecursion s   z TestRecursion.test_dictrecursioncCsbGddd|jj}|}||tdd|_z|tWntyRYn 0|ddS)Nc@seZdZdZddZdS)zATestRecursion.test_defaultrecursion..RecursiveJSONEncoderFcSs&|tur|jrtgSdS|jj|S)Nr)rrecursejson JSONEncoderdefaultror r r r1s zITestRecursion.test_defaultrecursion..RecursiveJSONEncoder.defaultN)rrrrrr r r r RecursiveJSONEncoder/srz"JSONTestObject"Tz,didn't raise ValueError on default recursion)rrZ assertEqualencoderrrr)rrencr r r test_defaultrecursion.s  z#TestRecursion.test_defaultrecursioncCs|t*|dddddWdn1s:0Y|t*|dddddWdn1s~0Y|t*|dddddWdn1s0YdS)Nz{"a":順1}z[1][]) assertRaisesRecursionErrorloads)rr r r #test_highly_nested_objects_decodingDs  8 8 z1TestRecursion.test_highly_nested_objects_decodingcCsgi}}tdD]}|gd|i}}q|t||Wdn1sR0Y|t||Wdn1s0YdS)Nr#k)ranger(r)r )rldrr r r #test_highly_nested_objects_encodingNs   ( z1TestRecursion.test_highly_nested_objects_encodingcCsRGddd|jj}|t |dddWdn1sD0YdS)Nc@seZdZddZdS)z@TestRecursion.test_endless_recursion..EndlessJSONEncodercSs|gS)Nr rr r r r[szHTestRecursion.test_endless_recursion..EndlessJSONEncoder.defaultN)rrrrr r r r EndlessJSONEncoderZsr1F)Zcheck_circulary@)rrr(r)r )rr1r r r test_endless_recursionXs z$TestRecursion.test_endless_recursionN) rrrrrr"r+r0r2r r r r r s   r c@s eZdZdS)TestPyRecursionNrr r r r r3cr3c@s eZdZdS)TestCRecursionNrr r r r r5dr4r5N)Ztest.test_jsonrrrr r3r5r r r r s[