a „oeÖã@s‚ddlZddlZddlZddlZddlmZGdd„dƒZGdd„dƒZGdd„deƒZ Gd d „d ej j j ƒZ ed kr~e ¡dS) éN©Ú str2bytesc@sTeZdZgd¢ZejgZdd„Zdd„Zdd„Z dd „Z d d „Z d d „Z dd„Z dS)ÚPersists)Ú GetClassIDÚIsDirtyÚLoadÚSaveÚ GetSizeMaxÚInitNewcCstdƒ|_d|_dS)NZabcdefgé)rÚdataÚdirty©Úself©rú:C:\Program Files\Certbot\pkgs\win32com\test\testStreams.pyÚ__init__s zPersists.__init__cCstjS©N)Ú pythoncomZIID_NULLrrrrrszPersists.GetClassIDcCs|jSr)r rrrrrszPersists.IsDirtycCs| d¡|_dS)Né)ÚReadr )rÚstreamrrrrsz Persists.LoadcCs| |j¡|rd|_dS©Nr)ÚWriter r )rrZ clearDirtyrrrr!s z Persists.SavecCsdS)Nirrrrrr &szPersists.GetSizeMaxcCsdSrrrrrrr )szPersists.InitNewN)Ú__name__Ú __module__Ú __qualname__Ú_public_methods_rÚIID_IPersistStreamInitÚ_com_interfaces_rrrrrr r rrrrr src@s<eZdZgd¢ZejgZdd„Zdd„Zdd„Z dd „Z d S) ÚStream)rrÚSeekcCs||_d|_dSr©r Úindex©rr rrrr1szStream.__init__cCs&|j|j|j|…}|j||_|Srr")rÚamountÚresultrrrr5s z Stream.ReadcCs||_d|_t|ƒSr)r r#Úlenr$rrrr:sz Stream.WritecCs‚|tjkr||_nD|tjkr*|j||_n,|tjkrFt|jƒ||_ntdt|ƒƒ‚|jdkrhd|_nt |jt|jƒƒ|_|jS)NzUnknown Seek type: r) rÚSTREAM_SEEK_SETr#ZSTREAM_SEEK_CURZSTREAM_SEEK_ENDr'r Ú ValueErrorÚstrÚmin)rZdistÚoriginrrrr!?s    z Stream.SeekN) rrrrrÚ IID_IStreamrrrrr!rrrrr -s r c@seZdZdZdd„ZdS)Ú BadStreamzwPyGStream::Read could formerly overflow buffer if the python implementation returned more data than requested. cCstdƒ|dS)NÚxr r)rr%rrrrTszBadStream.ReadN)rrrÚ__doc__rrrrrr.Osr.c@s.eZdZd dd„Zdd„Zdd„Zdd „ZdS) Ú StreamTestNcCsv|dur |}| |¡| dtj¡| t|ƒ¡}| ||¡| dtj¡| t|ƒd¡}| |dd…|¡dS)Nrr ééÿÿÿÿ)rr!rr(rr'Ú assertEqual)rr Z write_streamZ read_streamZgotrrrÚ _readWriteYs  zStreamTest._readWritecCsÚtdƒ}t|ƒ}tƒ}| |¡| |d¡| |j|¡tjj   |t j ¡}tjj   |t j ¡}| |||¡| |||¡| |||¡| |||¡| tdƒ||¡| |¡| |¡| |d¡| |j|¡dS)NZabcdefghijklmnopqrstuvwxyzrzstring witha NULL)rr rrrr4r Úwin32comÚserverÚutilÚwraprr-rr5r)rZmydataÚsÚpÚs2Zp2rrrÚtestitds"     zStreamTest.testitcCs0ttdƒƒ}tjj |tj¡}| dtj ¡dS)NZyol) r rr6r7r8r9rr-r!r()rr:rrrÚtestseek€s zStreamTest.testseekcCsttjj ¡\}}tdƒ}tjj |tj¡}|  tj |j d¡tjj  |¡|  t|ƒd¡| |dj d¡¡dS)NzCheck for buffer overflowé r rzpythoncom error)r6Útestr8Zsetup_test_loggerr.r7r9rr-Z assertRaisesZ com_errorrZrestore_test_loggerr4r'Z assertTrueÚmsgÚ startswith)rZrecordsZold_logZ badstreamZ badstream2rrrÚ testerrors†szStreamTest.testerrors)N)rrrr5r=r>rCrrrrr1Xs r1Ú__main__)ZunittestrZwin32com.server.utilr6Zwin32com.test.utilZpywin32_testutilrrr r.r@r8ZTestCaser1rÚmainrrrrÚs $" ;