
    daf                         d dl mZ d dlmZmZ  ej
                  d      Zd dlZd dlZd dl	m
Z
mZmZmZ e
Z G d dej                        Zedk(  r ej$                          yy)	    )support)import_helpercpython_onlyzdbm.gnuN)TESTFNTESTFN_NONASCIIunlinkFakePathc                       e Zd Zed        Zd Zd Zed        Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Z ej*                  ed      d        Zd Zd Zd Zd Zy)TestGdbmc                  n    t         j                  r	 ddlm}  t	        d|         y y # t
        $ r Y y w xY w)Nr   )_GDBM_VERSIONzgdbm version: )r   verbose_gdbmr   printImportError)versions    ,/root/Python-3.12.4/Lib/test/test_dbm_gnu.py
setUpClasszTestGdbm.setUpClass   s;    ??2: wi01   s   ( 	44c                     d | _         y Ngselfs    r   setUpzTestGdbm.setUp   s	        c                 n    | j                   | j                   j                          t        t               y r   )r   closer   filenamer   s    r   tearDownzTestGdbm.tearDown   s!    66FFLLNxr   c                     t         j                  t        d      | _        t	        j
                  | t        | j                               y Nc)gdbmopenr   r   r   check_disallow_instantiationtyper   s    r   test_disallow_instantiationz$TestGdbm.test_disallow_instantiation   s.     8S),,T4<@r   c                    t         j                  t        d      | _        | j	                  | j                  j                         g        d| j                  d<   d| j                  d<   d| j                  d<   t        | j                  j                               }| j	                  |t        g d             | j                  d| j                         | j                  d	| j                         | j	                  | j                  d   d       | j                  j                         }|rA| j                  ||       |j                  |       | j                  j                  |      }|rA| j	                  | j                  j                  d	      d
       | j                  | j                  j                  d             | j	                  | j                  j                  dd      d       | j                  t              5  | j                  d    d d d        | j	                  | j                  j                  dd      d       | j	                  | j                  d   d       y # 1 sw Y   UxY w)Nr#   ba01923741098234091284019824212345678910s   data   bytes)   ar.   s   12345678910r/      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_methodszTestGdbm.test_key_methods$   s   8S)+s =}"xdffkkm$#&F"GHc466"dDFF#)73ffooMM#w'NN3&&..%C 
 	D)40$&&**V,-FF3V<x( 	FF5M	**66:FC0	 	s   I%%I.c                     t        t                j                  t        j                  t        j
                  t        d       t        j                  t        d       _         j                  j                           j                  t        j                   fd        j                  t        j                  d        y )Nrr#   c                  "     j                   d   S )Nr+   r   r   s   r   <lambda>z0TestGdbm.test_error_conditions.<locals>.<lambda>D   s    dffSk r   c                  R    t         j                  t        d      j                         S )Nrx)r$   r%   r   r    r   r   rD   z0TestGdbm.test_error_conditions.<locals>.<lambda>F   s    dii$.G.M.M.O r   )r   r   r;   r$   errorr%   r   r   r   s   `r   test_error_conditionszTestGdbm.test_error_conditions=   sp    x$**dii3?8S)$**&9:$**&OPr   c                    t        t        j                        }|t        d      z
  }t        |      D ];  }t        j	                  t
        |      | _        | j                  j                          = |t        d      z
  }|D ]E  }|D ]>  }t        j	                  t
        ||z         | _        | j                  j                          @ G y )Nfsucrwn)r4   r$   
open_flagssortedr%   r   r   r   )r   allmodesmodeflagsflags         r   
test_flagszTestGdbm.test_flagsH   s    $//"c%j 5M 	DYYx.DFFFLLN	
 c&k! 	D 8TD[9	r   c                 p   t         j                  t        d      | _        t        j
                  j                  t              }t        |d      }d|z  | j                  d<   t        j
                  j                  t              }| j                  ||       | j                  d= | j                  t        j
                  j                  t              |       | j                  j                          t        j
                  j                  t              }| j                  ||       | j                  ||       y )Nr#   i'  x)r$   r%   r   r   ospathgetsizemaxassertGreaterr2   
reorganize
assertLessassertGreaterEqual)r   size0
value_sizesize1size2s        r   test_reorganizezTestGdbm.test_reorganizeX   s    8S))
 &
