§
    Ètºf//  ã                   óÚ   — d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
  G d„ d¦  «        Z G d„ d	ee
j        ¦  «        Z G d
„ dee
j        ¦  «        Z G d„ de
j        ¦  «        ZdS )z'
Tests for L{twisted.python.zipstream}
é    N)Úmd5)ÚfilepathÚ	zipstream)Úunittestc                   óN   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )ÚFileEntryMixinz?
    File entry classes should behave as file-like objects
    c                 ó  — |                       ¦   «         }t          j        |d| j        ¦  «        5 }|                     d|¦  «         ddd¦  «         n# 1 swxY w Y   t          j        |d¦  «        }|                     d¦  «        S )z6
        Return an appropriate zip file entry
        ÚwÚcontentNÚr)ÚmktempÚzipfileÚZipFileÚcompressionÚwritestrr   ÚChunkingZipFileÚreadfile)ÚselfÚcontentsÚfilenameÚzs       úa/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/python/test/test_zipstream.pyÚgetFileEntryzFileEntryMixin.getFileEntry   s²   € ð —;’;‘=”=ˆÝŒ_˜X s¨DÔ,<Ñ=Ô=ð 	,ÀØ�JŠJ�y (Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,åÔ% h°Ñ4Ô4ˆØ�zŠz˜)Ñ$Ô$Ð$s   °AÁAÁAc                 ó°   — |                       d¦  «        5 }|                      |                     ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zK
        zip files should not be ttys, so isatty() should be false
        Ú N)r   ÚassertFalseÚisatty©r   Ú	fileEntrys     r   Útest_isattyzFileEntryMixin.test_isatty    s™   € ð ×Ò˜rÑ"Ô"ð 	1 iØ×Ò˜Y×-Ò-Ñ/Ô/Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	1ð 	1s   –(AÁAÁAc                 óÈ   — |                       d¦  «        5 }|                      |j        ¦  «         ddd¦  «         n# 1 swxY w Y   |                      |j        ¦  «         dS )zd
        The C{closed} attribute should reflect whether C{close()} has been
        called.
        r   N)r   r   ÚclosedÚ
assertTruer   s     r   Útest_closedzFileEntryMixin.test_closed'   sœ   € ð
 ×Ò˜rÑ"Ô"ð 	/ iØ×Ò˜YÔ-Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/à�Š˜	Ô(Ñ)Ô)Ð)Ð)Ð)s   –=½AÁAc                 óR  — |                       d¦  «        5 }|                      |                     ¦   «         d¦  «         |                      |                     ¦   «         d¦  «         |                      |                     ¦   «         d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zk
        C{readline()} should mirror L{file.readline} and return up to a single
        delimiter.
        s   hoho
hos   hoho
ó   hoó    N)r   ÚassertEqualÚreadliner   s     r   Útest_readlinezFileEntryMixin.test_readline0   sß   € ð
 ×Ò˜{Ñ+Ô+ð 	8¨yØ×Ò˜Y×/Ò/Ñ1Ô1°9Ñ=Ô=Ð=Ø×Ò˜Y×/Ò/Ñ1Ô1°5Ñ9Ô9Ð9Ø×Ò˜Y×/Ò/Ñ1Ô1°3Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   –A9BÂB Â#B c                 óB  — |                       d¦  «        5 }|                      |                     ¦   «         d¦  «         |                      |                     ¦   «         d¦  «         |                      t          |j        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zV
        Zip file entries should implement the iterator protocol as files do.
        s   ho
hohoó   ho
s   hohoN)r   r(   ÚnextÚassertRaisesÚStopIterationr   s     r   Ú	test_nextzFileEntryMixin.test_next:   sÑ   € ð ×Ò˜{Ñ+Ô+ð 	=¨yØ×Ò˜YŸ^š^Ñ-Ô-¨wÑ7Ô7Ð7Ø×Ò˜YŸ^š^Ñ-Ô-¨wÑ7Ô7Ð7Ø×Ò�m¨Y¬^Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=s   –A1BÂBÂBc                 ó¶   — |                       d¦  «        5 }|                      |                     ¦   «         g d¢¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zG
        C{readlines()} should return a list of all the lines.
        s   ho
ho
ho)r,   r,   r&   N)r   r(   Ú	readlinesr   s     r   Útest_readlineszFileEntryMixin.test_readlinesC   sµ   € ð ×Ò˜}Ñ-Ô-ð 	O°Ø×Ò˜Y×0Ò0Ñ2Ô2Ð4MÐ4MÐ4MÑNÔNÐNð	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oð 	Oð 	Os   –+AÁAÁAc                 óø   — |                       d¦  «        5 }|                      t          |¦  «        |¦  «         |                      |                     ¦   «         |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zJ
        C{__iter__()} and C{xreadlines()} should return C{self}.
        r   N)r   ÚassertIsÚiterÚ
