
    h              
       v   S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  \R                  r " S S\R                  5      r \S:X  a  \R"                  " 5          \R$                  R'                  S\" \" S	S
5      5      5      S 5       r\R$                  R'                  S\" \" SS5      5      5      \R$                  R'                  S\" \" SS5      5      5      S 5       5       rS r\R$                  R'                  S/ SQ5      S 5       r\R$                  R'                  S/ SQ5      S 5       rg)    N)StringIO)Path)ujsonc                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S? rAS@ rBSA rCSB rDSC rESD rFSE rGSF rHSG rISH rJSI rKSJ rLSK rMSL rNSM rOSN rPSO rQSP rRSQ rSSR rTSS rUST rVSU rWSV rXSW rYSX rZSY r[SZ r\S[ r]S\ r^S] r_S^ r`S_ raS` rbSa rcSb rdSc reSd rfSe rgSf rhSg riSh rjSi rkSj rlSk rmSl rnSm roSn rpSo rqSp rrSq rsSr rtSs ruSt rvSu rwSv rxSw rySx rzSy r{Sz r|\}R                  " \" \S{5      S|:X  + S}S~9S 5       r\}R                  " \" \S{5      S|:X  + S}S~9S 5       r\}R                  " \" \S{5      S|:X  + S}S~9S 5       r\}R                  " \" \S{5      S|:X  + S}S~9S 5       r\}R                  " \" \S{5      S|:X  + S}S~9S 5       r\}R                  " \" \S{5      S|:X  + S}S~9S 5       rSrg)UltraJSONTests   c                     [         R                  " S5      n[        R                  " U5      n[        R                  " U5      nU R                  US5        g )Nz	1337.1337g@)decimalDecimalr   encodedecodeassertEqualselfsutencodeddecodeds       V/home/james-whalen/.local/lib/python3.13/site-packages/srsly/tests/ujson/test_ujson.pytest_encodeDecimal!UltraJSONTests.test_encodeDecimal   s<    ook*,,s#,,w'),    c                    ^ ^ SmSnSnSnUU 4S jnU" USS9  U" USS9  U" USSS	9  U" USSS	9  U" USSS	9  U" USSS	9  U" USS
9  g )Nz"A string \ /   
  	 </script> &z,"A string \\ \/ \b \f \n \r \t <\/script> &"z;"A string \\ \/ \b \f \n \r \t \u003c\/script\u003e \u0026"z*"A string \\ / \b \f \n \r \t </script> &"c                   > [         R                  " T40 UD6nTR                  X 5        UR                  SS5      (       aM  TR                  T[        R
                  " U5      5        TR                  T[         R                  " U5      5        g g )Nescape_forward_slashesT)r   r   r   getjsonloadsr   )expected_outputencode_kwargsoutputinputr   s      r   helper:UltraJSONTests.test_encodeStringConversion.<locals>.helper   sp    \\%9=9FV5  !94@@  

