
    /hh                          S SK r S SKrS SKJr  S SKJrJr  S SKJrJ	r	J
r
JrJrJr  \R                  " S5      r\r " S S\R"                  5      r\S:X  a  \R(                  " 5         gg)	    N)support)cpython_onlyimport_helper)TESTFNTESTFN_NONASCIIFakePathcreate_empty_filetemp_dirunlinkzdbm.gnuc            	          \ rS rSr\S 5       rS rS r\S 5       r	S r
S rS rS	 rS
 rS rS rS rS rS rS r\R,                  " \S5      S 5       rS rS rS rS rS r\R>                  " SSSSSSS5      S 5       r S r!g!)"TestGdbm   c                  z    [         R                  (       a   SSKJn   [	        SU  35        g g ! [
         a     g f = f)Nr   )_GDBM_VERSIONzgdbm version: )r   verbose_gdbmr   printImportError)versions    :/opt/python-3.13.8/usr/lib/python3.13/test/test_dbm_gnu.py
setUpClassTestGdbm.setUpClass   s;    ??2: wi01   s   - 
::c                     S U l         g Ngselfs    r   setUpTestGdbm.setUp   s	        c                 p    U R                   b  U R                   R                  5         [        [        5        g r   )r   closer   filenamer   s    r   tearDownTestGdbm.tearDown   s!    66FFLLNxr!   c                     [         R                  [        S5      U l        [        R
                  " U [        U R                  5      5        g Nc)gdbmopenr$   r   r   check_disallow_instantiationtyper   s    r   test_disallow_instantiation$TestGdbm.test_disallow_instantiation   s.     8S),,T4<@r!   c                     [         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       5      nU R	                  U[        / SQ5      5        U R                  SU R                  5        U R                  S	U R                  5        U R	                  U R                  S   S5        U R                  R                  5       nU(       aF  U R                  X!5        UR                  U5        U R                  R                  U5      nU(       a  MF  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        g ! , (       d  f       NZ= f)Nr)   ba01923741098234091284019824212345678910s   data   bytes)   ar5   s   12345678910r6      bs   xxxs   fooxxx)r*   r+   r$   r   assertEqualkeyssetassertInfirstkeyremovenextkeygetassertIsNoneassertRaisesKeyError
setdefault)r   key_setkeys      r   test_key_methodsTestGdbm.test_key_methods%   s   8S)+s =}"xdffkkm$#&F"GHc466"dDFF#)73ffooMM#'NN3&&..%C c
 	D)40$&&**V,-FF3V<x(FF5M )**66:FC0 )(s   I//
I=c                   ^  [        [        5        T R                  [        R                  [        R
                  [        S5        [        R                  [        S5      T l        T R                  R                  5         T R                  [        R                  U 4S j5        T R                  [        R                  S 5        g )Nrr)   c                  "   > T R                   S   $ )Nr2   r   r   s   r   <lambda>0TestGdbm.test_error_conditions.<locals>.<lambda>E   s    dffSkr!   c                  R    [         R                  [        S5      R                  5       $ )Nrx)r*   r+   r$   r#    r!   r   rL   rM   G   s    dii$.G.M.M.Or!   )r   r$   rB   r*   errorr+   r   r#   r   s   `r   test_error_conditionsTestGdbm.test_error_conditions>   sp    x$**dii3?8S)$**&9:$**&OPr!   c                    [        [        R                  5      nU[        S5      -
  n[        U5       H<  n[        R	                  [
        U5      U l        U R                  R                  5         M>     U[        S5      -
  nU HG  nU H>  n[        R	                  [
        X5-   5      U l        U R                  R                  5         M@     MI     g )Nfsucrwn)r;   r*   
open_flagssortedr+   r$   r   r#   )r   allmodesmodeflagsflags         r   
test_flagsTestGdbm.test_flagsI   s    $//"c%j 5MDYYx.DFFFLLN "
 c&k!D8T[9  r!   c                 j   [         R                  [        S5      U l        [        R
                  R                  [        5      n[        US5      nSU-  U R                  S'   [        R
                  R                  [        5      nU R                  X15        U R                  S	 U R                  [        R
                  R                  [        5      U5        U R                  R                  5         [        R
                  R                  [        5      nU R                  XC5        U R                  XA5        g )Nr)   i'  x)r*   r+   r$   r   ospathgetsizemaxassertGreaterr9   
reorganize
assertLessassertGreaterEqual)r   size0
value_sizesize1size2s        r   test_reorganizeTestGdbm.test_reorganizeY   s    8S))
 &
J&s)5(FF3K2E:)%-r!   c                    [         R                  [        S5       nSUS'   S S S 5        [         R                  [        S5       nU R                  [	        UR                  5       5      S/5        S S S 5        U 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gdbm context managerrJ   s   gdbm context managerz#GDBM object has already been closed)
r*   r+   r$   r9   listr:   rB   rQ   str	exception)r   dbcms      r   test_context_managerTestGdbm.test_context_managern   s    YYx%):B%& & YYx%T"'')_/F.GH & tzz*bGGI +R\\*>	@ &% &% +*s#   C+C%C6
C"%
C36
Dc                     [         R                  [        S5       nU R                  [	        U5      5        S S S 5        g ! , (       d  f       g = fr(   )r*   r+   r$   assertFalseboolr   rt   s     r   test_bool_emptyTestGdbm.test_bool_emptyz   s0    YYx%T"X& &%%s	   ?
Ac                     [         R                  [        S5       nSUS'   U R                  [	        U5      5        S S S 5        g ! , (       d  f       g = fNr)   r1   r2   )r*   r+   r$   
assertTruerz   r{   s     r   test_bool_not_emptyTestGdbm.test_bool_not_empty~   s7    YYx%BsGOODH% &%%s    A
Ac                     [         R                  [        S5       nSUS'   S S S 5        U R                  [         R                  [
        W5        g ! , (       d  f       N4= fr   )r*   r+   r$   rB   rQ   rz   r{   s     r   test_bool_on_closed_db_raises&TestGdbm.test_bool_on_closed_db_raises   s?    YYx%BsG &$**dB/ &%s   A
Ac                    [         R                  [        S5       nSUS'   S S S 5        [         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 rJ   )r*   r+   r$   r9   rq   r:   r   r{   s     r   
test_bytesTestGdbm.test_bytes   s    YYx%$7B ! &YYx%T"'')_/@.ABOO-34R 124GH &% &%%%s   B AB1 
B.1
B?c                 b   [         R                  [        S5       nSUS'   S S S 5        [         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       N= f! , (       d  f       g = f)Nr)   u   Unicode value 🐍u   Unicode key 🐍rJ   )r*   r+   r$   r9   rq   r:   encoder   r{   s     r   test_unicodeTestGdbm.test_unicode   s    YYx%+EB'( &YYx%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D 
D 
D.c                 J   [         R                  [        S5       nSUS'   S S S 5        [         R                  [        S5       nU R                  [         R                  5         US	 S S S 5        U R                  [         R                  5         US	 S S S 5        U R                  [         R                  5         SUS'   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nf= f! , (       d  f       NJ= f! , (       d  f       g = f)Nr)   s   bytes values	   bytes keyrJ   s   not exist keys   not exist value)r*   r+   r$   rB   rQ   r{   s     r   test_write_readonly_file!TestGdbm.test_write_readonly_file   s    YYx%-B| &YYx%""4::.'( /""4::.|$ /""4::.'9#$ / &% &% /..... &%s_   C D#C!''DC2'D9D?D
C!
C/	+D2
D 	<D
D	D
D"z*requires OS support of non-ASCII encodingsc                    [         nU R                  [        U5        [        R	                  US5       nSUS'   S S S 5        U R                  [        R                  R                  U5      5        [        R	                  U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   values   keyrJ   )r   
addCleanupr   r*   r+   r   rb   rc   existsr9   rq   r:   )r   r$   rt   s      r   test_nonascii_filenameTestGdbm.test_nonascii_filename   s     #)YYx%!BvJ &x01YYx%T"'')_vh7OOFbL)RZ2 &% &% &%s   C"AC3"
C03
Dc                 :   SnU R                  [        R                  5       n[        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)	rB   r*   rQ   r+   r<   rr   rs   r9   r$   )r   nonexisting_fileru   s      r   test_nonexisting_fileTestGdbm.test_nonexisting_file   sj    -tzz*bII&' +&BLL(9:..0@A +*s   B
Bc                 f    [         R                  [        [        5      S5      R	                  5         g r(   )r*   r+   r   r$   r#   r   s    r   test_open_with_pathlib_path$TestGdbm.test_open_with_pathlib_path   s    		(8$c*002r!   c                 |    [         R                  [        R                  " [        5      S5      R                  5         g r(   )r*   r+   rb   fsencoder$   r#   r   s    r   test_open_with_bytes_path"TestGdbm.test_open_with_bytes_path   s"    		"++h'-335r!   c                     [         R                  [        [        R                  " [
        5      5      S5      R                  5         g r(   )r*   r+   r   rb   r   r$   r#   r   s    r   !test_open_with_pathlib_bytes_path*TestGdbm.test_open_with_pathlib_bytes_path   s'    		(2;;x0137==?r!   c                    SS/n[         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<   r9   lenclearassertNotIn)r   kvsrt   kvs        r   
test_clearTestGdbm.test_clear   s    /0YYx%1a$  SWc#h/HHJ  ' SWa( &%%s   BB44
CLC_ALLzfr_FR.iso88591z
ja_JP.sjisz	zh_CN.gbkz
fr_FR.utf8z
en_US.utf8 c                    [        5        n[        [        R                  R	                  US5      5        U R                  [        R                  [        R                  [        S5        S S S 5        g ! , (       d  f       g = f)NtestrJ   )
r
   r	   rb   rc   joinrB   r*   rQ   r+   r$   )r   ds     r   test_localized_errorTestGdbm.test_localized_error   sH     Z1bggll1f56djj$))XsC ZZs   AA22
B r   N)"__name__
__module____qualname____firstlineno__staticmethodr   r   r%   r   r.   rG   rR   r^   rn   rv   r|   r   r   r   r   r   unittest
skipUnlessr   r   r   r   r   r   r   r   run_with_localer   __static_attributes__rP   r!   r   r   r      s    2 2
 A A
12	Q .*
@'&
0
I
B	: EG	3G	3B36@) ,l
	DDr!   r   __main__)rb   r   r   r   test.supportr   r   test.support.os_helperr   r   r   r	   r
   r   import_moduler*   r$   TestCaser   r   mainrP   r!   r   <module>r      sc    	   4I I ""9-NDx   NDb zMMO r!   