o \Փat(@sxddlmZddlmZmZmZmZmZmZddl Z GdddeZ GdddeZ dd Z d d ZGd d d eZdS))TestCase)StringIO long_typeb binary_type text_typePY3Nc@seZdZddZdS)MisbehavingTextSubtypecCdS)NzFAIL!selfr r 9sz.TestDump.test_stringify_key..)skipkeysr8) rrr&r$r,r- assertRaises TypeErrordictitems)r rGkexpectvr8v0v1r r rtest_stringify_key%sJ   zTestDump.test_stringify_keycCs|tiddSr")r&r$r-r r r r test_dumpsDszTestDump.test_dumpsc CsR|tjdddddd|tjdddtd dd td dd d iddddS)NFT)TFr7z{"false": true, "true": false}r=g@g@r97rz3{"2": 3.0, "4.0": 5, "6": true, "7": 0, "false": 1})r&r$r-rr r r rtest_encode_truefalseGs" zTestDump.test_encode_truefalsecCs(gd}tt|}||ddS)N))oner9)twor=)three)four)fiverOz6{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5})r$r- OrderedDictr&)r rGrr r rtest_ordered_dictUs zTestDump.test_ordered_dictcCs6Gdddt}tjgd|dd}||ddS)a A test against the regression mentioned at `github issue 29`_. The indent parameter should accept any type which pretends to be an instance of int or long when it comes to being multiplied by strings, even if it is not actually an int or long, for backwards compatibility. .. _github issue 29: http://github.com/simplejson/simplejson/issue/29 c@s eZdZdZddZddZdS)z@TestDump.test_indent_unknown_type_acceptance..AwesomeIntz'An awesome reimplementation of integersc_s0t|dkrt|dtr|d|_dSdSdS)Nr)lenrint_int)r argskwargsr r r__init__ms zITestDump.test_indent_unknown_type_acceptance..AwesomeInt.__init__cSst|dr |j|Std)Nr^zOTo do non-awesome things with this object, please construct it from an integer!)hasattrr^NotImplementedError)r r:r r r__mul__xs  zHTestDump.test_indent_unknown_type_acceptance..AwesomeInt.__mul__N)rrr__doc__rardr r r r AwesomeIntjs rf)rr9r=rV)indentz[ 0, 1, 2 ]N)objectr$r-r&)r rfrr r r#test_indent_unknown_type_acceptance]s z,TestDump.test_indent_unknown_type_acceptancecCs&dgd}|tt||dS)Nri)r&r$r,r-)r lstr r rtest_accumulators zTestDump.test_accumulatorcCsptddD]0}tddt|D}t}tj||dd||tj|dd|t||qdS)Nr= css|] }t||fVqdSr)str)r>xr r rrAsz*TestDump.test_sort_keys..Tr7) rangerFrr$r%r&r'r-r,)r num_keyspr(r r rtest_sort_keysszTestDump.test_sort_keyscCshd}|tt|t||tt|gt|g|tt|dit|didS)Nzthis is some text*)r&r$r-r )r textr r rtest_misbehaving_text_subtypes   z&TestDump.test_misbehaving_text_subtypecCsltd}|tt|t||tt|gt|g|tt|dit|didS)Nuthis is some data €rs)rr&r$r-r)r datar r rtest_misbehaving_bytes_subtypes   z'TestDump.test_misbehaving_bytes_subtypecCs|ttdd|ttjtd|tjtdddd|tjtddddtrY|jttjtddd|jttjtddd|tjtddtdddS|tjtdddd|jttjtddd|jttjtddtddS) N€z"\u20ac"¤ iso-8859-1rz"\u00a4"rrdefault r&r$r-rrDUnicodeDecodeErrorrrEr r r r rtest_bytes_toplevels: zTestDump.test_bytes_toplevelcCs|ttdgd|ttjtdg|tjtdgddd|tjtdgdddtr`|jttjtdgdd|jttjtdgdd|tjtdgdtdddS|tjtdgddd|jttjtdgdd|jttjtdgdtddS) Nrxz ["\u20ac"]ryrzr{z ["\u00a4"]rr|r~r r r rtest_bytes_nesteds: zTestDump.test_bytes_nestedcCsf|ttddid|ttjtddi|tjtddiddd|tjtddidddtrv|jttjtddidd|jttjtddidd|jttjtddidtd |tjtddidd d d dS|tjtddiddd|jttjtddidd|jttjtddidtd |jttjtddidd d dS) Nrxrsz{"\u20ac": 42}ryrzr{z{"\u00a4": 42}rr|T)rrBr#r~r r r rtest_bytes_keysF zTestDump.test_bytes_keyN)rrrr)r/rMrNrRr[rirkrrrurwrrrr r r rr!s(  r!)unittestrsimplejson.compatrrrrrr simplejsonr$r rrr r!r r r rs