a ze @sddlZddlmZddlZddlZddlZddlZddlZdZdZ Gdddej Z ddd Z Gd d d ej ZGd d d ej ZGdddej ZedkredS)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__r r __classcell__rrrrrsrFcCsF|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)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 Csltdt}t}zt|||dWn6tjyf}z|t|dWYd}~n d}~00dS)Ns begin 644 t1 No exception raisedzTruncated input file) r rr(r5rfailErrorr7rrr: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 rr5rr?r@r7rrArrrtest_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 rr5rr7rcodecs) rZ encodedtext1Z encodedtext2r4r(r:r;rIZdecodedrrrtest_garbage_paddingms   .  zUUTest.test_garbage_paddingcCs<tt}t}d}d}t||||||dS)Nztest.txt overflow.txtstest.txt\n\roverflow.txt)r rr4r5r6ZassertInr)rr:r;r+Z safefilenamerrrtest_newlines_escapeds  zUUTest.test_newlines_escapedN) r r!r"r<r=rCrErJrKrrrrr/:s   r/c@s,eZdZddZddZddZddZd S) UUStdIOTestcCstj|_tj|_dSr)sysstdinstdoutrrrrsetUpszUUStdIOTest.setUpcCs|jt_|jt_dSr)rNrMrOrrrrtearDownszUUStdIOTest.tearDowncCsJttdt_tt_tdddd|tj t ddddS)Nr$-r0r1) rr4rrMrNrOr5r6r7rr.rrrrr<s  zUUStdIOTest.test_encodecCsZttdddt_tt_tddtj}|jt_|jt_||t ddS)Nr1r0r$rR) rr.rrMrNrOr5r7rr4)rrOrrrr=s zUUStdIOTest.test_decodeN)r r!r"rPrQr<r=rrrrrLsrLc@s<eZdZddZddZddZddZd d Zd d Zd S) UUFileTestcCs<tjd|_tjd|_|tj|j|tj|jdS)Nio)rZ TESTFN_ASCIItmpintmpout addCleanupunlinkrrrrrPs  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)Nwbrbr2)r*) openrVrr4rWr5r6readr7r.)rZfinZfoutsrrrr<s(P&(zUUFileTest.test_encodecCst|jd"}|td|jWdn1s40Yt|jd}t|Wdn1sj0Yt|jd}|}Wdn1s0Y||t dSNrZr2r[ r\rVrr.rWr5rr]r7r4rfr^rrrr=s0(&zUUFileTest.test_decodecCst|jd"}|td|jWdn1s40Yt|jt|jd}|}Wdn1st0Y||t dSr_r`rarrrtest_decode_filenames 0 &zUUFileTest.test_decode_filenamecCst|jd"}|td|jWdn1s40Yt|jd}t|Wdn1sj0Yt|jd"}|tjtj|Wdn1s0YdSr_) r\rVrr.rWr5rr8r@)rrbrrrtest_decodetwices 0(zUUFileTest.test_decodetwicecCsd}t|jd"}|t||jWdn1s80Y|tj|j|tj Bt|jd}t |Wdn1s0Y| t t|jj|dS)Ni$rZr[)r\rVrr.rWrXoschmodstatS_IWRITEr5rr7S_IMODEst_mode)rZ expected_moderbrrrtest_decode_modes0(zUUFileTest.test_decode_modeN) r r!r"rPr<r=rcrdrkrrrrrSs    rS__main__)F)ZunittesttestrrergrMr5r r4r( TextIOWrapperrr.ZTestCaser/rLrSr mainrrrrs  ZL