a 5êdg ã@s®dZddlZddlmZddlZddlZddlZddlZddlZdZ dZ Gdd„dej ƒZ dd d „Z Gd d „d ejƒZGd d„dejƒZGdd„dejƒZedkrªe ¡dS)z% Tests for uu module. Nick Mathewson é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__Ú__doc__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)TFr2r1r4sMUUencoded files may contain many lines, even some that have 'begin' in them. )r rr/r6rr8rr5)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)r6rÚfailÚErrorr8r©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 rr6rr@rAr8rrBrrrÚ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 rr6rr8rÚcodecs) rZ encodedtext1Z encodedtext2r5r)r;r<rJZdecodedrrrÚtest_garbage_paddingmsÿÿ   .  zUUTest.test_garbage_paddingcCs<t t¡}t ¡}d}d}t |||¡| || ¡¡dS)Nztest.txt overflow.txtstest.txt\n\roverflow.txt)r rr5r6r7ZassertInr)rr;r<r,Z safefilenamerrrÚtest_newlines_escaped‹s  zUUTest.test_newlines_escapedN) r r!r"r=r>rDrFrKrLrrrrr0:s   r0c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú UUStdIOTestcCstj|_tj|_dSr)ÚsysÚstdinÚstdoutrrrrÚsetUp–szUUStdIOTest.setUpcCs|jt_|jt_dSr)rOrNrPrrrrÚtearDownšszUUStdIOTest.tearDowncCsJtt d¡ƒt_tƒt_t dddd¡| tj  ¡t ddƒ d¡¡dS)Nr%ú-r1r2) rr5rrNrOrPr6r7r8rr/rrrrr=žs  ÿzUUStdIOTest.test_encodecCsZttddƒ d¡ƒt_tƒt_t dd¡tj}|jt_|jt_| | ¡t  d¡¡dS)Nr2r1r%rS) rr/rrNrOrPr6r8rr5)rrPrrrr>¥s zUUStdIOTest.test_decodeN)r r!r"rQrRr=r>rrrrrM”srMc@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ÚunlinkrrrrrQ°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Úrbr3)r+) ÚopenrWrr5rXr6r7Úreadr8r/)rZfinZfoutÚsrrrr=¶s(P&(zUUFileTest.test_encodecCs¸t|jdƒ"}| td|jƒ¡Wdƒn1s40Yt|jdƒ}t |¡Wdƒn1sj0Yt|jdƒ}| ¡}Wdƒn1sž0Y| |t ¡dS©Nr[r3r\© r]rWrr/rXr6rr^r8r5©rÚfr_rrrr>Ès0(&zUUFileTest.test_decodecCsŽt|jdƒ"}| td|jƒ¡Wdƒn1s40Yt |j¡t|jdƒ}| ¡}Wdƒn1st0Y| |t ¡dSr`rarbrrrÚ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]rWrr/rXr6rr9rA)rrcrrrÚ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$r[r\)r]rWrr/rXrYÚosÚchmodÚstatÚS_IWRITEr6rr8ÚS_IMODEÚst_mode)rZ expected_modercrrrÚtest_decode_modeès0(þzUUFileTest.test_decode_modeN) r r!r"rQr=r>rdrerlrrrrrT®s    rTÚ__main__)F)r#ZunittestÚtestrrfrhrNr6r r5r)Ú TextIOWrapperrr/ZTestCaser0rMrTr ÚmainrrrrÚs   ZL