
    /hh5                         S SK Jr  S SK Jr  \R                  " S5        S SKrS SKrS SKrS SKJr   " S S\R                  5      r
\S:X  a  \R                  " 5         gg)	    )import_helper)	os_helperzdbm.ndbmN)errorc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  " \R                   S5      S 5       rS rS rS rS rS rS rS rS rSrg)DbmTestCase	   c                     [         R                  U l        [        R                  R                  U R                  S5      U l        U R                  R                  5         g Nc)r   TESTFNfilenamedbmndbmopendcloseselfs    ;/opt/python-3.13.8/usr/lib/python3.13/test/test_dbm_ndbm.pysetUpDbmTestCase.setUp   s6    !((t}}c2    c                 \    S H&  n[         R                  " U R                  U-   5        M(     g )N z.pagz.dirz.db)r   unlinkr   )r   suffixs     r   tearDownDbmTestCase.tearDown   s#    1FT]]V34 2r   c                 :   [         R                  R                  U R                  S5      U l        U R                  U R                  R                  5       / 5        SU R                  S'   SU R                  S'   SU R                  S'   U R                  R                  5         U R                  SU R                  5        U R                  SU R                  5        U R                  U R                  S   S5        U R                  U R                  R                  S5      S	5        U R                  U R                  R                  S
5      5        U R                  U R                  R                  S
S5      S5        U R                  [        5         U R                  S     S S S 5        U R                  U R                  R                  S
S5      S5        U R                  U R                  S
   S5        U R                  R                  5         g ! , (       d  f       Nt= f)Nr   bas   datas   bytes01923741098234091284019824212345678910   a   bs   xxxs   fooxxx)r   r   r   r   r   assertEqualkeysassertIngetassertIsNoneassertRaisesKeyError
setdefaultr   r   s    r   	test_keysDbmTestCase.test_keys   sm   t}}c2+s"x =}c466"dDFF#)73D)40$&&**V,-FF3V<x(FF5M )**66:FC0	 )(s   H
Hc                    [         R                  R                  S:X  a  U R                  S5        [         R                  R	                  U R
                  S5      U l        U R                  U R                  R                  5       / 5        SU R                  S'   U R                  U R                  R                  5       S/5        U R                  SU R                  5        U R                  U R                  S   S5        U R                  U R                  R                  S5      S5        U R                  U R                  R                  S5      S5        U R                  R                  5         g )NzBerkeley DBzCBerkeley DB doesn't distinguish the empty value from the absent oner   r   emptys   emptyr   )r   r   libraryskipTestr   r   r   r(   r)   r*   r+   r/   r   r   s    r   test_empty_valueDbmTestCase.test_empty_value(   s    88},MM 0 1t}}c2+w
