+
    üÐj¬  ã                   ó–   € R t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht  ! R R]P                  4      t ! R	 R
]4      t]].tR# )z
Test cases for dirdbm module.
N)Ú	b64decode)Údirdbm)Úrebuild)ÚFilePath)Úunittestc                   óÂ   a € ] tR t^t o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltRtV tR# )ÚDirDbmTestsc                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€Ú:/usr/lib/python3/dist-packages/twisted/test/test_dirdbm.pyÚ__annotate__ÚDirDbmTests.__annotate__   s   ø€ ÷ 
ñ 
�tñ 
ó    c                ó®   € \        V P                  4       4      V n        \        P                  ! V P                  P                  4      V n        RV n        R# )ó   abcN)©r   s   foo©s   /lalals    ©s    
s   baz)r   ÚmktempÚpathr   ÚopenÚdbmÚitems©Úselfs   &r   ÚsetUpÚDirDbmTests.setUp   s6   € Ü˜TŸ[™[›]Ó+ˆŒ	Ü—;’;˜tŸy™yŸ~™~Ó.ˆŒðX
ˆŽ
r   c                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   r      s   ø€ ÷ ,ñ ,˜$ñ ,r   c                óž   € \        R 4      pRV P                  V&   RV P                  V&   V P                  V P                  V,          R4       R# )z//==ó   aN)r   r   ÚassertEqual)r   Úks   & r   Útest_allÚDirDbmTests.test_all   s>   € Ü�fÓˆØˆ�‰�‰Øˆ�‰�‰Ø×Ñ˜Ÿ™ !� dÖ+r   c                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   r   !   s   ø€ ÷ Nñ N˜Tñ Nr   c                ó®   € V P                   P                  RRRR/4       V P                  \        V P                   P	                  4       4      RR04       R# )zJ
L{DirDBM.update} updates the DBM with values from a bytes:bytes
mapping.
r$   ó   bó   có   dN)r$   r+   )r,   r-   )r   Úupdater%   Úsetr   r   s   &r   Útest_updateÚDirDbmTests.test_update!   sB   € ð
 	�‰�‰˜˜t T¨4Ð0Ô1Ø×Ñœ˜TŸX™XŸ^™^Ó-Ó.°¸|Ð0LÖMr   c                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   r   )   s   ø€ ÷  ñ  ¨ñ  r   c                óp   € \         P                  ! R 4      pRVR&   \        P                  ! \         4       R# )s   dirdbm.rebuild.testó   values   keyN)r   ÚShelfr   )r   Úss   & r   Útest_rebuildInteractionÚ#DirDbmTests.test_rebuildInteraction)   s&   € Ü�LŠLÐ/Ó0ˆØˆˆ&‰	Ü�ŠœÖr   c                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   r   .   s   ø€ ÷ ^:ñ ^:˜$ñ ^:r   c           
     ó®  € V P                   p. p\        4       pV P                   F+  w  rEWQV&   VP                  V4       VP	                  V4       K-  	  VP                  4        V P                   F.  w  rEV P                  WA4       V P                  W,          V4       K0  	   VR ,           Q R4       h  \         d     Mi ; iTP                  4       p\        TP                  4       4      p\        TP                  4       4      pTP                  4        \        T P                  4      p	T P                  TTR\        T4       R\        T4       24       T P                  TTRP                  \        T4      \        T4      4      4       T P                  T	TR\        T	4       R\        T4       24       T P                  4       p
TP                  T
4      pTP                  4       p\        TP                  4       4      p\        TP                  4       4      pTP                  4        T P                  TTRP                  \        T4      \        T4      4      4       T P                  TTR\        T4      : R\        T4      : 24       T P                  TTR\        T4      : R\        T4      : 24       TP                  4        T P!                  \#        TP                  4       4      \#        TP                  4       4      u;8H  ;'       dB    \#        TP                  4       4      u;8H  ;'       d    \#        T4      u;8H  ;'       d    ^ 8H  Mu R	4       T P%                  \#        T4      \#        T4      4       \&        P(                  ! T
4       T P                   F  w  rEY T P+                  YAR
4       K  	  T P                  \#        TP                  4       4      ^ R4       T P                  \#        TP                  4       4      ^ R4       T P                  \#        TP                  4       4      ^ R4       T P                  \#        T4      ^ R4       R# )s   XXXz)didn't raise KeyError on non-existent keyz.keys() output didn't match: z != z'.values() output didn't match: {} != {}zitems() didn't match: z'.copyTo().keys() didn't match: {} != {}z!.copyTo().values() didn't match: z .copyTo().items() didn't match: z.clear() failedz3key is still in database, even though we deleted itzdatabase has keyszdatabase has valueszdatabase has itemsN)r   r/   r   ÚappendÚaddÚsortÚassertInr%   ÚKeyErrorÚkeysÚvaluesÚreprr   r   ÚcopyToÚclearÚ
assertTrueÚlenÚassertNotEqualÚshutilÚrmtreeÚassertNotIn)r   Údr@   rA   r&   ÚvÚdbkeysÚdbvaluesÚdbitemsr   ÚcopyPathÚd2ÚcopykeysÚ
copyvaluesÚ	copyitemss   &              r   Útest_dbmÚDirDbmTests.test_dbm.   sh  € Ø�H‰Hˆð ˆÜ“ˆØ—J”J‰DˆAØˆa‰DØ�K‰K˜ŒNØ�J‰J�qŽMñ ð 	�	‰	Œð —J”J‰DˆAØ�M‰M˜!ÔØ×Ñ˜Q�T 1Ö%ñ ð
	BØˆfŽIð BÐAÓA�1øô ô 	Ùð	úð —‘“ˆÜ�q—x‘x“z“?ˆÜ�a—g‘g“i“.ˆØ�‰ŒÜ�D—J‘J“ˆØ×ÑØØØ+¬D°«J¨<°t¼DÀ»L¸>ÐJô	
