o
    KXhi	                     @   sb   d dl mZ d dlmZmZ d dlmZmZ G dd dZG dd deeZ	G dd	 d	eeZ
d
S )    )StringIO)PyTestCTest)
bigmemtest_1Gc                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestDumpc                 C   s(   t  }| ji | | | d d S Nz{})r   jsondumpassertEqualgetvalue)selfsio r   B/opt/python-3.10.19/usr/lib/python3.10/test/test_json/test_dump.py	test_dump   s   zTestDump.test_dumpc                 C   s   |  | i d d S r   r   dumpsr   r   r   r   
test_dumps   s   zTestDump.test_dumpsc                 C   sx   ddd}|  t | j| W d    n1 sw   Y  | jj|dd}| j|}| d| | d| d S )NFT)   invalid_key	valid_key)Zskipkeysr   r   )ZassertRaises	TypeErrorr	   r   loadsZassertInZassertNotIn)r   vsor   r   r   test_dump_skipkeys   s   
zTestDump.test_dump_skipkeysc                 C   s@   |  | jdddddd |  | jddddd	ddd
 d S )NFT)TFZ	sort_keysz{"false": true, "true": false}g      @      )   g      @F   z+{"false": 1, "2": 3.0, "4.0": 5, "6": true}r   r   r   r   r   test_encode_truefalse   s   
zTestDump.test_encode_truefalsec                    s2   t  gd   fdd}| | j |dd d S )N
   c                    s
    d= d S )Nr   )objar   r   crasher$   s   
z-TestDump.test_encode_mutated.<locals>.crasher)defaultz[null, null, null, null, null])objectr   r   )r   r)   r   r'   r   test_encode_mutated"   s
   zTestDump.test_encode_mutatedc                    sd   G  fdddt }G  fdddfddtdD  | }d|d	< | | j|d
dd d S )Nc                       s   e Zd Z fddZdS )z)TestDump.test_encode_evil_dict.<locals>.Dc                    s    S )Nr   r   Lr   r   keys,      z.TestDump.test_encode_evil_dict.<locals>.D.keysN)__name__
__module____qualname__r/   r   r-   r   r   D+   s    r4   c                       s    e Zd Z fddZdd ZdS )z)TestDump.test_encode_evil_dict.<locals>.Xc                    s
    d= dS )Nr   9  r   r   r-   r   r   __hash__0   s   z2TestDump.test_encode_evil_dict.<locals>.X.__hash__c                 S   s   dS )Nr   r   )r   r   r   r   r   __lt__4   r0   z0TestDump.test_encode_evil_dict.<locals>.X.__lt__N)r1   r2   r3   r6   r7   r   r-   r   r   X/   s    r8   c                    s   g | ]}  qS r   r   ).0i)r8   r   r   
<listcomp>7   s    z2TestDump.test_encode_evil_dict.<locals>.<listcomp>ib  ztrue.datr5   Tr   z{"1337": "true.dat"})dictranger   r   )r   r4   dr   )r.   r8   r   test_encode_evil_dict*   s   zTestDump.test_encode_evil_dictN)	r1   r2   r3   r   r   r   r#   r,   r?   r   r   r   r   r      s    
	r   c                   @   s   e Zd ZdS )
TestPyDumpN)r1   r2   r3   r   r   r   r   r@   =   s    r@   c                   @   s    e Zd Zeedddd ZdS )	TestCDumpr    )sizeZmemusec                 C   s   t d|t  }dg| }| |}| t||d  | |d d d | |dd  d | |dd d|d   d S )Ni  r       [z1]z1, )intr   r   r   len)r   rB   Nlencodedr   r   r   test_large_listF   s   

 zTestCDump.test_large_listN)r1   r2   r3   r   r   rK   r   r   r   r   rA   ?   s    
rA   N)ior   Ztest.test_jsonr   r   Ztest.supportr   r   r   r@   rA   r   r   r   r   <module>   s    7