
    z%iq#                     j    d dl mZmZ g dZdddZ G d d      Z G d d	ee      Z G d
 dee      Zy)    )PyTestCTest)"z<"A JSON payload should be an object or array, not a string."z["Unclosed array"z%{unquoted_key: "keys must be quoted"}z["extra comma",]z["double extra comma",,]z[   , "<-- missing value"]z["Comma after the close"],z["Extra close"]]z{"Extra comma": true,}z:{"Extra value after close": true} "misplaced quoted value"z{"Illegal expression": 1 + 2}z{"Illegal invocation": alert()}z+{"Numbers cannot have leading zeroes": 013}z{"Numbers cannot be hex": 0x14}z"["Illegal backslash escape: \x15"]z[\naked]z"["Illegal backslash escape: \017"]z2[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]z{"Missing colon" null}z{"Double colon":: null}z {"Comma instead of colon", null}z!["Colon instead of comma": false]z["Bad value", truth]z['single quote']z["	tab	character	in	string	"]z&["tab\   character\   in\  string\  "]z["line
break"]z["line\
break"]z[0e]z[0e+]z[0e+-1]z({"Comma instead if closing brace": true,z["mismatch"}z$["AZ control characters in string"]zwhy not have a string payload?z,spec doesn't specify any nesting limitations)      c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestFailc                     t        t              D ]W  \  }}|dz   }|t        v r| j                  |       %	 | j                  |       | j	                  dj                  ||             Y y # | j                  $ r Y lw xY w)Nr   z(Expected failure for fail{0}.json: {1!r})	enumerateJSONDOCSSKIPSloadsfailformatJSONDecodeError)selfidxdocs      L/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_json/test_fail.pytest_failureszTestFail.test_failuresQ   s    !(+ 
	WHC'Ce|

3W

3 		DKKCQTUV
	W '' s   A++A=<A=c                     ddd}| j                  t        d      5  | j                  |       d d d        y # 1 sw Y   y xY w)Nr      )a)r   r   z5keys must be str, int, float, bool or None, not tuple)assertRaisesRegex	TypeErrordumps)r   datas     r   test_non_string_keys_dictz"TestFail.test_non_string_keys_dict^   sA    !$##IGI 	JJt	 	 	s	   7A c                     dd l }| j                  t        d      5  | j                  |       d d d        y # 1 sw Y   y xY w)Nr   z.Object of type module is not JSON serializable)sysr   r   r   )r   r   s     r   test_not_serializablezTestFail.test_not_serializabled   s9    ##I@B 	JJsO	 	 	s   6?c                    g d}|ddgz  }|D ]  \  }}}| j                  | j                        5 }| j                  |       d d d        j                  }| j	                  |j
                  |       | j	                  |j                  |       | j	                  |j                  d       | j	                  |j                  |dz          | j	                  t        |      d||dz   |fz          y # 1 sw Y   xY w)N)) Expecting valuer   )[r#   r   )z[42Expecting ',' delimiter   )z[42,r#      )z["Unterminated string starting atr   )z["spamr(   r   )z["spam"r%      )z["spam",r#      ){1Expecting property name enclosed in double quotesr   )z{"r(   r   )z{"spamr(   r   )z{"spam"Expecting ':' delimiterr)   )z{"spam":r#   r*   )z
{"spam":42r%   
   )z{"spam":42,r,      )"r(   r   )z"spamr(   r   r   %s: line 1 column %d (char %d)
assertRaisesr   r   	exceptionassertEqualmsgposlinenocolnostrr   
test_casesr   r6   r   cmerrs          r   test_truncated_inputzTestFail.test_truncated_inputj   s    

" 	7;
 	

 ) 
	2ND#s""4#7#78 !B

4 !,,CSWWc*SWWc*SZZ+SYYa0SX=!37C012
	2! !   C00C9	c                    g d}|D ]  \  }}}| j                  | j                        5 }| j                  |       d d d        j                  }| j	                  |j
                  |       | j	                  |j                  |       | j	                  |j                  d       | j	                  |j                  |dz          | j	                  t        |      d||dz   |fz          y # 1 sw Y   xY w)N))z[,r#   r   )z
{"spam":[}r#   	   )z[42:r%   r&   )z
[42 "spam"r%   r'   )z[42,]r#   r'   )z{"spam":[42}r%   r/   )z["]r(   r   )z["spam":r%   r)   )z	["spam",]r#   r*   )z{:r,   r   )z{,r,   r   )z{42r,   r   )z[{]r,   r   )z{"spam",r-   r)   )z{"spam"}r-   r)   )z	[{"spam"]r-   r*   )z	{"spam":}r#   r*   )z
[{"spam":]r#   rB   )z{"spam":42 "ham"r%   r/   )z[{"spam":42]r%   r/   )z{"spam":42,}r,   r/   r   r1   r2   r;   s          r   test_unexpected_datazTestFail.test_unexpected_data   s    

. ) 
	2ND#s""4#7#78 !B

4 !,,CSWWc*SWWc*SZZ+SYYa0SX=!37C012
	2! !s   C))C2	c                    g d}|ddgz  }|D ]  \  }}}| j                  | j                        5 }| j                  |       d d d        j                  }| j	                  |j
                  |       | j	                  |j                  |       | j	                  |j                  d       | j	                  |j                  |dz          | j	                  t        |      d||dz   |fz          y # 1 sw Y   xY w)N))z[]]
Extra datar   )z{}}rE   r   )z[],[]rE   r   )z{},{}rE   r   )z	42,"spam"rE   r   )z	"spam",42rE      r   r1   r2   r;   s          r   test_extra_datazTestFail.test_extra_data   s    

 	**
 	

 ) 
	2ND#s""4#7#78 !B

4 !,,CSWWc*SWWc*SZZ+SYYa0SX=!37C012
	2! !r@   c                    g d}|D ]  \  }}}}| j                  | j                        5 }| j                  |       d d d        j                  }| j	                  |j
                  d       | j	                  |j                  |       | j	                  |j                  |       | j	                  |j                  |       | j	                  t        |      d|||fz          y # 1 sw Y   xY w)N))!r   r   r   )z !r   r   r   )z
!r   r   r   )z
  

     !r'   rF   r.   r#   z,Expecting value: line %s column %d (char %d)r2   )r   r<   r   linecolr   r=   r>   s           r   test_linecolzTestFail.test_linecol   s    

 %/ 
	/ D$S""4#7#78 !B

4 !,,CSWW&78SWWc*SZZ.SYY,SXK"C-./
	/! !s   C$$C-	N)
__name__
__module____qualname__r   r   r    r?   rC   rG   rL        r   r   r   P   s(    W 2D"2H2./rQ   r   c                       e Zd Zy)
TestPyFailNrM   rN   rO   rP   rQ   r   rS   rS          rQ   rS   c                       e Zd Zy)	TestCFailNrT   rP   rQ   r   rW   rW      rU   rQ   rW   N)test.test_jsonr   r   r   r   r   rS   rW   rP   rQ   r   <module>rY      sC    (EP (6	
H/ H/T )6 ( &% &rQ   