a 5êdg ã@sªddlZddlmZddlZddlZddlZddlZddlZdZdZ Gdd„dej ƒZ ddd „Z Gd d „d ej ƒZGd d „d ej ƒZGdd„dej ƒZedkr¦e ¡dS)éN)Úsupports7The symbols on top of your keyboard are !@#$%^&*()_+|~ sOM5&AE('-Y;6)O;',@;VX@=&]P(&]F('EO=7(@:V5Y8F]At|ƒ}|  |¡|  d¡dS)N)ÚencodingÚerrorsÚnewliner) ÚsuperrÚ__init__ÚioÚBytesIOÚ _encodingÚ_errorsÚ isinstanceÚstrÚwriteÚseek)ÚselfZ initial_valuerr r ©Ú __class__©ú(/usr/local/lib/python3.9/test/test_uu.pyr sý  zFakeIO.__init__cCs| ¡|j ¡ |j|j¡S©N)ÚflushÚbufferÚgetvalueÚdecoderr©rrrrr,szFakeIO.getvalue)rrrr)Ú__name__Ú __module__Ú __qualname__r rÚ __classcell__rrrrrsÿrFcCsF|r(td||fdƒt dd¡d}ntd||fdƒtd}|S)Nzbegin %03o %s Úasciió ó`s ` end s end )ÚbytesÚ encodedtextÚreplace)ÚmodeÚfilenameÚbacktickÚresrrrÚencodedtextwrapped1s ÿÿÿÿr.c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚUUTestcCsêt t¡}t ¡}t ||d¡| | ¡tddƒ¡t t¡}t ¡}t ||dd¡| | ¡tddƒ¡t t¡}t ¡}tj||ddd| | ¡tdddƒ¡| t ¡"t ||ddd¡Wdƒn1sÜ0YdS)NÚt1é¶é¤T©r,) r rÚ plaintextÚuuÚencodeÚ assertEqualrr.Ú assertRaisesÚ TypeError)rÚinpÚoutrrrÚ test_encode<s    zUUTest.test_encodec Cs‚dD]x}t tdd|d¡}t ¡}t ||¡| | ¡t¡t dtdd|d¡}t ¡}t ||¡| | ¡t¡qdS)N)TFr1r0r3sMUUencoded files may contain many lines, even some that have 'begin' in them. )r rr.r5rr7rr4)rr,r:r;rrrÚ test_decodeLs  þÿ zUUTest.test_decodec Cslt dt¡}t ¡}zt ||¡| d¡Wn6tjyf}z| t|ƒd¡WYd}~n d}~00dS)Ns begin 644 t1 úNo exception raisedzTruncated input file) r rr(r5rÚfailÚErrorr7r©rr:r;ÚerrrÚtest_truncatedinput[s zUUTest.test_truncatedinputc Csht d¡}t ¡}zt ||¡| d¡Wn6tjyb}z| t|ƒd¡WYd}~n d}~00dS)Nór>z'No valid begin line found in input file)r rr5rr?r@r7rrArrrÚtest_missingbeginds  zUUTest.test_missingbeginc CsÄd}d}d}||fD]ª}| d¡Bt |¡}t ¡}tj||dd| | ¡|¡Wdƒn1sj0Y| d¡0ddl}| |d¡}| ||¡Wdƒq1s´0YqdS) Nsbegin 644 file !,___ end sbegin 644 file !,___ ` end ó3z uu.decode()T)ÚquietÚuu_codecr)ZsubTestr rr5rr7rÚcodecs) rZ encodedtext1Z encodedtext2r4r(r:r;rIZdecodedrrrÚtest_garbage_paddingmsÿÿ   .  zUUTest.test_garbage_paddingcCs<t t¡}t ¡}d}d}t |||¡| || ¡¡dS)Nztest.txt overflow.txtstest.txt\n\roverflow.txt)r rr4r5r6ZassertInr)rr:r;r+Z safefilenamerrrÚtest_newlines_escaped‹s  zUUTest.test_newlines_escapedN) r r!r"r<r=rCrErJrKrrrrr/:s   r/c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú UUStdIOTestcCstj|_tj|_dSr)ÚsysÚstdinÚstdoutrrrrÚsetUp–szUUStdIOTest.setUpcCs|jt_|jt_dSr)rNrMrOrrrrÚtearDownšszUUStdIOTest.tearDowncCsJtt d¡ƒt_tƒt_t dddd¡| tj  ¡t ddƒ d¡¡dS)Nr$ú-r0r1) rr4rrMrNrOr5r6r7rr.rrrrr<žs  ÿzUUStdIOTest.test_encodecCsZttddƒ d¡ƒt_tƒt_t dd¡tj}|jt_|jt_| | ¡t  d¡¡dS)Nr1r0r$rR) rr.rrMrNrOr5r7rr4)rrOrrrr=¥s zUUStdIOTest.test_decodeN)r r!r"rPrQr<r=rrrrrL”srLc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú UUFileTestcCs<tjd|_tjd|_| tj|j¡| tj|j¡dS)NÚiÚo)rZ TESTFN_ASCIIÚtmpinÚtmpoutÚ addCleanupÚunlinkrrrrrP°s  zUUFileTest.setUpc CsPt|jdƒ}| t¡Wdƒn1s,0Yt|jdƒP}t|jdƒ$}tj|||jddWdƒn1sz0YWdƒn1s˜0Yt|jdƒ}| ¡}Wdƒn1sÌ0Y| |t d|jƒ¡tj|j|j|jddt|jdƒ}| ¡}Wdƒn1s.0Y| |t d|jƒ¡dS)NÚwbÚrbr2)r*) ÚopenrVrr4rWr5r6Úreadr7r.)rZfinZfoutÚsrrrr<¶s(P&(zUUFileTest.test_encodecCs¸t|jdƒ"}| td|jƒ¡Wdƒn1s40Yt|jdƒ}t |¡Wdƒn1sj0Yt|jdƒ}| ¡}Wdƒn1sž0Y| |t ¡dS©NrZr2r[© r\rVrr.rWr5rr]r7r4©rÚfr^rrrr=Ès0(&zUUFileTest.test_decodecCsŽt|jdƒ"}| td|jƒ¡Wdƒn1s40Yt |j¡t|jdƒ}| ¡}Wdƒn1st0Y| |t ¡dSr_r`rarrrÚtest_decode_filenameÔs 0 &zUUFileTest.test_decode_filenamecCs¶t|jdƒ"}| td|jƒ¡Wdƒn1s40Yt|jdƒ}t |¡Wdƒn1sj0Yt|jdƒ"}| tjtj|¡Wdƒn1s¨0YdSr_) r\rVrr.rWr5rr8r@)rrbrrrÚtest_decodetwiceÞs 0(zUUFileTest.test_decodetwicecCs°d}t|jdƒ"}| t||jƒ¡Wdƒn1s80Y| tj|j|tj B¡t|jdƒ}t   |¡Wdƒn1s†0Y|  t  t |j¡j¡|¡dS)Ni$rZr[)r\rVrr.rWrXÚosÚchmodÚstatÚS_IWRITEr5rr7ÚS_IMODEÚst_mode)rZ expected_moderbrrrÚtest_decode_modeès0(þzUUFileTest.test_decode_modeN) r r!r"rPr<r=rcrdrkrrrrrS®s    rSÚ__main__)F)ZunittestÚtestrrergrMr5r r4r(Ú TextIOWrapperrr.ZTestCaser/rLrSr ÚmainrrrrÚs  ZL