xreadlinesr   s     r   Útest_iterationzFileEntryMixin.test_iterationJ   s³   € ð ×Ò˜rÑ"Ô"ð 	= iØ�MŠM�$˜y™/œ/¨9Ñ5Ô5Ð5Ø�MŠM˜)×.Ò.Ñ0Ô0°)Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=s   –AA/Á/A3Á6A3c                 ó¶   — d}|                       |¦  «        5 }|                      |                     ¦   «         |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z9
        C{.read()} should read the entire file.
        s   Hello, world!N)r   r(   Úread©r   r   Úentrys      r   Útest_readWholezFileEntryMixin.test_readWholeR   sœ   € ð $ˆØ×Ò˜xÑ(Ô(ð 	5¨EØ×Ò˜UŸZšZ™\œ\¨8Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s   ˜)AÁAÁAc                 ó  — d}|                       |¦  «        5 }|                     d¦  «        }|                     d¦  «        }ddd¦  «         n# 1 swxY w Y   |                      |d¦  «         |                      |d¦  «         dS )zD
        C{.read(num)} should read num bytes from the file.
        Ú
0123456789é   éÈ   Ns   0123s   456789)r   r:   r(   )r   r   r<   ÚoneÚtwos        r   Útest_readPartialzFileEntryMixin.test_readPartialZ   sÁ   € ð  ˆØ×Ò˜xÑ(Ô(ð 	"¨EØ—*’*˜Q‘-”-ˆCØ—*’*˜S‘/”/ˆCð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	×Ò˜˜gÑ&Ô&Ð&Ø×Ò˜˜iÑ(Ô(Ð(Ð(Ð(s   ˜+AÁAÁAc                 óZ  — d}|                       |¦  «        5 }|                     d¦  «         |                      |                     ¦   «         d¦  «         |                     d¦  «         |                      |                     ¦   «         d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zb
        C{.tell()} should return the number of bytes that have been read so
        far.
        Údxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxé   r@   é   N)r   r:   r(   Útellr;   s      r   Ú	test_tellzFileEntryMixin.test_telle   sØ   € ð
 ˆØ×Ò˜xÑ(Ô(ð 	.¨EØ�JŠJ�q‰MŒMˆMØ×Ò˜UŸZšZ™\œ\¨1Ñ-Ô-Ð-Ø�JŠJ�q‰MŒMˆMØ×Ò˜UŸZšZ™\œ\¨1Ñ-Ô-Ð-ð		.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   ˜A;B Â B$Â'B$N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r$   r*   r0   r3   r8   r=   rD   rJ   © r'   r   r   r      s·   € € € € € ðð ð%ð %ð %ð1ð 1ð 1ð*ð *ð *ð8ð 8ð 8ð=ð =ð =ðOð Oð Oð=ð =ð =ð5ð 5ð 5ð	)ð 	)ð 	)ð
.ð 
.ð 
.ð 
.ð 
.r'   r   c                   ó    — e Zd ZdZej        ZdS )ÚDeflatedZipFileEntryTestsz2
    DeflatedZipFileEntry should be file-like
    N)rK   rL   rM   rN   r   ÚZIP_DEFLATEDr   rO   r'   r   rQ   rQ   r   s"   € € € € € ðð ð Ô&€K€K€Kr'   rQ   c                   ó    — e Zd ZdZej        ZdS )ÚZipFileEntryTestsz*
    ZipFileEntry should be file-like
    N)rK   rL   rM   rN   r   Ú
