+
    Df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[[]+	;;tyy~~.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    
 	tT401TXX^^-.|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&    LL/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   HH JJDAaDKKNJJqM  			 JJDAMM!QT1% 
	BfI BAA1  		 qxxz?aggi.DJJ+DJ<tDL>J	

 	5<<Vd8n	
 	$T%[Md7m_E	
 ;;=XXh668_
	N	5<<Vd8n	
 	H~tJ/1	
 	F|T)_.	
 	
	Nc"))+.QQ#bhhj/QQSWQQPQQ	
 	CFCG,h JJDAK 
 	QVVX+>?QXXZ!-BCQWWY,@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     DIIK$((*F*Ft*LLMQRRS(DHH$@$@(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    HHW%YY__Q[)..C.88AGGH 9 XXg&YY__R %%3%//1GGJ 0YY__R'\*//S/99QGGH : YY__X&+++55GGJ 6 mmDIINN+Wx0Wz2//89//89! 988 0//999 65s0   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   
 	)TXX%9%91cB	:i)=)=sAF 	)TXX%9%91=)TXX%9%91=)TXX%5%5q9)TXX%:%:A>)TXX%A%A1E    	:!!$((FLL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%     	+ 	+Xc] 	+% 	+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    OOD!/**r   s   tests   failkey
_writeFiles   test2N)r   patchr_   IOErrorru   )r   r   s   & r   test_failSetDirDbmTests.test_failSet   sI    
	+  '

488\:6'488#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   