
    daf                         d dl mZ d dl mZ  ej                  d       d dlZd dlZd dlZd dlmZ  G d dej                        Z
edk(  r ej                          yy)	    )import_helper)	os_helperzdbm.ndbmN)errorc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej                  ej                  d
      d        Zd Zd Zd Zd Zd Zd Zd Zy)DbmTestCasec                     t         j                  | _        t        j                  j                  | j                  d      | _        | j                  j                          y Nc)r   TESTFNfilenamedbmndbmopendcloseselfs    -/root/Python-3.12.4/Lib/test/test_dbm_ndbm.pysetUpzDbmTestCase.setUp   s6    !((t}}c2    c                 V    dD ]$  }t        j                  | j                  |z          & y )N z.pagz.dirz.db)r   unlinkr   )r   suffixs     r   tearDownzDbmTestCase.tearDown   s(    1 	5FT]]V34	5r   c                 0   t         j                  j                  | j                  d      | _        | j                  | j                  j                         g        d| j                  d<   d| j                  d<   d| j                  d<   | j                  j                          | j                  d| j                         | j                  d| j                         | j                  | j                  d   d       | 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       | j                  j                          y # 1 sw Y   oxY w)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_keyszDbmTestCase.test_keys   st   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                    t         j                  j                  dk(  r| j                  d       t         j                  j	                  | j
                  d      | _        | j                  | j                  j                         g        d| j                  d<   | j                  | j                  j                         dg       | j                  d| j                         | j                  | j                  d   d       | j                  | j                  j                  d      d       | j                  | j                  j                  d      d       | j                  j                          y )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_valuezDbmTestCase.test_empty_value(   s    88},MM 0 1t}}c2+w
3h')3/H-s3**84c:r   c                     dD ]L  }	 t         j                  j                  | j                  |      | _        | j                  j                          N y # t        $ r | j                          Y kw xY w)N)rrwwn)r   r   r   r   r   r   r   fail)r   modes     r   
test_modeszDbmTestCase.test_modes6   sW    ) 	Dt}}d;	  		s   A	AA/.A/c                 D   t         j                  j                  | j                  d      5 }d|d<   d d d        t         j                  j                  | j                  d      5 }| j	                  t        |j                               dg       d d d        | j                  t         j                  j                        5 }j                          d d d        | j	                  t        j                        d       y # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   GxY w)Nr
   zcontext managerzndbm context managerr4   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_managerz DbmTestCase.test_context_manager>   s    XX]]4==#. 	;"):B%&	; XX]]4==#. 	I"T"'')_/F.GH	I sxx~~. 	"GGI	R\\*=	?	; 	;	I 	I	 	s#   C>#+D
?D>D
DDc                    t         j                  j                  | j                  d      5 }d|d<   d d d        t         j                  j                  | 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   bytes value s   bytes key r4   )r   r   r   r   r%   r<   r&   
assertTruer   r?   s     r   
test_byteszDbmTestCase.test_bytesJ   s    XX]]4==#. 	8"$7B !	8XX]]4==#. 	I"T"'')_/@.ABOO-34R 124GH	I 	I	8 	8	I 	Is   B?#AC?CCc                    t         j                  j                  | j                  d      5 }d|d<   d d d        t         j                  j                  | j                  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 🐍r4   )	r   r   r   r   r%   r<   r&   encoderC   rD   s     r   test_unicodezDbmTestCase.test_unicodeR   s   XX]]4==#. 	F"+EB'(	FXX]]4==#. 	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D9-D69Ec                    t         j                  j                  | j                  d      5 }d|d<   d d d        t         j                  j                  | j                  d      5 }| j	                  t
              5  |d= d d d        | j	                  t
              5  |d= d d d        | j	                  t
              5  d|d<   d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   MxY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Nr
   s   bytes values	   bytes keyr4   s   not exist keys   not exist value)r   r   r   r   r*   r   rD   s     r   test_write_readonly_filez$DbmTestCase.test_write_readonly_file^   s    XX]]4==#. 	."-B|	.XX]]4==#. 	:"""5) )'()""5) %|$%""5) :'9#$:	: 	:	. 	.) )% %: :	: 	:s_   C#D9C=DC*D;C6DCC'	#D*C3	/D6C?	;DDz*requires OS support of non-ASCII encodingsc                 B   t         j                  dD ]%  }| j                  t         j                  |z          ' t        j
                  j                  d      5 }d|d<   d d d        | j                  t        fddD                     t        j
                  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   r
   s   values   keyc              3   b   K   | ]&  }t         j                  j                  |z          ( y w)N)ospathexists).0r   r   s     r   	<genexpr>z5DbmTestCase.test_nonascii_filename.<locals>.<genexpr>q   s-      G & GGNN8f+<= Gs   ,/r4   )r   TESTFN_NONASCII
