
    7bhA                         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mZ d dlm	Z	m
Z
  ej                  d      ZdZ G d de j                        Z G d d	ej                         Zed
k(  r ej&                          yy)    N)findfilewarnings_helper)TESTFNunlinkimghdr))
python.pngpng)z
python.gifgif)z
python.bmpbmp)z
python.ppmppm)z
python.pgmpgm)z
python.pbmpbm)z
python.jpgjpeg)zpython-raw.jpgr   )z
python.rasrast)z
python.sgirgb)zpython.tifftiff)z
python.xbmxbm)zpython.webpwebp)z
python.exrexrc                       e Zd Zd Zd Zy)UnseekableIOc                 "    t         j                  NioUnsupportedOperationselfs    :/opt/python-3.12.12/usr/lib/python3.12/test/test_imghdr.pytellzUnseekableIO.tell       %%%    c                 "    t         j                  r   r   )r   argskwargss      r   seekzUnseekableIO.seek!   r!   r"   N)__name__
__module____qualname__r    r&    r"   r   r   r      s    &&r"   r   c                   d    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zy)
TestImghdrc                     t        dd      | _        t        | j                  d      5 }|j                         | _        d d d        y # 1 sw Y   y xY w)Nr   
imghdrdatasubdirrb)r   testfileopenreadtestdata)clsstreams     r   
setUpClasszTestImghdr.setUpClass%   s9    \B#,,%!;;=CL &%%s   AAc                 "    t        t               y r   )r   r   r   s    r   tearDownzTestImghdr.tearDown+   s	    vr"   c           	         t         D ]  \  }}t        |d      }| j                  t        j	                  |      |       t        |d      5 }| j                  t        j	                  |      |       d d d        t        |d      5 }|j                         }d d d        | j                  t        j	                  d       |       | j                  t        j	                  d t        |            |        y # 1 sw Y   xY w# 1 sw Y   mxY w)Nr.   r/   r1   )
TEST_FILESr   assertEqualr   whatr3   r4   	bytearray)r   filenameexpectedr7   datas        r   	test_datazTestImghdr.test_data.   s    ",Hh>HV[[2H=h%  V!4h? &h%{{} &V[[t4h?V[[y?J #- &%%%s   &C6D6C?	D	c           	          t         D ]e  \  }}| j                  |      5  t        |d      }| j                  t        j                  t        j                  |            |       d d d        g y # 1 sw Y   rxY w)N)r@   r.   r/   )r<   subTestr   r=   r   r>   pathlibPath)r   r@   rA   s      r   test_pathlike_filenamez!TestImghdr.test_pathlike_filename9   s\    ",Hhx0#H\B  W\\(-C!DhO 10 #-00s   AA00A9	c                     d }t         j                  j                  |       | j                  t         j                  j                         | j                  t         j                  d d      d       y )Nc                 (    | j                  d      ryy )N   eggsham)
startswith)hfiles     r   
test_jumboz1TestImghdr.test_register_test.<locals>.test_jumbo@   s    ||G$ %r"   rK   rL   )r   testsappend
addCleanuppopr=   r>   )r   rP   s     r   test_register_testzTestImghdr.test_register_test?   sL    	 	J'(()T73U;r"   c                    t        t        d      5 }|j                  d       |j                         }|j                  | j                         d d d        t        t        d      5 }|j                         | j                  t        j                  |      d       | j                  |j                         |       d d d        y # 1 sw Y   yxY w# 1 sw Y   y xY w)Nwbs   ababagalamagar1   r	   )	r3   r   writer    r5   r&   r=   r   r>   )r   r7   poss      r   test_file_poszTestImghdr.test_file_posG   s    &$6LL)*++-CLL'   &$6KKV[[0%8V[[]C0  	    s   =C&ACCCc                 >   | j                  t              5  t        j                          d d d        | j                  t              5  t        j                  d        d d d        | j                  t              5  t        j                  | j
                  d       d d d        | j                  t              5  t        j                  t        j                  | j
                               d d d        t        | j
                  d      5 }| j                  t              5  t        j                  |j                                d d d        d d d        y # 1 sw Y   ,xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   DxY w# 1 sw Y   y xY w)N   r1   )
assertRaises	TypeErrorr   r>   AttributeErrorr2   osfsencoder3   fileno)r   fs     r   test_bad_argszTestImghdr.test_bad_argsQ   s    y)KKM *~.KK /y)KKq) *~.KKDMM23 /$--&!"">2AHHJ' 3 '& *)..)).. 32 '&sS   EE";!E/93E;
F $FFE"E,/E8;FF	FFc                 \    dD ]'  }| j                  t        j                  d |             ) y )N)s   PN
s   s   Ys   cutecats	   000000JFIs   GIF80)assertIsNoner   r>   )r   headers     r   test_invalid_headerszTestImghdr.test_invalid_headers^   s)    !F fkk$78!r"   c                 f   t        j                         5  t        j                  dt               t        D ]  \  }}t        |d      }t        |d      5 }|j                         j                  d      }d d d        | j                  t              5  t        j                  t        j                               d d d        | j                  t              5  t        j                  d        d d d         	 d d d        y # 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nignorer.   r/   r1   latin1)warningscatch_warningssimplefilterBytesWarningr<   r   r3   r4   decoder]   r^   r   r>   r   StringIO)r   r@   _r7   rB   s        r   test_string_datazTestImghdr.test_string_datag   s    $$&!!(L9)!#H\B(D)V!;;=//9D *&&y1KKD 12 2&&y1KKd+ 21  * '& *)1111 '&sT   A D' D5D')D;D'D/
D'DD'DD'D$ D''D0c                     | j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nmissing)r]   FileNotFoundErrorr   r>   r   s    r   test_missing_filezTestImghdr.test_missing_files   s)    01KK	" 211s   5>c                    t        | j                  d      }|j                          | j                  t              5 }t
        j                  |       d d d        t        j                  | j                        }|j                          | j                  t              5 }t
        j                  |       d d d        y # 1 sw Y   lxY w# 1 sw Y   y xY w)Nr1   )