ð
 	×ÑØØØ5×<Ñ<Ü�V“œd 8›nóô	
ð 	×ÑØØØ$¤T¨%£[ M°´d¸7³m°_ÐEô	
ð —;‘;“=ˆØ�X‰X�hÓˆà—6‘6“8ˆÜ˜Ÿ™›“_ˆ
Ü˜Ÿ™›	“Nˆ	Ø�‰Œà×ÑØØØ5×<Ñ<Ü�V“œd 8›nóô	
ð 	×ÑØÙä�HŽ~œt JÕ/ð1ô	
ð 	×ÑØÙä�FŽ|œT )�_ð.ô	
ð 	�‰Œ
Ø�‰Ü�—‘“	‹Nœc "§)¡)£+Ó.×QÔQ´#°b·h±h³j³/×QÔQÄSÈÃW×QÔQÐPQÔQØô	
ð 	×ÑœC ›F¤C¨£GÔ,Ü�Š�hÔð —J”J‰DˆAØ�Ø×ÑØÐKöñ ð
 	×Ñœ˜QŸV™V›X›¨Ð+>Ô?Ø×Ñœ˜QŸX™X›Z›¨!Ð-BÔCØ×Ñœ˜QŸW™W›Y›¨Ð,@ÔAØ×Ñœ˜Q› Ð$8Ö9s   Â#	B3 Â3CÃ Cc                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   r   Ž   s   ø€ ÷ Lñ L tñ Lr   c                ó  € ^ RI pRV P                  R&   V P                  \        VP                  4       V P                  P	                  R4      ,
          4      ^8*  4       V P                  \        V P                  P                  R4       R# )é    Nó   vó   ks   nokey)Útimer   rE   ÚabsÚgetModificationTimeÚassertRaisesr?   )r   r\   s   & r   Útest_modificationTimeÚ!DirDbmTests.test_modificationTimeŽ   sa   € Ûð ˆ�‰�‰Ø�‰œ˜DŸI™I›K¨$¯(©(×*FÑ*FÀtÓ*LÕLÓMÐQRÑRÔSØ×Ñœ( D§H¡H×$@Ñ$@À(ÖKr   c                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   r   ž   s   ø€ ÷ :ñ :˜tñ :r   c                óô  € V P                   P                  R4      pV P                  P                  VR,           4      P	                  RR7      ;_uu_ 4       pVP                  R4       RRR4       V P                   P                  R4      pV P                  P                  V4      P	                  RR7      ;_uu_ 4       pVP                  R4       RRR4       V P                  P                  VR,           4      P	                  RR7      ;_uu_ 4       pVP                  R	4       RRR4       V P                  P                  R