addCleanupr   r   r   r   rC   anyr%   r<   r&   )r   r   r?   r   s      @r   test_nonascii_filenamez"DbmTestCase.test_nonascii_filenamei   s     ,,1 	AFOOI,,h.?@	AXX]]8S) 	"R!BvJ	" G*EG G 	HXX]]8S) 	3RT"'')_vh7OOFbL)RZ2	3 	3		" 	"	3 	3s   D	-AD	DDc                 X   d}| j                  t        j                  j                        5 }t        j                  j	                  |       d d d        | j                  |t        j                               | j                  |j                  j                  |       y # 1 sw Y   UxY w)Nznonexisting-file)
r*   r   r   r   r   r'   r=   r>   r%   r   )r   nonexisting_filer@   s      r   test_nonexisting_filez!DbmTestCase.test_nonexisting_filex   sy    -sxx~~. 	,"HHMM*+	,&BLL(9:..0@A	, 	,s    B  B)c                     t         j                  j                  t        j                  | j
                        d      j                          y r	   )r   r   r   r   FakePathr   r   r   s    r   test_open_with_pathlib_pathz'DbmTestCase.test_open_with_pathlib_path   s,    i((7=CCEr   c                     t         j                  j                  t        j                  | j
                        d      j                          y r	   )r   r   r   rM   fsencoder   r   r   s    r   test_open_with_bytes_pathz%DbmTestCase.test_open_with_bytes_path   s*    bkk$--0#6<<>r   c                     t         j                  j                  t        j                  t        j                  | j                              d      j                          y r	   )	r   r   r   r   rZ   rM   r]   r   r   r   s    r   !test_open_with_pathlib_bytes_pathz-DbmTestCase.test_open_with_pathlib_bytes_path   s5    i((T]])CDcJPPRr   c                     t         j                  j                  | j                  d      5 }| j	                  t        |             d d d        y # 1 sw Y   y xY wr	   )r   r   r   r   assertFalseboolrD   s     r   test_bool_emptyzDbmTestCase.test_bool_empty   sA    XX]]4==#. 	'"T"X&	' 	' 	's   AAc                     t         j                  j                  | j                  d      5 }d|d<   | j	                  t        |             d d d        y # 1 sw Y   y xY wNr
   r   r   )r   r   r   r   rC   rc   rD   s     r   test_bool_not_emptyzDbmTestCase.test_bool_not_empty   sH    XX]]4==#. 	&"BsGOODH%	& 	& 	&s    AAc                     t         j                  j                  | j                  d      5 }d|d<   d d d        | j	                  t         j                  j
                  t               y # 1 sw Y   9xY wrf   )r   r   r   r   r*   r   rc   rD   s     r   test_bool_on_closed_db_raisesz)DbmTestCase.test_bool_on_closed_db_raises   sR    XX]]4==#. 	"BsG	#((..$3	 	s   A))A2N)__name__
__module____qualname__r   r   r-   r2   r:   rA   rE   rH   rJ   unittest
skipUnlessr   rR   rU   rX   r[   r^   r`   rd   rg   ri    r   r   r   r   	   s    
5(
?I
B	: X22EG3G3BF?S'&
4r   r   __main__)test.supportr   r   import_modulerM   rm   dbm.ndbmr   r   TestCaser   rj   mainro   r   r   <module>rv      sV    & "   J ' 	   K4(## K4\ zHMMO r   