J&s)5%(FF3K2E:)u%u-r   c                    t         j                  t        d      5 }d|d<   d d d        t         j                  t        d      5 }| j                  t	        |j                               dg       d d d        | j                  t         j                        5 }j                          d d d        | j                  t        j                        d       y # 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   GxY w)Nr#   zcontext managerzgdbm context managerrB   s   gdbm context managerz#GDBM object has already been closed)
r$   r%   r   r2   listr3   r;   rH   str	exception)r   dbcms      r   test_context_managerzTestGdbm.test_context_managerm   s    YYx% 	;):B%&	; YYx% 	IT"'')_/F.GH	I tzz* 	bGGI	R\\*>	@	; 	;	I 	I	 	s#   C+C C,C C),C5c                     t         j                  t        d      5 }| j                  t	        |             d d d        y # 1 sw Y   y xY wr"   )r$   r%   r   assertFalseboolr   rh   s     r   test_bool_emptyzTestGdbm.test_bool_emptyy   s9    YYx% 	'T"X&	' 	' 	's	   ?Ac                     t         j                  t        d      5 }d|d<   | j                  t	        |             d d d        y # 1 sw Y   y xY wNr#   r*   r+   )r$   r%   r   
assertTruerm   rn   s     r   test_bool_not_emptyzTestGdbm.test_bool_not_empty}   s@    YYx% 	&BsGOODH%	& 	& 	&s    AAc                     t         j                  t        d      5 }d|d<   d d d        | j                  t         j                  t
               y # 1 sw Y   /xY wrq   )r$   r%   r   r;   rH   rm   rn   s     r   test_bool_on_closed_db_raisesz&TestGdbm.test_bool_on_closed_db_raises   sF    YYx% 	BsG	$**dB/	 	s   AAc                 n   t         j                  t        d      5 }d|d<   d d d        t         j                  t        d      5 }| j                  t	        |j                               dg       | j                  d|v        | j                  |d   d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr#   s   bytes value s   bytes key rB   )r$   r%   r   r2   re   r3   rr   rn   s     r   
test_byteszTestGdbm.test_bytes   s    YYx% 	8$7B !	8YYx% 	IT"'')_/@.ABOO-34R 124GH	I 	I	8 	8	I 	Is   BAB+B(+B4c                 J   t         j                  t        d      5 }d|d<   d d d        t         j                  t        d      5 }| j                  t	        |j                               dj                         g       | j                  dj                         |v        | j                  d|v        | j                  |dj                            dj                                | j                  |d   dj                                d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr#   u   Unicode value 🐍u   Unicode key 🐍rB   )r$   r%   r   r2   re   r3   encoderr   rn   s     r   test_unicodezTestGdbm.test_unicode   s   YYx% 	F+EB'(	FYYx% 	BT"'')_/G/N/N/P.QROO4;;=CDOO4:;R 8 ? ? AB7>>@BR 897>>@B	B 	B	F 	F	B 	Bs   DCDDD"c                    t         j                  t        d      5 }d|d<   d d d        t         j                  t        d      5 }| j                  t         j                        5  |d= d d d        | j                  t         j                        5  |d= d d d        | j                  t         j                        5  d|d<   d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   WxY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Nr#   s   bytes values	   bytes keyrB   s   not exist keys   not exist value)r$   r%   r   r;   rH   rn   s     r   test_write_readonly_filez!TestGdbm.test_write_readonly_file   s    YYx% 	.-B|	.YYx% 	:""4::. )'()""4::. %|$%""4::. :'9#$:	: 	:	. 	.) )% %: :	: 	:s_   C D #C''D C('D 9C4?D CC%	!D (C1	-D 4C=	9D  D	z*requires OS support of non-ASCII encodingsc                    t         }| j                  t        |       t        j	                  |d      5 }d|d<   d d d        | j                  t        j                  j                  |             t        j	                  |d      5 }| j                  t        |j                               dg       | j                  d|v        | j                  |d   d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr#   s   values   keyrB   )r   
addCleanupr   r$   r%   rr   rW   rX   existsr2   re   r3   )r   r   rh   s      r   test_nonascii_filenamezTestGdbm.test_nonascii_filename   s     #)YYx% 	"!BvJ	"x01YYx% 	3T"'')_vh7OOFbL)RZ2	3 	3	" 	"	3 	3s   C!AC-!C*-C6c                 0   d}| j                  t        j                        5 }t        j                  |       d d d        | j	                  |t        j                               | j                  |j                  j                  |       y # 1 sw Y   UxY w)Nznonexisting-file)	r;   r$   rH   r%   r5   rf   rg   r2   r   )r   nonexisting_fileri   s      r   test_nonexisting_filezTestGdbm.test_nonexisting_file   sq    -tzz* 	(bII&'	(&BLL(9:..0@A	( 	(s   BBc                 f    t         j                  t        t              d      j	                          y r"   )r$   r%   r	   r   r   r   s    r   test_open_with_pathlib_pathz$TestGdbm.test_open_with_pathlib_path   s    		(8$c*002r   c                 z    t         j                  t        j                  t              d      j                          y r"   )r$   r%   rW   fsencoder   r   r   s    r   test_open_with_bytes_pathz"TestGdbm.test_open_with_bytes_path   s"    		"++h'-335r   c                     t         j                  t        t        j                  t
                    d      j                          y r"   )r$   r%   r	   rW   r   r   r   r   s    r   !test_open_with_pathlib_bytes_pathz*TestGdbm.test_open_with_pathlib_bytes_path   s'    		(2;;x0137==?r   N)__name__
__module____qualname__staticmethodr   r   r    r   r(   r@   rI   rT   rc   rj   ro   rs   ru   rw   rz   r|   unittest
skipUnlessr   r   r   r   r   r   rG   r   r   r   r      s    2 2
 A A
12	Q .*
@'&
0
I
B	: XEG	3G	3B36@r   r   __main__)testr   test.supportr   r   import_moduler$   r   rW   test.support.os_helperr   r   r   r	   r   TestCaser   r   mainrG   r   r   <module>r      sa     4"}""9-  	 L L v@x   v@r zHMMO r   