a 4êdgÞã@sdddlmZe d¡ZddlZddlZddlmZmZm Z eZ Gdd„dej ƒZ e dkr`e ¡dS)é)Úsupportzdbm.gnuN)ÚTESTFNÚTESTFN_NONASCIIÚunlinkc@s„eZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Ze ed¡dd„ƒZdd„ZdS)ÚTestGdbmcCs<tjr8zddlm}Wnty(Yn0td|›ƒdS)Nr)Ú _GDBM_VERSIONzgdbm version: )rÚverboseÚ_gdbmrÚ ImportErrorÚprint)Úversion©r ú-/usr/local/lib/python3.9/test/test_dbm_gnu.pyÚ setUpClass s  zTestGdbm.setUpClasscCs d|_dS©N©Úg©Úselfr r rÚsetUpszTestGdbm.setUpcCs |jdur|j ¡ttƒdSr)rÚcloserÚfilenamerr r rÚtearDowns  zTestGdbm.tearDowncCs^t td¡|_| |j ¡g¡d|jd<d|jd<d|jd<t|j ¡ƒ}| |tgd¢ƒ¡| d|j¡| d |j¡| |jdd¡|j ¡}|rÀ| ||¡|  |¡|j  |¡}q˜| |j  d ¡d ¡|  |j  d ¡¡| |j  d d ¡d ¡|  t¡|jd Wdƒn1s(0Y| |j d d ¡d ¡| |jd d ¡dS)NÚcÚbÚaZ019237410982340912840198242Z 12345678910sdataóbytes)óars 12345678910róbsxxxsfooZxxx)ÚgdbmÚopenrrÚ assertEqualÚkeysÚsetÚassertInZfirstkeyÚremoveZnextkeyÚgetZ assertIsNoneÚ assertRaisesÚKeyErrorÚ setdefault)rZkey_setÚkeyr r rÚtest_key_methodss,       *zTestGdbm.test_key_methodscs`ttƒˆ tjtjtd¡t td¡ˆ_ˆj ¡ˆ tj‡fdd„¡ˆ tjdd„¡dS)NÚrrcs ˆjdS)Nrrr rr rÚ=óz0TestGdbm.test_error_conditions..cSst td¡ ¡S)NÚrx)rr rrr r r rr-?r.)rrr'rÚerrorr rrrr rrÚtest_error_conditions6s  zTestGdbm.test_error_conditionscCs|ttjƒ}|tdƒ}t|ƒD]}t t|¡|_|j ¡q|tdƒ}|D]*}|D] }t t||¡|_|j ¡qTqLdS)NZfsuZcrwn)r#rZ open_flagsÚsortedr rrr)rÚallZmodesÚmodeÚflagsÚflagr r rÚ test_flagsAs     zTestGdbm.test_flagscCs˜t td¡|_tj t¡}t|dƒ}d||jd<tj t¡}| ||¡|jd=|  tj t¡|¡|j  ¡tj t¡}|  ||¡|  ||¡dS)Nri'Úx) rr rrÚosÚpathÚgetsizeÚmaxZ assertGreaterr!Z reorganizeZ assertLessZassertGreaterEqual)rZsize0Z value_sizeZsize1Zsize2r r rÚtest_reorganizeQs       zTestGdbm.test_reorganizecCsÀt td¡}d|d<Wdƒn1s*0Yt td¡&}| t| ¡ƒdg¡Wdƒn1sl0Y| tj¡}| ¡Wdƒn1s 0Y| t|j ƒd¡dS)Nrzcontext managerzgdbm context managerr,sgdbm context managerz#GDBM object has already been closed) rr rr!Úlistr"r'r0ÚstrÚ exception)rÚdbÚcmr r rÚtest_context_managerfs&4& ÿzTestGdbm.test_context_managercCs˜t td¡}d|d<Wdƒn1s*0Yt td¡D}| t| ¡ƒdg¡| d|v¡| |dd¡Wdƒn1sŠ0YdS)Nrs bytes value ½s bytes key ½r,)rr rr!r>r"Ú assertTrue©rrAr r rÚ test_bytesrs &zTestGdbm.test_bytescCsÊt td¡}d|d<Wdƒn1s*0Yt td¡v}| t| ¡ƒd ¡g¡| d ¡|v¡| d|v¡| |d ¡d ¡¡| |dd ¡¡Wdƒn1s¼0YdS)NruUnicode value ðŸuUnicode key ðŸr,)rr rr!r>r"ÚencoderDrEr r rÚ test_unicodezs&ÿ ÿzTestGdbm.test_unicodec Csüt td¡}d|d<Wdƒn1s*0Yt td¡¨}| tj¡|d=Wdƒn1sj0Y| tj¡|d=Wdƒn1sœ0Y| tj¡d|d<Wdƒn1sÐ0YWdƒn1sî0YdS)Nrs bytes values bytes keyr,s not exist keysnot exist value)rr rr'r0rEr r rÚtest_write_readonly_file†s&$$z!TestGdbm.test_write_readonly_filez*requires OS support of non-ASCII encodingscCsºt}| t|¡t |d¡}d|d<Wdƒn1s:0Y| tj |¡¡t |d¡D}|  t |  ¡ƒdg¡| d|v¡|  |dd¡Wdƒn1s¬0YdS)Nrsvalueskeyr,) rZ addCleanuprrr rDr9r:Úexistsr!r>r")rrrAr r rÚtest_nonascii_filename‘s &zTestGdbm.test_nonascii_filenamecCs`d}| tj¡}t |¡Wdƒn1s00Y| |t|jƒ¡| |jj|¡dS)Nznonexisting-file) r'rr0r r$r?r@r!r)rZnonexisting_filerBr r rÚtest_nonexisting_filežs (zTestGdbm.test_nonexisting_fileN)Ú__name__Ú __module__Ú __qualname__Ú staticmethodrrrr+r1r7r=rCrFrHrIÚunittestZ skipUnlessrrKrLr r r rr s"     ÿ rÚ__main__)ÚtestrÚ import_modulerrQr9Z test.supportrrrrZTestCaserrMÚmainr r r rÚs