o
    HXh                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 dZG dd dejZG dd dejZed	krDe  dS dS )
    N)findfile)TESTFNunlink))
python.pngpng)z
python.gifZgif)z
python.bmpZbmp)z
python.ppmZppm)z
python.pgmZpgm)z
python.pbmZpbm)z
python.jpgZjpeg)z
python.rasZrast)z
python.sgiZrgb)zpython.tiffZtiff)z
python.xbmZxbm)zpython.webpZwebp)z
python.exrZexrc                   @   s   e Zd Zdd Zdd ZdS )UnseekableIOc                 C      t jNioUnsupportedOperationself r   :/opt/python-3.10.19/usr/lib/python3.10/test/test_imghdr.pytell      zUnseekableIO.tellc                 O   r   r	   r
   )r   argskwargsr   r   r   seek   r   zUnseekableIO.seekN)__name__
__module____qualname__r   r   r   r   r   r   r      s    r   c                   @   sx   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )
TestImghdrc                 C   sJ   t ddd| _t| jd}| | _W d    d S 1 sw   Y  d S )Nr   
imghdrdataZsubdirrb)r   testfileopenreadtestdata)clsstreamr   r   r   
setUpClass#   s   "zTestImghdr.setUpClassc                 C   s   t t d S r	   )r   r   r   r   r   r   tearDown)   s   zTestImghdr.tearDownc              	   C   s   t D ]`\}}t|dd}| t|| t|d}| t|| W d    n1 s.w   Y  t|d}| }W d    n1 sGw   Y  | td || | td t|| qd S )Nr   r   r   )
TEST_FILESr   assertEqualimghdrwhatr   r   	bytearray)r   filenameexpectedr"   datar   r   r   	test_data,   s   
zTestImghdr.test_datac              	   C   sb   t D ],\}}| j|d t|dd}| tt|| W d    n1 s)w   Y  qd S )N)r*   r   r   )r%   ZsubTestr   r&   r'   r(   pathlibPath)r   r*   r+   r   r   r   test_pathlike_filename7   s   z!TestImghdr.test_pathlike_filenamec                 C   s:   dd }t j| | t jj | t d dd d S )Nc                 S   s   |  drdS d S )N   eggsham)
startswith)hfiler   r   r   
test_jumbo>   s   
z1TestImghdr.test_register_test.<locals>.test_jumbor1   r2   )r'   ZtestsappendZ
addCleanuppopr&   r(   )r   r6   r   r   r   test_register_test=   s   zTestImghdr.test_register_testc                 C   s   t td}|d | }|| j W d    n1 sw   Y  t td}|| | t|d | | | W d    d S 1 sKw   Y  d S )Nwbs   ababagalamagar   r   )	r   r   writer   r    r   r&   r'   r(   )r   r"   posr   r   r   test_file_posE   s   

"zTestImghdr.test_file_posc              	   C   sT  |  t t  W d    n1 sw   Y  |  t td  W d    n1 s.w   Y  |  t t| jd W d    n1 sJw   Y  |  t tt| j W d    n1 shw   Y  t| jd-}|  t t|	  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )N   r   )
assertRaises	TypeErrorr'   r(   AttributeErrorr   osfsencoder   fileno)r   fr   r   r   test_bad_argsO   s&   
"zTestImghdr.test_bad_argsc                 C   s    dD ]}|  td | qd S )N)s   PN
s   s   Ys   cutecats	   000000JFIs   GIF80)ZassertIsNoner'   r(   )r   headerr   r   r   test_invalid_headers\   s   zTestImghdr.test_invalid_headersc              
   C   s   t  p t dt tD ]^\}}t|dd}t|d}| d}W d    n1 s.w   Y  | 	t
 tt| W d    n1 sKw   Y  | 	t
 td | W d    n1 sfw   Y  qW d    d S 1 sww   Y  d S )Nignorer   r   r   latin1)warningscatch_warningssimplefilterBytesWarningr%   r   r   r   decoder?   r@   r'   r(   r   StringIO)r   r*   _r"   r,   r   r   r   test_string_datae   s    
"zTestImghdr.test_string_datac                 C   s:   |  t td W d    d S 1 sw   Y  d S )Nmissing)r?   FileNotFoundErrorr'   r(   r   r   r   r   test_missing_fileq   s   "zTestImghdr.test_missing_filec                 C   s   t | jd}|  | t}t| W d    n1 sw   Y  t| j	}|  | t}t| W d    d S 1 sDw   Y  d S )Nr   )
r   r   closer?   
ValueErrorr'   r(   r   BytesIOr    r   r"   cmr   r   r   test_closed_fileu   s   "zTestImghdr.test_closed_filec              	   C   s   t td}|| j W d    n1 sw   Y  ttd,}| tj t	| W d    n1 s7w   Y  W d    d S W d    d S 1 sOw   Y  d S )Nr:   r   )
r   r   r;   r    r   r?   r   r   r'   r(   )r   r"   r   r   r   test_unseekable   s   "zTestImghdr.test_unseekablec              	   C   s   t td6}|| j |d | t}t| W d    n1 s&w   Y  W d    d S W d    d S 1 s>w   Y  d S )Nr:   r   )	r   r   r;   r    r   r?   OSErrorr'   r(   rY   r   r   r   test_output_stream   s   
"zTestImghdr.test_output_streamN)r   r   r   classmethodr#   r$   r-   r0   r9   r=   rF   rH   rR   rU   r[   r\   r^   r   r   r   r   r   "   s    

	
r   __main__)r'   r   rB   r.   ZunittestrK   Ztest.supportr   Ztest.support.os_helperr   r   r%   FileIOr   ZTestCaser   r   mainr   r   r   r   <module>   s    k