ZIP_STOREDr   rO   r'   r   rT   rT   z   s"   € € € € € ðð ð Ô$€K€K€Kr'   rT   c                   óh   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚZipstreamTestsz,
    Tests for twisted.python.zipstream
    c                 óþ   — t          j        |                      ¦   «         ¦  «        | _        | j                             ¦   «          | j                             d¦  «        | _        | j                             ¦   «          dS )zz
        Creates junk data that can be compressed and a test directory for any
        files that will be created
        ÚunzippedN)r   ÚFilePathr   ÚtestdirÚmakedirsÚchildÚunzipdir©r   s    r   ÚsetUpzZipstreamTests.setUp‡   sc   € õ
  Ô(¨¯ª©¬Ñ7Ô7ˆŒØŒ×ÒÑÔÐØœ×*Ò*¨:Ñ6Ô6ˆŒØŒ×ÒÑ Ô Ð Ð Ð r'   r   c                 ó(  — | j                              d¦  «        j        }t          j        |d¦  «        5 }t          |¦  «        D ]4\  }}t          |¦  «        }|r|dz   |z   }|                     ||¦  «         Œ5	 ddd¦  «         n# 1 swxY w Y   |S )z¤
        Makes a zip file archive containing len(contents) files.  Contents
        should be a list of strings, each string being the content of one file.
        zzipfile.zipr
   ú/N)r[   r]   Úpathr   r   Ú	enumerateÚstrr   )r   r   Ú	directoryÚ
zpfilenameÚzpfileÚir   r   s           r   ÚmakeZipFilezZipstreamTests.makeZipFile‘   sà   € ð
 ”\×'Ò'¨Ñ6Ô6Ô;ˆ
ÝŒ_˜Z¨Ñ-Ô-ð 	3°Ý'¨Ñ1Ô1ð 3ð 3‘
��7Ý˜q™6œ6�Øð :Ø(¨3™°Ñ9�HØ—’ ¨'Ñ2Ô2Ð2Ð2ð	3ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð Ðs   µABÂBÂBc                 óÈ   — t          j        |                      ¦   «         d¦  «        5 }|                      t          |j        d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z€
        A ChunkingZipFile opened in write-mode should not allow .readfile(),
        and raise a RuntimeError instead.
        r
   Ú	somethingN)r   r   r   r.   ÚRuntimeErrorr   ©r   Úczfs     r   Útest_invalidModezZipstreamTests.test_invalidModeŸ   s­   € õ
 Ô& t§{¢{¡}¤}°cÑ:Ô:ð 	G¸cØ×Ò�l¨C¬L¸+ÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gs   ¨"AÁAÁAc                 óÂ   — t          j        |                      dg¦  «        d¦  «        }|                     ¦   «          |                      t
          |j        d¦  «         dS )zn
        A closed ChunkingZipFile should raise a L{RuntimeError} when
        .readfile() is invoked.
        rl   r   N)r   r   rj   Úcloser.   rm   r   rn   s     r   Útest_closedArchivez!ZipstreamTests.test_closedArchive§   sS   € õ
 Ô'¨×(8Ò(8¸+¸Ñ(GÔ(GÈÑMÔMˆØ�	Š	‰ŒˆØ×Ò�,¨¬°kÑBÔBÐBÐBÐBr'   c                 ó¸  — |                       ddg¦  «        }t          j        |d¦  «        5 }|                     d¦  «        j        }ddd¦  «         n# 1 swxY w Y   t          |d¦  «        5 }|                     |d¦  «         |                     d¦  «         ddd¦  «         n# 1 swxY w Y   t          j	        |¦  «        5 }|  
                    t          j        |j        d¦  «         |                     d	¦  «        5 }|                      |                     ¦   «         d
¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )z¤
        A zipfile entry with the wrong magic number should raise BadZipFile for
        readfile(), but that should not affect other files in the archive.
        ztest contentszmore contentsr   Ú0Núr+br   s   0000Ú1ó   more contents)rj   r   r   ÚgetinfoÚheader_offsetÚopenÚseekÚwriter   r   r.   Ú
BadZipFiler   r(   r:   )r   ÚfnÚzfÚ
zeroOffsetÚscribblero   Úzfes          r   Útest_invalidHeaderz!ZipstreamTests.test_invalidHeader°   s.  € ð
 ×Ò˜°Ð@ÑAÔAˆÝŒ_˜R Ñ%Ô%ð 	7¨ØŸš C™œÔ6ˆJð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ �"�e‰_Œ_ð 	% Ø�MŠM˜* aÑ(Ô(Ð(Ø�NŠN˜8Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%õ Ô& rÑ*Ô*ð 	?¨cØ×Ò�gÔ0°#´,ÀÑDÔDÐDØ—’˜cÑ"Ô"ð ? cØ× Ò  §¢¡¤Ð-=Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?sY   ­AÁAÁAÁ/,B'Â'B+Â.B+Ã<EÄ)D7Ä+EÄ7D;	Ä;EÄ>D;	Ä?EÅEÅEc                 óê  — |                       ddg¦  «        }t          j        |d¦  «        5 }|                     d¦  «        }d|_        ddd¦  «         n# 1 swxY w Y   t          |d¦  «        5 }|                     |j        d¦  «         |                     | 	                    ¦   «         ¦  «         ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        5 }|                      t          j        |j        d¦  «         |                     d	¦  «        5 }|                      |                     ¦   «         d¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )
zƒ
        A zipfile entry with a different filename than is found in the central
        directory should raise BadZipFile.
        s   test contentsrx   r   ru   znot zeroNrv   r   rw   )rj   r   r   ry   r   r{   r|   rz   r}   Ú
FileHeaderr   r   r.   r~   r   r(   r:   )r   r   r€   Úinfor‚   ro   rƒ   s          r   Útest_filenameMismatchz$ZipstreamTests.test_filenameMismatchÁ   sA  € ð
 ×ÒÐ/Ð1AÐBÑCÔCˆÝŒ_˜R Ñ%Ô%ð 	'¨Ø—:’:˜c‘?”?ˆDØ&ˆDŒMð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'õ �"�e‰_Œ_ð 	. Ø�MŠM˜$Ô,¨aÑ0Ô0Ð0Ø�NŠN˜4Ÿ?š?Ñ,Ô,Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ Ô& rÑ*Ô*ð 	?¨cØ×Ò�gÔ0°#´,ÀÑDÔDÐDØ—’˜cÑ"Ô"ð ? cØ× Ò  §¢¡¤Ð-=Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?sZ   ­AÁAÁAÁ1AC Ã CÃCÃ<E(Ä)EÅE(ÅE	ÅE(ÅE	ÅE(Å(E,Å/E,c                 ó�  — |                       ¦   «         }t          j        |d¦  «        5 }t          j        d¦  «        }|                     |d¦  «         d|_        ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        5 }|                      t          j	        |j
        d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zq
        A zipfile which describes an unsupported compression mechanism should
        raise BadZipFile.
        r
   ru   z	some dataiÒ  N)r   r   r   ÚZipInfor   Úcompress_typer   r   r.   r~   r   )r   r   r€   Úziro   s        r   Útest_unsupportedCompressionz*ZipstreamTests.test_unsupportedCompressionÓ   sF  € ð
 �[Š[‰]Œ]ˆÝŒ_˜R Ñ%Ô%ð 	$¨Ý” Ñ%Ô%ˆBØ�KŠK˜˜KÑ(Ô(Ð(ð  $ˆBÔð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$õ Ô& rÑ*Ô*ð 	E¨cØ×Ò�gÔ0°#´,ÀÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð 	Eð 	Es#   ª2A(Á(A,Á/A,Â'B;Â;B?ÃB?c                 ó:  — |                       ¦   «         }t          j        |d¦  «        5 }t          j        d¦  «        }d}t	          j        ddt          |¦  «        ¦  «        |z   |_        |                     |d¦  «         ddd¦  «         n# 1 swxY w Y   t          j
        |¦  «        5 }|                     d¦  «        5 }|                      |                     ¦   «         d¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zW
        readfile() should skip over 'extra' data present in the zip metadata.
        r
   ru   s   hello, extraz<hhé*   s   the real dataN)r   r   r   rŠ   ÚstructÚpackÚlenÚextrar   r   r   r   r(   r:   )r   r   r€   rŒ   Ú