4      P	                  RR7      ;_uu_ 4       pVP                  R4       RRR4       \        P                  ! V P                  P                  4      pV P                  VR,          R4       V P                  VR,          R4       V P                  V P                  P                  R4      4       V P                  V P                  P                  R4      4       R#   + '       g   i     ELÌ; i  + '       g   i     ELx; i  + '       g   i     EL8; i  + '       g   i     Lþ; i)z:
DirDBM: test recovery from directory after a faked crash
s   key1s   .rplÚw)Úmoder4   Ns   key2s   corrects   wrongzaa.news   deletedz*.newz*.rpl)r   Ú_encoder   Úchildr   Úwriter   ÚDirDBMr%   ÚassertFalseÚglobChildren)r   r&   ÚfÚk2r   s   &    r   Útest_recoveryÚDirDbmTests.test_recoveryž   s­  € ð �H‰H×Ñ˜WÓ%ˆØ�Y‰Y�_‰_˜Q �[Ó)×.Ñ.°CÐ.×8Ô8¸AØ�G‰G�HÔ÷ 9ð �X‰X×Ñ˜gÓ&ˆØ�Y‰Y�_‰_˜RÓ ×%Ñ%¨3Ð%×/Ô/°1Ø�G‰G�JÔ÷ 0à�Y‰Y�_‰_˜R '�\Ó*×/Ñ/°SÐ/×9Ô9¸QØ�G‰G�HÔ÷ :ð �Y‰Y�_‰_˜XÓ&×+Ñ+°Ð+×5Ô5¸Ø�G‰G�JÔ÷ 6ô �mŠm˜DŸI™IŸN™NÓ+ˆØ×Ñ˜˜W� xÔ0Ø×Ñ˜˜W� zÔ2Ø×Ñ˜Ÿ™×/Ñ/°Ó8Ô9Ø×Ñ˜Ÿ™×/Ñ/°Ó8Ö9÷! 9×8Ð8ú÷ 0×/Ð/úç9×9Ð9ú÷ 6×5ús0   ÁH+Â>H?ÄIÅI'È+H<	È?I	ÉI$	É'I7	c                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   r   µ   s   ø€ ÷ Fñ F Dñ Fr   c                óò  € V P                  \        V P                  P                  ^R4        V P                  \        V P                  P                  R^4       V P                  \        V P                  P                  ^4       V P                  \        V P                  P                  ^4       V P                  \        V P                  P                  ^4       V P                  \        V P                  P                  ^4       V P                  \        V P                  P                  ^4       R#   \        P
                   d/    T P                  T P                  \        P                  4        ELi ; i)z`
L{dirdbm.DirDBM} operations only support string keys: other types
should raise a L{TypeError}.
Ú3Ú2N)r_   Ú	TypeErrorr   Ú__setitem__r   ÚFailTestÚassertIsInstancer   r5   Ú__getitem__Ú__delitem__Úhas_keyÚ__contains__r^   r   s   &r   Útest_nonStringKeysÚDirDbmTests.test_nonStringKeysµ   s  € ð
 	×Ñœ) T§X¡X×%9Ñ%9¸1¸cÔBð	:Ø×Ñœi¨¯©×)=Ñ)=¸sÀAÔFð 	×Ñœ) T§X¡X×%9Ñ%9¸1Ô=Ø×Ñœ) T§X¡X×%9Ñ%9¸1Ô=Ø×Ñœ) T§X¡X×%5Ñ%5°qÔ9Ø×Ñœ) T§X¡X×%:Ñ%:¸AÔ>Ø×Ñœ) T§X¡X×%AÑ%AÀ1ÖEøô × Ñ ô 	:à×!Ñ! $§(¡(¬F¯L©L×9ð	:ús   ®,D3 Ä3?E6Å5E6c                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   r   Æ   s   ø€ ÷ Oñ O˜dñ Or   c                óÂ   € R R lpRV P                   R&   V P                  V P                   RV4       V P                  \        V P                   P                  RR4       R# )z$
Failure path when setting an item.
c                óJ   € V ^8„  d   QhR\         \        ,          R\        RR/# )r   r   Údatar   N)r   ÚstrÚbytes)r   s   "r   r   Ú.DirDbmTests.test_failSet.<locals>.__annotate__Ë   s%   € ÷ 	+ñ 	+œX¤c�]ð 	+´%ð 	+¸Dñ 	+r   c                 ó:   € V P                  V4       \        R 4      h)zfail to write)Ú
setContentÚOSError)r   r�   s   &&r   Ú
_writeFailÚ,DirDbmTests.test_failSet.<locals>._writeFailË   s   € Ø�O‰O˜DÔ!Ü˜/Ó*Ð*r   s   tests   failkeyÚ
_writeFiles   test2N)r   Úpatchr_   ÚIOErrorru   )r   rˆ   s   & r   Útest_failSetÚDirDbmTests.test_failSetÆ   sI   € õ
	+ð  'ˆ�‰�ÑØ�
‰
�4—8‘8˜\¨:Ô6Ø×Ñœ' 4§8¡8×#7Ñ#7¸ÀXÖNr   ©r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r    r'   r0   r7   rU   r`   rn   r|   r�   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      sj   ø‡ € ÷
ð 
÷,ð ,÷Nð N÷ ð  ÷
^:ð ^:÷@Lð L÷ :ð :÷.Fð F÷"Oö Or   r   c                   ó2   a € ] tR t^Ôt o V 3R lR ltRtV tR# )Ú
ShelfTestsc                ó   <€ V ^8„  d   QhRR/# r
   r   )r   r   s   "€r   r   ÚShelfTests.__annotate__Õ   s   ø€ ÷ 

ñ 

�tñ 

r   c                ó®   € \        V P                  4       4      V n        \        P                  ! V P                  P                  4      V n        RV n        R# )r   N)r   r   r   )s   inté   )s   floatg      (@)s   tuple)Nrœ   )r   r   r   r   r5   r   r   r   s   &r   r    ÚShelfTests.setUpÕ   s5   € Ü˜TŸ[™[›]Ó+ˆŒ	Ü—<’< §	¡	§¡Ó/ˆŒð
ˆŽ
r   r�   N)r�   r‘   r’   r“   r    r”   r•   r–   s   @r   r˜   r˜   Ô   s   ø‡ € ÷

ö 

r   r˜   )Ú__doc__rH   Úbase64r   Útwisted.persistedr   Útwisted.pythonr   Útwisted.python.filepathr   Útwisted.trialr   ÚTestCaser   r˜   Ú	testCasesr   r   r   Ú<module>r¦      sM   ðñó Ý å $Ý "Ý ,Ý "ô@O�(×#Ñ#ô @OôF
�ô 
ð ˜*Ð%‚	r   