a 5êdgŸã@s€ddlZddlZddlZddlZddlZddlZddlmZmZm Z dZ Gdd„dej ƒZ Gdd„dej ƒZedkr|e ¡dS) éN)ÚfindfileÚTESTFNÚunlink) )ú python.pngÚpng)z python.gifZgif)z python.bmpZbmp)z python.ppmZppm)z python.pgmZpgm)z python.pbmZpbm)z python.jpgZjpeg)z python.rasZrast)z python.sgiZrgb)z python.tiffZtiff)z python.xbmZxbm)z python.webpZwebp)z python.exrZexrc@seZdZdd„Zdd„ZdS)Ú UnseekableIOcCs tj‚dS©N©ÚioÚUnsupportedOperation©Úself©rú,/usr/local/lib/python3.9/test/test_imghdr.pyÚtellszUnseekableIO.tellcOs tj‚dSrr )r ÚargsÚkwargsrrrÚseekszUnseekableIO.seekN)Ú__name__Ú __module__Ú __qualname__rrrrrrrsrc@sxeZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS)Ú TestImghdrcCsHtddd|_t|jdƒ}| ¡|_Wdƒn1s:0YdS)NrÚ imghdrdata©ZsubdirÚrb)rÚtestfileÚopenÚreadÚtestdata)ÚclsÚstreamrrrÚ setUpClass!szTestImghdr.setUpClasscCs ttƒdSr)rrr rrrÚtearDown'szTestImghdr.tearDownc CsÊtD]À\}}t|dd}| t |¡|¡t|dƒ"}| t |¡|¡Wdƒn1s\0Yt|dƒ}| ¡}Wdƒn1sŽ0Y| t d|¡|¡| t dt|ƒ¡|¡qdS)Nrrr)Ú TEST_FILESrÚ assertEqualÚimghdrÚwhatrrÚ bytearray)r ÚfilenameÚexpectedr ÚdatarrrÚ test_data*s   0 &zTestImghdr.test_datac CsbtD]X\}}|j|d4t|dd}| t t |¡¡|¡Wdƒq1sR0YqdS)N)r(rr)r#ZsubTestrr$r%r&ÚpathlibÚPath)r r(r)rrrÚtest_pathlike_filename5s  z!TestImghdr.test_pathlike_filenamecCs:dd„}tj |¡| tjj¡| t dd¡d¡dS)NcSs| d¡rdSdS)NóeggsÚham)Ú startswith)ÚhÚfilerrrÚ test_jumbo<s z1TestImghdr.test_register_test..test_jumbor/r0)r%ZtestsÚappendZ addCleanupÚpopr$r&)r r4rrrÚtest_register_test;s zTestImghdr.test_register_testcCs¢ttdƒ.}| d¡| ¡}| |j¡Wdƒn1s>0Yttdƒ<}| |¡| t |¡d¡| | ¡|¡Wdƒn1s”0YdS)NÚwbs ababagalamagarr) rrÚwriterrrr$r%r&)r r ÚposrrrÚ test_file_posCs  *  zTestImghdr.test_file_posc CsF| t¡t ¡Wdƒn1s(0Y| t¡t d¡Wdƒn1s\0Y| t¡t |jd¡Wdƒn1s”0Y| t¡"t t |j¡¡Wdƒn1sÐ0Yt|jdƒJ}| t¡t |  ¡¡Wdƒn1s0YWdƒn1s80YdS)Nér) Ú assertRaisesÚ TypeErrorr%r&ÚAttributeErrorrÚosÚfsencoderÚfileno)r ÚfrrrÚ test_bad_argsMs & ( , 0 zTestImghdr.test_bad_argscCs dD]}| t d|¡¡qdS)N)s‰PN sÙsY¦scutecats 000000JFIsGIF80)Z assertIsNoner%r&)r ÚheaderrrrÚtest_invalid_headersZszTestImghdr.test_invalid_headersc Csút ¡Þt dt¡tD]¼\}}t|dd}t|dƒ}| ¡ d¡}Wdƒn1s\0Y|  t ¡ t   t  |¡¡Wdƒn1s–0Y|  t ¡t   d|¡Wdƒq1sÌ0YqWdƒn1sì0YdS)NÚignorerrrÚlatin1)ÚwarningsÚcatch_warningsÚ simplefilterÚ BytesWarningr#rrrÚdecoder=r>r%r&r ÚStringIO)r r(Ú_r r*rrrÚtest_string_datacs     , . zTestImghdr.test_string_datacCs8| t¡t d¡Wdƒn1s*0YdS)NÚmissing)r=ÚFileNotFoundErrorr%r&r rrrÚtest_missing_fileos zTestImghdr.test_missing_filecCs”t|jdƒ}| ¡| t¡}t |¡Wdƒn1s>0Yt |j ¡}| ¡| t¡}t |¡Wdƒn1s†0YdS)Nr) rrÚcloser=Ú ValueErrorr%r&r ÚBytesIOr©r r ÚcmrrrÚtest_closed_filess  (  zTestImghdr.test_closed_filec Csšttdƒ}| |j¡Wdƒn1s,0YttdƒF}| tj¡t  |¡Wdƒn1sn0YWdƒn1sŒ0YdS)Nr8r) rrr9rrr=r r r%r&)r r rrrÚtest_unseekable}s  * zTestImghdr.test_unseekablec CsxttdƒZ}| |j¡| d¡| t¡}t |¡Wdƒn1sL0YWdƒn1sj0YdS)Nr8r) rrr9rrr=ÚOSErrorr%r&rWrrrÚtest_output_stream„s     zTestImghdr.test_output_streamN)rrrÚ classmethodr!r"r+r.r7r;rDrFrPrSrYrZr\rrrrr s       rÚ__main__)r%r r@r,ZunittestrIZ test.supportrrrr#ÚFileIOrZTestCaserrÚmainrrrrÚsk