extra_dataro   rƒ   s          r   Útest_extraDatazZipstreamTests.test_extraDataä   s´  € ð �[Š[‰]Œ]ˆÝŒ_˜R Ñ%Ô%ð 	.¨Ý” Ñ%Ô%ˆBØ(ˆJÝ”{ 5¨"­c°*©o¬oÑ>Ô>ÀÑKˆBŒHØ�KŠK˜Ð,Ñ-Ô-Ð-ð		.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ
 Ô& rÑ*Ô*ð 	;¨c°3·<²<ÀÑ3DÔ3Dð 	;ÈØ×Ò˜SŸXšX™ZœZÐ)9Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;sH   ªABÂBÂBÂ-DÃ)C8Ã,DÃ8C<	Ã<DÃ?C<	Ä DÄDÄDc                 óz  — d}d„ t          |¦  «        D ¦   «         }d„ |D ¦   «         }|                      |¦  «        }t          t          j        || j        j        ¦  «        ¦  «         |                      t          | j         	                    ¦   «         ¦  «        t          t          t          t          |¦  «        ¦  «        ¦  «        ¦  «         | j                             ¦   «         D ]Q}t          |                     ¦   «         ¦  «        }|                      |                     ¦   «         ||         ¦  «         ŒRdS )z˜
        L{twisted.python.zipstream.unzipIterChunky} returns an iterator which
        must be exhausted to completely unzip the input archive.
        é
   c                 ó   — g | ]}d |z  ‘ŒS ©zThis is test file %d!rO   ©Ú.0ri   s     r   ú
<listcomp>z7ZipstreamTests.test_unzipIterChunky.<locals>.<listcomp>÷   ó   € ÐIÐIÐI°AÐ+¨aÑ/ÐIÐIÐIr'   c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS ©Úascii©Úencoderš   s     r   rœ   z7ZipstreamTests.test_unzipIterChunky.<locals>.<listcomp>ø   ó$   € Ð8Ð8Ð8¨!�A—H’H˜WÑ%Ô%Ð8Ð8Ð8r'   N)Úrangerj   Úlistr   ÚunzipIterChunkyr^   rc   r(   ÚsetÚlistdirÚmapre   ÚchildrenÚintÚbasenameÚ
getContent)r   Únumfilesr   rg   r]   Únums         r   Útest_unzipIterChunkyz#ZipstreamTests.test_unzipIterChunkyñ   s  € ð
 ˆØIÐI½¸x¹¼ÐIÑIÔIˆØ8Ð8¨xÐ8Ñ8Ô8ˆØ×%Ò% hÑ/Ô/ˆ
