a ze @sdZddlZddlmZddlZddlZddlZddlZddlZdZ dZ Gdddej Z dd d Z Gd d d ejZGd ddejZGdddejZedkredS)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|}| || ddS)N)encodingerrorsnewliner) superr__init__ioBytesIO _encoding_errors isinstancestrwriteseek)selfZ initial_valuerr r  __class__@/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_uu.pyr s  zFakeIO.__init__cCs||j|j|jSN)flushbuffergetvaluedecoderrrrrrr,szFakeIO.getvalue)rrrr)__name__ __module__ __qualname____doc__r r __classcell__rrrrrs rFcCsF|r(td||fdtddd}ntd||fdtd}|S)Nzbegin %03o %s ascii `s ` end s end )bytes encodedtextreplace)modefilenamebacktickresrrrencodedtextwrapped1s r/c@s<eZdZddZddZddZddZd d Zd d Zd S)UUTestcCstt}t}t||d||tddtt}t}t||dd||tddtt}t}tj||ddd||tddd|t "t||dddWdn1s0YdS)Nt1Tr-) r r plaintextuuencode assertEqualrr/ assertRaises TypeError)rinpoutrrr test_encode<s    zUUTest.test_encodec CsdD]x}ttdd|d}t}t||||ttdtdd|d}t}t||||tqdS)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 Csltdt}t}zt|||dWn6tjyf}z|t|dWYd}~n d}~00dS)Ns begin 644 t1 No exception raisedzTruncated input file) r rr)r6rfailErrorr8rrr;r<errrtest_truncatedinput[s zUUTest.test_truncatedinputc Cshtd}t}zt|||dWn6tjyb}z|t|dWYd}~n d}~00dS)Nr?z'No valid begin line found in input file)r rr6rr@rAr8rrBrrrtest_missingbeginds  zUUTest.test_missingbeginc Csd}d}d}||fD]}|dBt|}t}tj||dd|||Wdn1sj0Y|d0ddl}||d}|||Wdq1s0YqdS) Nsbegin 644 file !,___ end sbegin 644 file !,___ ` end 3z uu.decode()T)quietuu_codecr)ZsubTestr rr6rr8rcodecs) rZ encodedtext1Z encodedtext2r5r)r;r<rJZdecodedrrrtest_garbage_paddingms   .  zUUTest.test_garbage_paddingcCs<tt}t}d}d}t||||||dS)Nztest.txt overflow.txtstest.txt\n\roverflow.txt)r rr5r6r7ZassertInr)rr;r<r,Z safefilenamerrrtest_newlines_escapeds  zUUTest.test_newlines_escapedN) r r!r"r=r>rDrFrKrLrrrrr0:s   r0c@s,eZdZddZddZddZddZd S) UUStdIOTestcCstj|_tj|_dSr)sysstdinstdoutrrrrsetUpszUUStdIOTest.setUpcCs|jt_|jt_dSr)rOrNrPrrrrtearDownszUUStdIOTest.tearDowncCsJttdt_tt_tdddd|tj t ddddS)Nr%-r1r2) rr5rrNrOrPr6r7r8rr/rrrrr=s  zUUStdIOTest.test_encodecCsZttdddt_tt_tddtj}|jt_|jt_||t ddS)Nr2r1r%rS) rr/rrNrOrPr6r8rr5)rrPrrrr>s zUUStdIOTest.test_decodeN)r r!r"rQrRr=r>rrrrrMsrMc@s<eZdZddZddZddZddZd d Zd d Zd S) UUFileTestcCs<tjd|_tjd|_|tj|j|tj|jdS)Nio)rZ TESTFN_ASCIItmpintmpout addCleanupunlinkrrrrrQs  zUUFileTest.setUpc CsPt|jd}|tWdn1s,0Yt|jdP}t|jd$}tj|||jddWdn1sz0YWdn1s0Yt|jd}|}Wdn1s0Y||t d|jtj|j|j|jddt|jd}|}Wdn1s.0Y||t d|jdS)Nwbrbr3)r+) openrWrr5rXr6r7readr8r/)rZfinZfoutsrrrr=s(P&(zUUFileTest.test_encodecCst|jd"}|td|jWdn1s40Yt|jd}t|Wdn1sj0Yt|jd}|}Wdn1s0Y||t dSNr[r3r\ r]rWrr/rXr6rr^r8r5rfr_rrrr>s0(&zUUFileTest.test_decodecCst|jd"}|td|jWdn1s40Yt|jt|jd}|}Wdn1st0Y||t dSr`rarbrrrtest_decode_filenames 0 &zUUFileTest.test_decode_filenamecCst|jd"}|td|jWdn1s40Yt|jd}t|Wdn1sj0Yt|jd"}|tjtj|Wdn1s0YdSr`) r]rWrr/rXr6rr9rA)rrcrrrtest_decodetwices 0(zUUFileTest.test_decodetwicecCsd}t|jd"}|t||jWdn1s80Y|tj|j|tj Bt|jd}t |Wdn1s0Y| t t|jj|dS)Ni$r[r\)r]rWrr/rXrYoschmodstatS_IWRITEr6rr8S_IMODEst_mode)rZ expected_modercrrrtest_decode_modes0(zUUFileTest.test_decode_modeN) r r!r"rQr=r>rdrerlrrrrrTs    rT__main__)F)r#ZunittesttestrrfrhrNr6r r5r) TextIOWrapperrr/ZTestCaser0rMrTr mainrrrrs   ZL