3h')3/H-s3**84c:r   c                     S HM  n [         R                  R                  U R                  U5      U l        U R                  R                  5         MO     g ! [         a    U R                  5          Mo  f = f)N)rrwwn)r   r   r   r   r   r   r   fail)r   modes     r   
test_modesDbmTestCase.test_modes6   sR    )Dt}}d; *  		s   A	AA32A3c                 b   [         R                  R                  U R                  S5       nSUS'   S S S 5        [         R                  R                  U R                  S5       nU R	                  [        UR                  5       5      S/5        S S S 5        U R                  [         R                  R                  5       nWR                  5         S S S 5        U R	                  [        WR                  5      S5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NV= f)Nr   zcontext managerzndbm context managerr9   s   ndbm context managerz"DBM object has already been closed)r   r   r   r   r(   listr)   r-   r   str	exception)r   dbcms      r   test_context_manager DbmTestCase.test_context_manager>   s    XX]]4==#."):B%& / XX]]4==#."T"'')_/F.GH / sxx~~."GGI /R\\*=	? /. /. /.s#   C>#+D?D >
D
D 
D.c                    [         R                  R                  U R                  S5       nSUS'   S S S 5        [         R                  R                  U R                  S5       nU R	                  [        UR                  5       5      S/5        U R                  SU;   5        U R	                  US   S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   s   bytes value s   bytes key r9   )r   r   r   r   r(   rB   r)   
assertTruer   rE   s     r   
test_bytesDbmTestCase.test_bytesJ   s    XX]]4==#."$7B ! /XX]]4==#."T"'')_/@.ABOO-34R 124GH /. /...s   C #AC 
C
Cc                    [         R                  R                  U R                  S5       nSUS'   S S S 5        [         R                  R                  U R                  S5       nU R	                  [        UR                  5       5      SR                  5       /5        U R                  SR                  5       U;   5        U R                  SU;   5        U R	                  USR                  5          SR                  5       5        U R	                  US   SR                  5       5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       g = f)Nr   u   Unicode value 🐍u   Unicode key 🐍r9   )	r   r   r   r   r(   rB   r)   encoderJ   rK   s     r   test_unicodeDbmTestCase.test_unicodeR   s    XX]]4==#."+EB'( /XX]]4==#."T"'')_/G/N/N/P.QROO4;;=CDOO4:;R 8 ? ? AB7>>@BR 897>>@B /. /...s   D/#CE/
D>
Ec                 N   [         R                  R                  U R                  S5       nSUS'   S S S 5        [         R                  R                  U R                  S5       nU R	                  [
        5         US	 S S S 5        U R	                  [
        5         US	 S S S 5        U R	                  [
        5         SUS'   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nl= f! , (       d  f       N\= f! , (       d  f       NJ= f! , (       d  f       g = f)Nr   s   bytes values	   bytes keyr9   s   not exist keys   not exist value)r   r   r   r   r-   r   rK   s     r   test_write_readonly_file$DbmTestCase.test_write_readonly_file^   s    XX]]4==#."-B| /XX]]4==#."""5)'( *""5)|$ *""5)'9#$ * /. /. *))))) /.s_   C#D9C#=DC4D;DD
C #
C1	-D4
D	>D
D	D
D$z*requires OS support of non-ASCII encodingsc                 ^  ^ [         R                  mS H&  nU R                  [         R                  TU-   5        M(     [        R
                  R                  TS5       nSUS'   S S S 5        U R                  [        U4S jS 5       5      5        [        R
                  R                  TS5       nU R                  [        UR                  5       5      S/5        U R                  SU;   5        U R                  US   S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   s   values   keyc              3   h   >#    U  H'  n[         R                  R                  TU-   5      v   M)     g 7f)N)ospathexists).0r   r   s     r   	<genexpr>5DbmTestCase.test_nonascii_filename.<locals>.<genexpr>q   s.      G*E GGNN8f+<==*Es   /2r9   )r   TESTFN_NONASCII
addCleanupr   r   r   r   rJ   anyr(   rB   r)   )r   r   rE   r   s      @r   test_nonascii_filename"DbmTestCase.test_nonascii_filenamei   s     ,,1FOOI,,h.?@ 2XX]]8S)R!BvJ * G*EG G 	HXX]]8S)RT"'')_vh7OOFbL)RZ2 *)	 *) *)s   D0AD
D
D,c                 b   SnU R                  [        R                  R                  5       n[        R                  R	                  U5        S S S 5        U R                  U[        WR                  5      5        U R                  UR                  R                  U5        g ! , (       d  f       NZ= f)Nznonexisting-file)
r-   r   r   r   r   r*   rC   rD   r(   r   )r   nonexisting_filerF   s      r   test_nonexisting_file!DbmTestCase.test_nonexisting_filex   sr    -sxx~~."HHMM*+ /&BLL(9:..0@A /.s    B  
B.c                     [         R                  R                  [        R                  " U R
                  5      S5      R                  5         g r
   )r   r   r   r   FakePathr   r   r   s    r   test_open_with_pathlib_path'DbmTestCase.test_open_with_pathlib_path   s,    i((7=CCEr   c                     [         R                  R                  [        R                  " U R
                  5      S5      R                  5         g r
   )r   r   r   rW   fsencoder   r   r   s    r   test_open_with_bytes_path%DbmTestCase.test_open_with_bytes_path   s*    bkk$--0#6<<>r   c                     [         R                  R                  [        R                  " [
        R                  " U R                  5      5      S5      R                  5         g r
   )	r   r   r   r   rg   rW   rk   r   r   r   s    r   !test_open_with_pathlib_bytes_path-DbmTestCase.test_open_with_pathlib_bytes_path   s5    i((T]])CDcJPPRr   c                     [         R                  R                  U R                  S5       nU R	                  [        U5      5        S S S 5        g ! , (       d  f       g = fr
   )r   r   r   r   assertFalseboolrK   s     r   test_bool_emptyDbmTestCase.test_bool_empty   s8    XX]]4==#."T"X& /..s   A
Ac                     [         R                  R                  U R                  S5       nSUS'   U R	                  [        U5      5        S S S 5        g ! , (       d  f       g = fNr   r!   r"   )r   r   r   r   rJ   rs   rK   s     r   test_bool_not_emptyDbmTestCase.test_bool_not_empty   s?    XX]]4==#."BsGOODH% /..s    A
A"c                     [         R                  R                  U R                  S5       nSUS'   S S S 5        U R	                  [         R                  R
                  [        W5        g ! , (       d  f       N>= frw   )r   r   r   r   r-   r   rs   rK   s     r   test_bool_on_closed_db_raises)DbmTestCase.test_bool_on_closed_db_raises   sK    XX]]4==#."BsG /#((..$3 /.s   A))
A7c                    SS/n[         R                  R                  U R                  S5       nU H  u  p4XBU'   U R	                  X25        M     U R                  [        U5      [        U5      5        UR                  5         U H  u  p4U R                  X25        M     U R                  [        U5      S5        S S S 5        g ! , (       d  f       g = f)N)foobar)12345678r   r   )	r   r   r   r   r*   r(   lenclearassertNotIn)r   kvsrE   kvs        r   
test_clearDbmTestCase.test_clear   s    /0XX]]4==#."1a$  SWc#h/HHJ  ' SWa( /..s   BC
C)r   r   N)__name__
__module____qualname____firstlineno__r   r   r0   r6   r?   rG   rL   rP   rS   unittest
skipUnlessr   r]   r`   rd   rh   rl   ro   rt   rx   r{   r   __static_attributes__ r   r   r   r   	   s    
5(
?I
B	: 22EG3G3BF?S'&
4
)r   r   __main__)test.supportr   r   import_modulerW   r   dbm.ndbmr   r   TestCaser   r   mainr   r   r   <module>r      sR    & "   J ' 	   X)(## X)v zMMO r   