Ý�YÔ& z°4´=Ô3EÑFÔFÑGÔGÐGØ×Ò�˜Tœ]×2Ò2Ñ4Ô4Ñ5Ô5µs½3½sÅEÈ(ÁOÄOÑ;TÔ;TÑ7UÔ7UÑVÔVÐVà”]×+Ò+Ñ-Ô-ð 	@ð 	@ˆEÝ�e—n’nÑ&Ô&Ñ'Ô'ˆCØ×Ò˜U×-Ò-Ñ/Ô/°¸#´Ñ?Ô?Ð?Ð?ð	@ð 	@r'   c                 ó   — d}d„ t          |¦  «        D ¦   «         }d„ |D ¦   «         }|                      |d¦  «        }t          t          j        || j        j        ¦  «        ¦  «         d„ t          |¦  «        D ¦   «         }|                      t          | j         	                    d¦  «         
                    ¦   «         ¦  «        |¦  «         | j         	                    d¦  «                             ¦   «         D ]Q}t          |                     ¦   «         ¦  «        }|                      |                     ¦   «         ||         ¦  «         ŒRdS )zä
        The path to which a file is extracted by L{zipstream.unzipIterChunky}
        is determined by joining the C{directory} argument to C{unzip} with the
        path within the archive of the file being extracted.
        r—   c                 ó   — g | ]}d |z  ‘ŒS r™   rO   rš   s     r   rœ   z@ZipstreamTests.test_unzipIterChunkyDirectory.<locals>.<listcomp>  r�   r'   c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS rŸ   r¡   rš   s     r   rœ   z@ZipstreamTests.test_unzipIterChunkyDirectory.<locals>.<listcomp>	  r£   r'   Úfooc                 óR   — h | ]$}t          |¦  «                             d ¦  «        ’Œ%S rŸ   )re   r¢   )r›   r¯   s     r   ú	<setcomp>z?ZipstreamTests.test_unzipIterChunkyDirectory.<locals>.<setcomp>  s*   € ÐLÐLÐL°S�˜C™œŸš¨Ñ0Ô0ÐLÐLÐLr'   s   fooN)r¤   rj   r¥   r   r¦   r^   rc   r(   r§   r]   r¨   rª   r«   r¬   r­   )r   r®   r   rg   ÚfileContentsr]   r¯   s          r   Útest_unzipIterChunkyDirectoryz,ZipstreamTests.test_unzipIterChunkyDirectory  s6  € ð ˆØIÐI½¸x¹¼ÐIÑIÔIˆØ8Ð8¨xÐ8Ñ8Ô8ˆØ×%Ò% h°Ñ6Ô6ˆ
Ý�YÔ& z°4´=Ô3EÑFÔFÑGÔGÐGØLÐL½EÀ(¹O¼OÐLÑLÔLˆØ×Ò�˜Tœ]×0Ò0°Ñ8Ô8×@Ò@ÑBÔBÑCÔCÀ\ÑRÔRÐRà”]×(Ò(¨Ñ0Ô0×9Ò9Ñ;Ô;ð 	@ð 	@ˆEÝ�e—n’nÑ&Ô&Ñ'Ô'ˆCØ×Ò˜U×-Ò-Ñ/Ô/°¸#´Ñ?Ô?Ð?Ð?ð	@ð 	@r'   c                 óÄ  — d}t          d¦  «        D ]M}t          t          j        ¦   «         d¦  «        }t          |¦  «                             d¦  «        }|d|z   z  }ŒNt          |¦  «                             ¦   «         }	t          j        |  	                    ¦   «         ¦  «        }
|
 
                    ¦   «          |
                     d¦  «        j        }|                      |||¦  «         t          j        ||
j        |¬¦  «        }t!          |¦  «        }||cxk     o|k     nc }|                      |¦  «         |D ]}Œ|                      |d¦  «         |
                     d	¦  «                             ¦   «         5 }t          |                     ¦   «         ¦  «                             ¦   «         }|                      ||	¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )zW
        unzipIterChunky should unzip the given number of bytes per iteration.
        r'   iè  é   r    ó    zbigfile.zip)Ú	chunksizer   ÚzipstreamjunkN)r¤   ÚroundÚrandomre   r¢   r   Ú	hexdigestr   rZ   r   r\   r]   rc   Ú_makebigfiler   r¦   r-   r#   r(   r{   r:   )r   r   r¼   ÚlowerÚupperÚjunkÚnr¯   Ú