6(:;  V(<= Ar   Tensure_asciiF)r%   encode_html_chars)r    )r   not_html_encodedhtml_encodednot_slashes_escapedr"   r!   s   `    @r   test_encodeStringConversion*UltraJSONTests.test_encodeStringConversion   s    :RU 	 R	> 	d3e4 	deLeuM 	|$$G|%4H 	"5Ar   c                 N    U R                  S[        R                  " SSS95        g )Nz$"\u003cimg src='\u0026amp;'\/\u003e"z<img src='&amp;'/>T)r&   r   r   dumpsr   s    r   testWriteEscapedString%UltraJSONTests.testWriteEscapedString4   s"    8KK,E	
r   c                     SS0n[         R                  " U5      n[         R                  " U5      nU R                  X5        [        R
                  " U5      n[        R                  " U5      nU R                  X5        g )NalZ:`7{ r   r/   r   r   r   r   r   r   s       r   test_doubleLongIssue#UltraJSONTests.test_doubleLongIssue:   s`    %&**S/**W%&,,s#,,w'&r   c                     SS0n[         R                  " U5      n[         R                  " U5      nU R                  X5        [        R
                  " U5      n[        R                  " U5      nU R                  X5        g )Nr4   g#_tr5   r   s       r   test_doubleLongDecimalIssue*UltraJSONTests.test_doubleLongDecimalIssueC   s`    ,-**S/**W%&,,s#,,w'&r   c                 d    SS0n[         R                  " U5      n[         R                  " U5        g )Nr4   gԟpA)r   r/   r   )r   r   r   s      r   test_encodeDecodeLongDecimal+UltraJSONTests.test_encodeDecodeLongDecimalL   s'    &'++c"Wr   c                     SS0n[         R                  " U5      n[         R                  " U5      nU R                  US   US   5        g )Nr4   g=
ףp=@)r   r   r   assertAlmostEqualr   s       r   test_decimalDecodeTest%UltraJSONTests.test_decimalDecodeTestQ   s?    Dk,,s#,,w's4y'$-8r   c                     SSSSSSS.n[         R                  " U5        SSSSSSSS.n[         R                  " U5        g )Nvalue1)key1rD   rD   rD   rD   rD   )   بنrE   rE   rE   rE   rE   rE   r   r   r   r!   s     r   test_encodeDictWithUnicodeKeys-UltraJSONTests.test_encodeDictWithUnicodeKeysW   sU    
 	U 
 	Ur   c                 8   [         R                  n[        R                  " U5      nU R	                  [        US5      [        [        R                  " U5      S5      5        U R	                  [        US5      [        [        R                  " U5      S5      5        g N   	mathpir   r   r   roundr   r   r   r   r!   r    s      r   test_encodeDoubleConversion*UltraJSONTests.test_encodeDoubleConversionm   se    e$ua%

60BA*FGua%V0Da*HIr   c                 X    Sn[         R                  " U5      nU R                  US5        g )Ng      ?z1.0)r   r   r   rQ   s      r   test_encodeWithDecimal%UltraJSONTests.test_encodeWithDecimals   s%    e$'r   c                 :   [         R                  * n[        R                  " U5      nU R	                  [        US5      [        [        R                  " U5      S5      5        U R	                  [        US5      [        [        R                  " U5      S5      5        g rK   rM   rQ   s      r   test_encodeDoubleNegConversion-UltraJSONTests.test_encodeDoubleNegConversionx   sg    e$ua%

60BA*FGua%V0Da*HIr   c                     / ///S-  n[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[         R
                  " U5      5        g )N   r   r   r   r   r   r   rQ   s      r   test_encodeArrayOfNestedArrays-UltraJSONTests.test_encodeArrayOfNestedArrays   sQ    $2e$

6 23V 45r   c                     / SQS-  n[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[         R
                  " U5      5        g )N)cAT@r`   r`   r`   
   r\   rQ   s      r   test_encodeArrayOfDoubles(UltraJSONTests.test_encodeArrayOfDoubles   sL    DrIe$

6 23V 45r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  US5        U R                  U[         R
                  " U5      5        g )NzA string \ /   
  	z"A string \\ \/ \b \f \n \r \t"r\   rQ   s      r   test_encodeStringConversion2+UltraJSONTests.test_encodeStringConversion2   sX    .e$

6 23!JKV 45r   c                     g Nr'   r0   s    r   test_decodeUnicodeConversion+UltraJSONTests.test_decodeUnicodeConversion   s    r   c                     Sn[         R                  " U5      n[         R                  " U5      nU R                  U[	        U5      5        U R                  U[
        R                  " U5      5        g )Nu@   Räksmörgås اسامة بن محمد بن عوض بن لادنr   r   r   r   json_unicoder   r   r   r!   encdecs       r   test_encodeUnicodeConversion1,UltraJSONTests.test_encodeUnicodeConversion1   sP    Rll5!ll3l512djjo.r   c                     Sn[         R                  " U5      n[         R                  " U5      nU R                  X5        U R                  U[	        U5      5        g )N)r   r   r   r   rm   rn   s       r   test_encodeControlEscaping)UltraJSONTests.test_encodeControlEscaping   sF    ll5!ll3$l512r   c                     Sn[         R                  " U5      n[         R                  " U5      nU R                  U[	        U5      5        U R                  U[
        R                  " U5      5        g )Nu
   æ¥Ñrl   rn   s       r   test_encodeUnicodeConversion2,UltraJSONTests.test_encodeUnicodeConversion2   sP    &ll5!ll3l512djjo.r   c                     Sn[         R                  " U5      n[         R                  " U5      nU R                  U[	        U5      5        U R                  U[
        R                  " U5      5        g )Nu   ðrl   rn   s       r   test_encodeUnicodeSurrogatePair.UltraJSONTests.test_encodeUnicodeSurrogatePair   sP    "ll5!ll3l512djjo.r   c                     Sn[         R                  " U5      n[         R                  " U5      nU R                  U[	        U5      5        U R                  U[
        R                  " U5      5        g )Nu   ð°TRAILINGNORMALrl   rn   s       r   test_encodeUnicode4BytesUTF8+UltraJSONTests.test_encodeUnicode4BytesUTF8   P    0ll5!ll3l512djjo.r   c                     Sn[         R                  " U5      n[         R                  " U5      nU R                  U[	        U5      5        U R                  U[
        R                  " U5      5        g )Nu   ó¿¿¿TRAILINGNORMALrl   rn   s       r   #test_encodeUnicode4BytesUTF8Highest2UltraJSONTests.test_encodeUnicode4BytesUTF8Highest   r   r   c                    Sn[         R                  " U5      n[        R                  " U5      n[        U5      S:X  a+  U R	                  [        U5      [        U5      S-  S-   5        O*U R	                  [        U5      [        U5      S-  S-   5        U R	                  X#5        [         R
                  " U5      nU R	                  X5        [         R                  " USS9n[        R                  " USS9nU R	                  [        U5      [        U5      S-   5        U R	                  X#5        [         R
                  " U5      nU R	                  X5        g )Nu   🐮🐮🐭🐭            Fr$   )r   r/   r   lenr   r   r   sr   encoded_jsonr   s        r   testEncodeUnicodeBMP#UltraJSONTests.testEncodeUnicodeBMP   s    6++a.zz!}q6Q;S\3q6B;?;S\3q6A:>:/++g&$ ++ae4zz!%8Ws1vz2/++g&$r   c                 6   Sn[         R                  " U5      n[        R                  " U5      nU R                  [	        U5      [	        U5      S-  S-   5        U R                  X#5        [         R
                  " U5      nU R                  X5        [         R                  " USS9n[        R                  " USS9nU R                  [	        U5      [	        U5      S-   5        U R                  X#5        [         R
                  " U5      nU R                  X5        g )Nu	   ✿♡✿r   r   Fr$   )r   r/   r   r   r   r   r   s        r   testEncodeSymbols UltraJSONTests.testEncodeSymbols   s     ++a.zz!}Ws1vzA~6/++g&$ ++ae4zz!%8Ws1vz2/++g&$r   c                    / ///n[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        g rh   r   r   r   r   r   r/   r   rQ   s      r   test_encodeArrayInArray&UltraJSONTests.test_encodeArrayInArray   sf    $e$

6 23E!23V 45r   c                    Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        g )Niz  r   rQ   s      r   test_encodeIntConversion'UltraJSONTests.test_encodeIntConversion   `    e$

6 23E!23V 45r   c                    Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        g )N闅r   rQ   s      r   test_encodeIntNegConversion*UltraJSONTests.test_encodeIntNegConversion   s`    e$

6 23E!23V 45r   c                 p   Sn[         R                  " U5      n[        R                  " U5        [         R                  " U5        U R                  U[        R                  " U5      5        U R                  U[        R                  " U5      5        U R                  U[         R                  " U5      5        g )Nl         )r   r   r   r   r   r   r/   rQ   s      r   test_encodeLongNegConversion+UltraJSONTests.test_encodeLongNegConversion  sx    $e$

6V

6 23E!23V 45r   c                     / SQn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[         R
                  " U5      5        g )N   r      r   r\   rQ   s      r   test_encodeListConversion(UltraJSONTests.test_encodeListConversion  sG    e$

6 23V 45r   c                 "   SSSSS.n[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[         R
                  " U5      5        U R                  U[         R
                  " U5      5        g )Nr   r   r   r   )k1k2k3k4r\   rQ   s      r   test_encodeDictConversion(UltraJSONTests.test_encodeDictConversion  si    !4e$

6 23V 45V 45r   c                    S n[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        g rh   r   rQ   s      r   test_encodeNoneConversion(UltraJSONTests.test_encodeNoneConversion  `    e$

6 23E!23V 45r   c                    Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        g )NTr   rQ   s      r   test_encodeTrueConversion(UltraJSONTests.test_encodeTrueConversion%  r   r   c                    Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        g )NFr   rQ   s      r   test_encodeFalseConversion)UltraJSONTests.test_encodeFalseConversion,  r   r   c                    SnUR                  S5      n[        R                  " USS9n[        R                   " U5      nU R                  U[        R
                  " USS95        U R                  U[        R                  " U5      5        g )Ns   日шutf-8Fr$   )r   r   r   r   r   r/   r   rn   s       r   test_encodeToUTF8 UltraJSONTests.test_encodeToUTF83  sf    'W%ll5u5ll3djjUCDdjjo.r   c                     Sn[         R                  " U5      n[         R                  " [        U5      5      nU R                  X#5        g )Nz{"obj": 31337})r   r   strr   )r   r!   dec1dec2s       r   test_decodeFromUnicode%UltraJSONTests.test_decodeFromUnicode;  s5     ||E"||CJ'$r   c                      " S S5      n " S S5      nU" 5       nU" 5       Ul         X3R                   l         U R                  [        [        R                  U5        g )Nc                       \ rS rSrSrS rSrg)2UltraJSONTests.test_encodeRecursionMax.<locals>.O2iC  r   c                     SU R                   0$ Nmemberr   r0   s    r   toDict9UltraJSONTests.test_encodeRecursionMax.<locals>.O2.toDictF       $++..r   r'   N__name__
__module____qualname____firstlineno__r   r   __static_attributes__r'   r   r   O2r   C      F/r   r   c                       \ rS rSrSrS rSrg)2UltraJSONTests.test_encodeRecursionMax.<locals>.O1iI  r   c                     SU R                   0$ r   r   r0   s    r   r   9UltraJSONTests.test_encodeRecursionMax.<locals>.O1.toDictL  r   r   r'   Nr   r'   r   r   O1r   I  r   r   r   )r   assertRaisesOverflowErrorr   r   )r   r   r   r!   s       r   test_encodeRecursionMax&UltraJSONTests.test_encodeRecursionMaxA  sH    	/ 	/	/ 	/ t#-u=r   c                 d    [        S5      nU R                  [        [        R                  U5        g )Nnanfloatr   r   r   r   rG   s     r   test_encodeDoubleNan#UltraJSONTests.test_encodeDoubleNanT  !    e-u=r   c                 d    [        S5      nU R                  [        [        R                  U5        g Ninfr   rG   s     r   test_encodeDoubleInf#UltraJSONTests.test_encodeDoubleInfX  r   r   c                 f    [        S5      * nU R                  [        [        R                  U5        g r   r   rG   s     r   test_encodeDoubleNegInf&UltraJSONTests.test_encodeDoubleNegInf\  s#    u-u=r   c                 p    SSK Jn  U" / SQ5      nU R                  S[        R                  " U5      5        g )Nr   )OrderedDict))r   r   )r   r   )   r   )r   r   z{"1":1,"0":0,"8":8,"2":2})collectionsr   r   r   r   )r   r   r!   s      r   test_encodeOrderedDict%UltraJSONTests.test_encodeOrderedDict`  s*    +<=4ell56IJr   c                 R    SnU R                  [        [        R                  U5        g )Nzfdsa sda v9sa fdsar   
ValueErrorr   r   rG   s     r   test_decodeJibberish#UltraJSONTests.test_decodeJibberishf  s    $*ellE:r   c                 R    SnU R                  [        [        R                  U5        g )N[r   rG   s     r   test_decodeBrokenArrayStart*UltraJSONTests.test_decodeBrokenArrayStartj      *ellE:r   c                 R    SnU R                  [        [        R                  U5        g )N{r   rG   s     r   test_decodeBrokenObjectStart+UltraJSONTests.test_decodeBrokenObjectStartn  r   r   c                 R    SnU R                  [        [        R                  U5        g )N]r   rG   s     r   test_decodeBrokenArrayEnd(UltraJSONTests.test_decodeBrokenArrayEndr  r   r   c                 X    SS-  nU R                  [        [        R                  U5        g )Nr      r   rG   s     r   test_decodeArrayDepthTooBig*UltraJSONTests.test_decodeArrayDepthTooBigv  "    {#*ellE:r   c                 R    SnU R                  [        [        R                  U5        g )N}r   rG   s     r   test_decodeBrokenObjectEnd)UltraJSONTests.test_decodeBrokenObjectEndz  r   r   c                 R    SnU R                  [        [        R                  U5        g )Nz
{"one":1,}r   rG   s     r   "test_decodeObjectTrailingCommaFail1UltraJSONTests.test_decodeObjectTrailingCommaFail~  s    *ellE:r   c                 X    SS-  nU R                  [        [        R                  U5        g )Nr   r  r   rG   s     r   test_decodeObjectDepthTooBig+UltraJSONTests.test_decodeObjectDepthTooBig  r	  r   c                 R    SnU R                  [        [        R                  U5        g )Nz"TESTINGr   rG   s     r   test_decodeStringUnterminated,UltraJSONTests.test_decodeStringUnterminated      *ellE:r   c                 R    SnU R                  [        [        R                  U5        g Nz
"TESTING\"r   rG   s     r   %test_decodeStringUntermEscapeSequence4UltraJSONTests.test_decodeStringUntermEscapeSequence      *ellE:r   c                 R    SnU R                  [        [        R                  U5        g r  r   rG   s     r   test_decodeStringBadEscape)UltraJSONTests.test_decodeStringBadEscape  r  r   c                 R    SnU R                  [        [        R                  U5        g )Ntrur   rG   s     r   test_decodeTrueBroken$UltraJSONTests.test_decodeTrueBroken      *ellE:r   c                 R    SnU R                  [        [        R                  U5        g )Nfar   rG   s     r   test_decodeFalseBroken%UltraJSONTests.test_decodeFalseBroken  s    *ellE:r   c                 R    SnU R                  [        [        R                  U5        g )Nnr   rG   s     r   test_decodeNullBroken$UltraJSONTests.test_decodeNullBroken  r   r   c                 v    Sn[        S5       H(  nU R                  [        [        R                  U5        M*     g )Nz{{1337:""}}  ranger   r   r   r   r   r!   xs      r   $test_decodeBrokenDictKeyTypeLeakTest3UltraJSONTests.test_decodeBrokenDictKeyTypeLeakTest  s+    tAj%,,> r   c                 v    Sn[        S5       H(  nU R                  [        [        R                  U5        M*     g )Nz
{{"key":"}r.  r/  r1  s      r   test_decodeBrokenDictLeakTest,UltraJSONTests.test_decodeBrokenDictLeakTest  s+    tAj%,,> r   c                 v    Sn[        S5       H(  nU R                  [        [        R                  U5        M*     g )Nz[[[truer.  r/  r1  s      r   test_decodeBrokenListLeakTest,UltraJSONTests.test_decodeBrokenListLeakTest  s+    tAj%,,> r   c                 R    SnU R                  [        [        R                  U5        g )Nz{{{{31337}}}}r   rG   s     r   test_decodeDictWithNoKey'UltraJSONTests.test_decodeDictWithNoKey      *ellE:r   c                 R    SnU R                  [        [        R                  U5        g )Nz{{{{"key"}}}}r   rG   s     r   !test_decodeDictWithNoColonOrValue0UltraJSONTests.test_decodeDictWithNoColonOrValue  r>  r   c                 R    SnU R                  [        [        R                  U5        g )Nz{{{{"key":}}}}r   rG   s     r   test_decodeDictWithNoValue)UltraJSONTests.test_decodeDictWithNoValue  s     *ellE:r   c                 T    SnU R                  S[        R                  " U5      5        g )N31337r   r   r   r   rG   s     r   test_decodeNumericIntPos'UltraJSONTests.test_decodeNumericIntPos  s     U 34r   c                 T    SnU R                  S[        R                  " U5      5        g )Nz-31337r   rG  rG   s     r   test_decodeNumericIntNeg'UltraJSONTests.test_decodeNumericIntNeg  s     e!45r   c                 R    SnU R                  [        [        R                  U5        g )Ns   r   r   r   r   rG   s     r    test_encodeUnicode4BytesUTF8Fail/UltraJSONTests.test_encodeUnicode4BytesUTF8Fail  s    +-u=r   c                 x   Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        U R                  S[         R
                  " S5      5        g )Nz31337   1337 z"  \u0000\r\n "z   
 r   rQ   s      r   test_encodeNullCharacter'UltraJSONTests.test_encodeNullCharacter  s    !e$

6 23E!23V 45e$

6 23E!23V 45-u{{?/KLr   c                 |    SnU R                  [        R                  " U5      [        R                  " U5      5        g )Nz"31337 \u0000 31337")r   r   r   r   r   rG   s     r   test_decodeNullCharacter'UltraJSONTests.test_decodeNullCharacter  s)    'e,djj.?@r   c                     / SQn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[         R
                  " U5      5        g )N)    rY  rY  rY  rY  rY  r\   rQ   s      r   test_encodeListLongConversion,UltraJSONTests.test_encodeListLongConversion  sK    
 e$

6 23V 45r   c                     / SQn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[         R
                  " U5      5        g )N)    r]  r]  r\   rQ   s      r   %test_encodeListLongUnsignedConversion4UltraJSONTests.test_encodeListLongUnsignedConversion  sG    Re$

6 23V 45r   c                    Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        g )NrY  r   rQ   s      r   test_encodeLongConversion(UltraJSONTests.test_encodeLongConversion  s`    #e$

6 23E!23V 45r   c                    Sn[         R                  " U5      nU R                  U[        R                  " U5      5        U R                  U[        R
                  " U5      5        U R                  U[         R                  " U5      5        g )Nr]  r   rQ   s      r   !test_encodeLongUnsignedConversion0UltraJSONTests.test_encodeLongUnsignedConversion  s`    $e$

6 23E!23V 45r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        g N1337E40r   r   r   r   r   rQ   s      r   test_numericIntExp!UltraJSONTests.test_numericIntExp  .    e$E!23r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        g )Nz1.337E40ri  rQ   s      r   test_numericIntFrcExp$UltraJSONTests.test_numericIntFrcExp   .    e$E!23r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        g )Nz1337E+9ri  rQ   s      r   test_decodeNumericIntExpEPLUS,UltraJSONTests.test_decodeNumericIntExpEPLUS  rl  r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        g )Nz	1.337e+40ri  rQ   s      r   test_decodeNumericIntExpePLUS,UltraJSONTests.test_decodeNumericIntExpePLUS
  s.    e$E!23r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        g rg  ri  rQ   s      r   test_decodeNumericIntExpE(UltraJSONTests.test_decodeNumericIntExpE  rl  r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        g )N1337e40ri  rQ   s      r   test_decodeNumericIntExpe(UltraJSONTests.test_decodeNumericIntExpe  rl  r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        g )Nz1.337E-4ri  rQ   s      r   test_decodeNumericIntExpEMinus-UltraJSONTests.test_decodeNumericIntExpEMinus  rp  r   c                     Sn[         R                  " U5      nU R                  U[        R                  " U5      5        g )Nz1.337e-4ri  rQ   s      r   test_decodeNumericIntExpeMinus-UltraJSONTests.test_decodeNumericIntExpeMinus  rp  r   c                     [        5       n[        R                  " / SQU5        U R                  SUR	                  5       5        g )Nr   r   r   [1,2,3])r   r   dumpr   getvaluer   fs     r   test_dumpToFileUltraJSONTests.test_dumpToFile#  s-    J

9a AJJL1r   c                      " S S5      nU" 5       n[         R                  " / SQU5        U R                  SUR                  5        g )Nc                        \ rS rSrS rS rSrg):UltraJSONTests.test_dumpToFileLikeObject.<locals>.filelikei)  c                     SU l         g N bytesr0   s    r   __init__CUltraJSONTests.test_dumpToFileLikeObject.<locals>.filelike.__init__*  s	    
r   c                 .    U =R                   U-  sl         g rh   r  )r   r  s     r   write@UltraJSONTests.test_dumpToFileLikeObject.<locals>.filelike.write-  s    

e#
r   r  N)r   r   r   r   r  r  r   r'   r   r   fileliker  )  s     $r   r  r  r  )r   r  r   r  r   r  r  s      r   test_dumpToFileLikeObject(UltraJSONTests.test_dumpToFileLikeObject(  s7    	$ 	$ J

9a AGG,r   c                 P    U R                  [        [        R                  / S5        g r  )r   	TypeErrorr   r  r0   s    r   test_dumpFileArgsError%UltraJSONTests.test_dumpFileArgsError4  s    )UZZR8r   c                 j    [        S5      nU R                  / SQ[        R                  " U5      5        g )N	[1,2,3,4]r   )r   r   r   loadr  s     r   test_loadFileUltraJSONTests.test_loadFile7  s$    [!uzz!}5r   c                 v     " S S5      nU" 5       nU R                  / SQ[        R                  " U5      5        g )Nc                       \ rS rSrS rSrg)8UltraJSONTests.test_loadFileLikeObject.<locals>.filelikei<  c                 L     U R                     g ! [         a
    SU l          gf = f)NTr  )endAttributeErrorr0   s    r   read=UltraJSONTests.test_loadFileLikeObject.<locals>.filelike.read=  s'    'HH% '#DH&'s    ##)r  N)r   r   r   r   r  r   r'   r   r   r  r  <  s    'r   r  r   )r   r   r  r  s      r   test_loadFileLikeObject&UltraJSONTests.test_loadFileLikeObject;  s-    	' 	' Juzz!}5r   c                 N    U R                  [        [        R                  S5        g Nz[])r   r  r   r  r0   s    r   test_loadFileArgsError%UltraJSONTests.test_loadFileArgsErrorG  s    )UZZ6r   c                 N    U R                  [        [        R                  S5        g )Nl   U$Jp[lSrN  r0   s    r   test_encodeNumericOverflow)UltraJSONTests.test_encodeNumericOverflowJ  s    -7QRr   c                     SSS-  SS-  SS-  4nSn[        X5       H.  u  p4U R                  [        R                  " U5      S   U5        M0     g )Nz{"id": 3590016419}z
{"id": %s}                    )l   M+ r  r  r  id)zipr   r   r   )r   docsresultsdocresults        r   !test_decodeNumberWith32bitSignBit0UltraJSONTests.test_decodeNumberWith32bitSignBitM  s\     !7"7"M*	
 >t-KCU\\#.t4f= .r   c                     [        S5       H5  nSR                  S5      nUS-  S-  S-  n[        R                  " U5        M7     g )Nra      år      r   )r0  r   r   )r   r2  baser!   s       r   test_encodeBigEscape#UltraJSONTests.test_encodeBigEscapeZ  s=    rA??7+D4K$&*ELL r   c                     [        S5       HJ  nSR                  S5      nSR                  5       nX2S-  S-  S-  -   U-   n[        R                  " U5        ML     g )Nra   r  r   "r  r   )r0  r   r   r   )r   r2  r  quoter!   s        r   test_decodeBigEscape#UltraJSONTests.test_decodeBigEscape`  sP    rA??7+DJJLED[4/!34u<ELL	 r   c                    ^ SS0m " U4S jS5      nU" 5       n[         R                  " U5      n[         R                  " U5      nU R                  UT5        g )Nkeyr   c                   (   > \ rS rSrU 4S jrS rSrg),UltraJSONTests.test_toDict.<locals>.DictTestij  c                    > T$ rh   r'   )r   ds    r   r   3UltraJSONTests.test_toDict.<locals>.DictTest.toDictk  s    r   c                     g)Nz"json defined"r'   r0   s    r   __json__5UltraJSONTests.test_toDict.<locals>.DictTest.__json__n  s    'r   r'   N)r   r   r   r   r   r  r   )r  s   r   DictTestr  j  s    (r   r  r   r   r   r   )r   r  or    rp   r  s        @r   test_toDictUltraJSONTests.test_toDictg  sJ    EN	( 	( Jall6"a r   c                    ^ Sm " U4S jS5      nSU" 5       0n[         R                  " U5      n[         R                  " U5      nU R                  UST05        g )Nthis is the correct outputc                   "   > \ rS rSrU 4S jrSrg)6UltraJSONTests.test_object_with_json.<locals>.JSONTesti{  c                    > ST-   S-   $ Nr  r'   r   output_texts    r   r  ?UltraJSONTests.test_object_with_json.<locals>.JSONTest.__json__|  s    [(3..r   r'   Nr   r   r   r   r  r   r  s   r   JSONTestr  {  s    / /r   r  r  r  r   r  r  r    rp   r  s        @r   test_object_with_json$UltraJSONTests.test_object_with_jsonv  sR     3	/ 	/ XZ all6"v{34r   c                    ^ Sm " U4S jS5      nSU" 5       0n[         R                  " U5      n[         R                  " U5      nU R                  UST05        g )Nr  c                   "   > \ rS rSrU 4S jrSrg)>UltraJSONTests.test_object_with_json_unicode.<locals>.JSONTesti  c                    > ST-   S-   $ r  r'   r  s    r   r  GUltraJSONTests.test_object_with_json_unicode.<locals>.JSONTest.__json__  s    k)D00r   r'   Nr  r  s   r   r  r    s    1 1r   r  r  r  r  s        @r   test_object_with_json_unicode,UltraJSONTests.test_object_with_json_unicode  sR     4	1 	1 XZ all6"v{34r   c                    ^ SSS/0m " U4S jS5      nSU" 5       0n[         R                  " U5      n[         R                  " U5      nU R                  UST05        g )Nfoobarbazc                   "   > \ rS rSrU 4S jrSrg)>UltraJSONTests.test_object_with_complex_json.<locals>.JSONTesti  c                 0   > [         R                  " T5      $ rh   rF   )r   objs    r   r  GUltraJSONTests.test_object_with_complex_json.<locals>.JSONTest.__json__  s    ||C((r   r'   Nr  )r  s   r   r  r    s    ) )r   r  r  r  )r   r  r  r    rp   r  s        @r   test_object_with_complex_json,UltraJSONTests.test_object_with_complex_json  s[     '(	) 	) XZ all6"vsm,r   c                    ^ S SSS0 4 H>  m " U4S jS5      nSU" 5       0nU R                  [        [        R                  U5        M@     g )Ni  gGz(@Tc                   "   > \ rS rSrU 4S jrSrg)AUltraJSONTests.test_object_with_json_type_error.<locals>.JSONTesti  c                    > T$ rh   r'   )r   return_values    r   r  JUltraJSONTests.test_object_with_json_type_error.<locals>.JSONTest.__json__  s	    ''r   r'   Nr  )r  s   r   r  r    s    ( (r   r  r  )r   r  r   r   )r   r  r  r  s      @r    test_object_with_json_type_error/UltraJSONTests.test_object_with_json_type_error  sF    !4b9L( ( $Aiq9 :r   c                 t     " S S5      nSU" 5       0nU R                  [        [        R                  U5        g )Nc                       \ rS rSrS rSrg)FUltraJSONTests.test_object_with_json_attribute_error.<locals>.JSONTesti  c                     [         erh   )r  r0   s    r   r  OUltraJSONTests.test_object_with_json_attribute_error.<locals>.JSONTest.__json__  s    $$r   r'   Nr  r'   r   r   r  r	    s    %r   r  r  )r   r  r   r   )r   r  r  s      r   %test_object_with_json_attribute_error4UltraJSONTests.test_object_with_json_attribute_error  s0    	% 	% XZ .%,,:r   c                 R    SnU R                  [        [        R                  U5        g )Nz[31337,]r   rG   s     r   !test_decodeArrayTrailingCommaFail0UltraJSONTests.test_decodeArrayTrailingCommaFail  r  r   c                 R    SnU R                  [        [        R                  U5        g )Nz[,31337]r   rG   s     r    test_decodeArrayLeadingCommaFail/UltraJSONTests.test_decodeArrayLeadingCommaFail  r  r   c                 R    SnU R                  [        [        R                  U5        g )Nz[,]r   rG   s     r   test_decodeArrayOnlyCommaFail,UltraJSONTests.test_decodeArrayOnlyCommaFail  r$  r   c                 R    SnU R                  [        [        R                  U5        g )Nz[]]r   rG   s     r   $test_decodeArrayUnmatchedBracketFail3UltraJSONTests.test_decodeArrayUnmatchedBracketFail  r$  r   c                 X    Sn[         R                  " U5      nU R                  / U5        g r  )r   r   r   )r   r!   r  s      r   test_decodeArrayEmpty$UltraJSONTests.test_decodeArrayEmpty  s%    ll5!S!r   c                 4    Sn[         R                  " U5        g )Nz[31337]r   r   rG   s     r   test_decodeArrayOneItem&UltraJSONTests.test_decodeArrayOneItem      Ur   c                 4    Sn[         R                  " U5        g )N18446744073709551615r  rG   s     r   test_decodeLongUnsignedValue+UltraJSONTests.test_decodeLongUnsignedValue      &Ur   c                 4    Sn[         R                  " U5        g )N9223372036854775807r  rG   s     r   test_decodeBigValue"UltraJSONTests.test_decodeBigValue  s    %Ur   c                 4    Sn[         R                  " U5        g )Nz-9223372036854775808r  rG   s     r   test_decodeSmallValue$UltraJSONTests.test_decodeSmallValue  r&  r   c                 R    SnU R                  [        [        R                  U5        g N18446744073709551616r   rG   s     r   test_decodeTooBigValue%UltraJSONTests.test_decodeTooBigValue      &*ellE:r   c                 R    SnU R                  [        [        R                  U5        g Nz-90223372036854775809r   rG   s     r   test_decodeTooSmallValue'UltraJSONTests.test_decodeTooSmallValue      '*ellE:r   c                 R    SnU R                  [        [        R                  U5        g r/  r   rG   s     r   test_decodeVeryTooBigValue)UltraJSONTests.test_decodeVeryTooBigValue  r3  r   c                 R    SnU R                  [        [        R                  U5        g r5  r   rG   s     r   test_decodeVeryTooSmallValue+UltraJSONTests.test_decodeVeryTooSmallValue  r8  r   c                 4    Sn[         R                  " U5        g )Nz{}
	 r  rG   s     r   "test_decodeWithTrailingWhitespaces1UltraJSONTests.test_decodeWithTrailingWhitespaces  r!  r   c                 R    SnU R                  [        [        R                  U5        g )Nz{}
	 ar   rG   s     r   %test_decodeWithTrailingNonWhitespaces4UltraJSONTests.test_decodeWithTrailingNonWhitespaces  r  r   c                 R    SnU R                  [        [        R                  U5        g )Nz[18446744073709551616]r   rG   s     r   test_decodeArrayWithBigInt)UltraJSONTests.test_decodeArrayWithBigInt  s    (*ellE:r   c                 \   U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S	[        R                  " S
5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S 5      5        U R                  S![        R                  " S"5      5        U R                  S#[        R                  " S$5      5        g )%Ng3ӭz-1.1234567893gRCz-1.234567893gB4z-1.34567893g
LOz
-1.4567893g	jz	-1.567893g[_$z-1.67893geaz-1.7894g}?5^Iz-1.893gz-1.3g3ӭ?z1.1234567893gRC?z1.234567893gB4?z
1.34567893g
LO?z	1.4567893g	j?z1.567893g[_$?z1.67893gea?z1.7894g}?5^I?z1.893g?z1.3)r?   r   r   r0   s    r   'test_decodeFloatingPointAdditionalTests6UltraJSONTests.test_decodeFloatingPointAdditionalTests  s   }ekk/.JK|U[[-HI{EKK,FGz5;;|+DEy%++k*BCxZ)@AwI(>?vu{{8'<=tU[[%89|U[[-HI{EKK,FGz5;;|+DEy%++k*BCxZ)@AwI(>?vu{{8'<=uekk'&:;sEKK$67r   c                 R    SnU R                  [        [        R                  U5        g )Nz{"age", 44}r   rG   s     r   test_ReadBadObjectSyntax'UltraJSONTests.test_ReadBadObjectSyntax
  r  r   c                 P    U R                  S[        R                  " S5      5        g )NTtruer   r   r   r0   s    r   test_ReadTrueUltraJSONTests.test_ReadTrue      u{{623r   c                 P    U R                  S[        R                  " S5      5        g )NFfalserP  r0   s    r   test_ReadFalseUltraJSONTests.test_ReadFalse  s    G 45r   c                 P    U R                  S [        R                  " S5      5        g NnullrP  r0   s    r   test_ReadNullUltraJSONTests.test_ReadNull  rS  r   c                 P    U R                  S[        R                  " S5      5        g )NrO  Tr.   r0   s    r   test_WriteTrueUltraJSONTests.test_WriteTrue      T!23r   c                 P    U R                  S[        R                  " S5      5        g )NrU  Fr.   r0   s    r   test_WriteFalseUltraJSONTests.test_WriteFalse  s    %++e"45r   c                 P    U R                  S[        R                  " S 5      5        g rY  r.   r0   s    r   test_WriteNullUltraJSONTests.test_WriteNull  r`  r   c                 T    U R                  / SQ[        R                  " S5      5        g )NTFNz [ true, false,null] rP  r0   s    r   test_ReadArrayOfSymbols&UltraJSONTests.test_ReadArrayOfSymbols   s    ,ekk:Q.RSr   c                 T    U R                  S[        R                  " / SQ5      5        g Nz[true,false,null]rh  r.   r0   s    r    test_WriteArrayOfSymbolsFromList/UltraJSONTests.test_WriteArrayOfSymbolsFromList#  s    ,ekk:M.NOr   c                 P    U R                  S[        R                  " S5      5        g rl  r.   r0   s    r   !test_WriteArrayOfSymbolsFromTuple0UltraJSONTests.test_WriteArrayOfSymbolsFromTuple&  s    ,ekk:M.NOr   c                 R    SnU R                  [        [        R                  U5        g )Nu   )r   UnicodeEncodeErrorr   r/   )r   r   s     r   $test_encodingInvalidUnicodeCharacter3UltraJSONTests.test_encodingInvalidUnicodeCharacter)  s    ,ekk1=r   c                 d    SSSSSSS.n[         R                  " USS9nU R                  US5        g )Nr   )r4   cber  r  T)	sort_keysz%{"a":1,"b":1,"c":1,"d":1,"e":1,"f":1})r   r/   r   )r   data
sortedKeyss      r   test_sortKeysUltraJSONTests.test_sortKeys-  s5    QQQQQ?[[6
%LMr   getrefcountTztest requires sys.refcount)reasonc                     SS K nUR                  5         S/nSU0n[        R                  " U5      n[        R
                  " U5        U R                  U[        R                  " U5      5        g )Nr   abc1gccollectsysr  r   r/   r   )r   r  valuer{  	ref_counts        r   $test_does_not_leak_dictionary_values3UltraJSONTests.test_does_not_leak_dictionary_values2  sQ    


U|OOE*	DCOOE$:;r   c                 f   SS K nUR                  5         SnSnS/n/ SQnX$X50n[        R                  " U5      n[        R                  " U5      n[        R
                  " U5        U R                  U[        R                  " U5      5        U R                  U[        R                  " U5      5        g )Nr   r  r  r  r  )	r   r  rD   key2rC   value2r{  
ref_count1
ref_count2s	            r   "test_does_not_leak_dictionary_keys1UltraJSONTests.test_does_not_leak_dictionary_keys=  s    


d+__T*
__T*
DS__T%:;S__T%:;r   c                     SS K nUR                  5         SnSnX#0n[        R                  " U5      n[        R
                  " U5        U R                  U[        R                  " U5      5        g )Nr   r  r   r  r   r  rD   rC   r{  r  s         r   (test_does_not_leak_dictionary_string_key7UltraJSONTests.test_does_not_leak_dictionary_string_keyM  sR    


~__T*
DS__T%:;r   c                     SS K nUR                  5         SnSnX#0n[        R                  " U5      n[        R
                  " U5        U R                  U[        R                  " U5      5        g )Nr   )r4   r   r  r  s         r   'test_does_not_leak_dictionary_tuple_key6UltraJSONTests.test_does_not_leak_dictionary_tuple_keyY  sR    


~__T*
DS__T%:;r   c                     SS K nUR                  5         SnSnX#0n[        R                  " U5      n[        R
                  " U5        U R                  U[        R                  " U5      5        g )Nr      1r   r  r  s         r   'test_does_not_leak_dictionary_bytes_key6UltraJSONTests.test_does_not_leak_dictionary_bytes_keye  R    


~__T*
DS__T%:;r   c                     SS K nUR                  5         S nSnX#0n[        R                  " U5      n[        R
                  " U5        U R                  U[        R                  " U5      5        g )Nr   r   r  r  s         r   &test_does_not_leak_dictionary_None_key5UltraJSONTests.test_does_not_leak_dictionary_None_keyq  r  r   r'   N)r   r   r   r   r   r+   r1   r6   r9   r<   r@   rH   rR   rU   rX   r]   rb   re   ri   rq   ru   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r"  r'  r+  r3  r6  r9  r<  r@  rC  rH  rK  rO  rS  rV  rZ  r^  ra  rd  rj  rn  rr  ru  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r)  r,  r1  r6  r:  r=  r@  rC  rF  rI  rL  rQ  rV  r[  r^  rb  re  ri  rm  rp  rt  r}  unittestskipIfhasattrr  r  r  r  r  r  r  r   r'   r   r   r   r      sx   -B<
''
9,J(
J666/3////%.%$666	666666/%>&>>>K;;;;;;;;;;;;;;?
?
?
;;;56>MA66664
4
4
4
4
4
4
4
2

-96
67S>  !55-	:;;;;;"
;;;;;;8*;464464TPP>N
 __m4<Eab< c< __m4<Eab< c< __m4<Eab	< c	< __m4<Eab	< c	< __m4<Eab	< c	< __m4<Eab	< c	<r   r   __main__indenti  i  c                 2    [         R                  " SS0U S9  g )Nr4   Tr  rF   r  s    r   test_dump_huge_indentr    s    	LL#tV,r   first_lengthr      second_lengthi*  i*  c                 @    [         R                  " SU -  SU-  /5        g )Nr4   rR  )r   r/   )r  r  s     r   test_dump_long_stringr    s     
KK|#Vm%;<=r   c                      / =p[        S5       H?  nUR                  [        [        U5      5      5        US   n[        R                  " XS9  MA     g )Nr[   r  )r0  appendlistr   r/   )r4   _ais      r   test_dump_indented_nested_listr    s@    KA2Y
		$uQx.!VA  r   )r   r   r   r   rL   r   1   c                     [        [        5      R                  S5      n[        R                  " UR                  5       5      n[        R                  " X S9  g )Nz334-reproducer.jsonr  )r   __file__	with_namer   r   
read_bytesr/   )r  pathr4   s      r   test_issue_334r    s8    >##$9:DDOO%&A	KK!r   ztest_input, expected))z"\uD83D\uDCA9"u   💩)z"a\uD83D\uDCA9b"u   a💩b)z"\uD800"   )z
"a\uD800b"u   ab)z"\uDEAD"   )z
"a\uDEADb"u   ab)z"\uD83D\uD83D\uDCA9"u   💩)z"\uDCA9\uD83D\uDCA9"u   💩)z"\uD83D\uDCA9\uD83D"u   💩)z"\uD83D\uDCA9\uDCA9"u   💩)z"\uD83D \uDCA9"u    )u   ""r  )u   ""r  )u	   "a"u   a)u   ""u   c                     [         R                  " U 5      U:X  d   e[         R                  " U R                  SS5      5      U:X  d   e[        R                  " U 5      U:X  d   eg )Nr   surrogatepass)r   r   r   r   )
test_inputexpecteds     r    test_decode_surrogate_charactersr    sX    0 ;;z"h...;;z((/BCxOOO ::j!X---r   )r
   r   rN   r  r  pytestior   pathlibr   srslyr   r/   rm   TestCaser   r   mainmarkparametrizer  r0  r  r  r  r  r  r'   r   r   <module>r     s:      
      zzl<X&& l<^0 zMMO  4eU(;#<=- >- eAqk):;$uUE/B*CD> E <>! #9:" ;" ../..r   