r3   r2   closer]   
ValueErrorr   r>   r   BytesIOr5   r   r7   cms      r   test_closed_filezTestImghdr.test_closed_filew   s    dmmT*z*bKK +DMM*z*bKK +*	 +* +*s   B=C	=C	Cc                 `   t        t        d      5 }|j                  | j                         d d d        t	        t        d      5 }| j                  t        j                        5  t        j                  |       d d d        d d d        y # 1 sw Y   `xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrW   r1   )
r3   r   rX   r5   r   r]   r   r   r   r>   )r   r7   s     r   test_unseekablezTestImghdr.test_unseekable   sw    &$6LL'  &$'6""2#:#:;F# < ('   <; ('s/   B B$%B;B$BB!	B$$B-c                 $   t        t        d      5 }|j                  | j                         |j	                  d       | j                  t              5 }t        j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrW   r   )	r3   r   rX   r5   r&   r]   OSErrorr   r>   r|   s      r   test_output_streamzTestImghdr.test_output_stream   sd    &$6LL'KKN""7+rF# ,   ,+  s$   ABA:)B:B	?BBN)r'   r(   r)   classmethodr8   r:   rC   rH   rU   rZ   rd   rh   rs   rw   r~   r   r   r*   r"   r   r,   r,   $   sR    ) )
	KP<1(9
,# $$r"   r,   __main__)r   r`   rF   unittestrl   test.supportr   r   test.support.os_helperr   r   import_deprecatedr   r<   FileIOr   TestCaser,   r'   mainr*   r"   r   <module>r      sr    	 	    2 1	*	*	*8	4
"&299 &i$"" i$V zHMMO r"   