numEncodedÚjunkmd5ÚtempdirÚzfpathÚuziterr   ÚapproxÚfÚnewmd5s                    r   Ú_unzipIterChunkyTestz#ZipstreamTests._unzipIterChunkyTest  sý  € ð ˆÝ�t‘”ð 	&ð 	&ˆAÝ�œ™œ¨Ñ,Ô,ˆCÝ˜S™œŸš¨Ñ1Ô1ˆJØ�D˜:Ñ%Ñ%ˆDˆDå�d‘)”)×%Ò%Ñ'Ô'ˆåÔ# D§K¢K¡M¤MÑ2Ô2ˆØ×ÒÑÔÐØ—’˜}Ñ-Ô-Ô2ˆØ×Ò˜& +¨tÑ4Ô4Ð4ÝÔ*¨6°7´<È9ÐUÑUÔUˆÝ�‰LŒLˆð ˜Ð"Ð"Ò"Ð"˜UÒ"Ð"Ð"Ð"ˆØ�Š˜ÑÔÐØð 	ð 	ˆAØØ×Ò˜˜AÑÔÐØ�]Š]˜?Ñ+Ô+×0Ò0Ñ2Ô2ð 	.°aÝ˜Ÿš™œ‘]”]×,Ò,Ñ.Ô.ˆFØ×Ò˜V WÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   Å>A
GÇGÇGc                 óJ   — |                       t          j        ddd¦  «         dS )zs
        unzipIterChunky should unzip the given number of bytes per iteration on
        a stored archive.
        iô  é#   é-   N)rÎ   r   rU   r_   s    r   Útest_unzipIterChunkyStoredz)ZipstreamTests.test_unzipIterChunkyStored5  s'   € ð
 	×!Ò!¥'Ô"4°c¸2¸rÑBÔBÐBÐBÐBr'   c                 óJ   — |                       t          j        ddd¦  «         dS )zu
        unzipIterChunky should unzip the given number of bytes per iteration on
        a deflated archive.
        iÌ  é   é   N)rÎ   r   rR   r_   s    r   Útest_chunkyDeflatedz"ZipstreamTests.test_chunkyDeflated<  s'   € ð
 	×!Ò!¥'Ô"6¸¸RÀÑDÔDÐDÐDÐDr'   c                 óê   — t          j        |d|¦  «        5 }t          d¦  «        D ]}d|z  }|                     |d¦  «         Œ|                     d|¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zT
        Create a zip file with the given file name and compression scheme.
        r
   r—   zzipstream%dr   r½   N)r   r   r¤   r   )r   r   r   rÄ   r€   ri   r   s          r   rÁ   zZipstreamTests._makebigfileC  sÃ   € õ Œ_˜X s¨KÑ8Ô8ð 	/¸BÝ˜2‘Y”Yð $ð $�Ø" QÑ&�Ø—’˜B Ñ#Ô#Ð#Ð#Ø�KŠK˜¨Ñ.Ô.Ð.ð		/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   —AA(Á(A,Á/A,N)r   )rK   rL   rM   rN   r`   rj   rp   rs   r„   rˆ   r�   r•   r°   r¸   rÎ   rÒ   rÖ   rÁ   rO   r'   r   rW   rW   ‚   s
  € € € € € ðð ð!ð !ð !ðð ð ð ðGð Gð GðCð Cð Cð?ð ?ð ?ð"?ð ?ð ?ð$Eð Eð Eð";ð ;ð ;ð@ð @ð @ð @ð @ð @ð,.ð .ð .ð<Cð Cð CðEð Eð Eð/ð /ð /ð /ð /r'   rW   )rN   r¿   r�   r   Úhashlibr   Útwisted.pythonr   r   Útwisted.trialr   r   ÚTestCaserQ   rT   rW   rO   r'   r   ú<module>rÜ      s8  ððð ð €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø "Ð "Ð "Ð "Ð "Ð "ð^.ð ^.ð ^.ð ^.ð ^.ñ ^.ô ^.ð ^.ðB'ð 'ð 'ð 'ð ' °Ô0Añ 'ô 'ð 'ð%ð %ð %ð %ð %˜¨Ô(9ñ %ô %ð %ðI/ð I/ð I/ð I/ð I/�XÔ&ñ I/ô I/ð I/ð I/ð I/r'   