a 4êdgÊã@s¤dZddlZddlZddlZej d¡ZzddlmZWne yNdZYn0ejj Z dd„Z dd„Z Gd d „d ƒZGd d „d ejƒZd d„Zedkr e ¡dS)z=Test script for the dbm.open function based on testdumbdbm.pyéNÚdbm)Úndbmc csJtjD]>}zt|dgd}Wnty2YqYn0|tj|<|VqdS)NÚopen)Úfromlist)rZ_namesÚ __import__Ú ImportErrorZ_modules)ÚnameÚmod©r ú)/usr/local/lib/python3.9/test/test_dbm.pyÚ dbm_iterators    r cCs*t t t¡d¡D]}tj |¡qdS)NÚ*)ÚglobÚescapeÚ_fnameÚtestÚsupportÚunlink)Úfr r r Ú delete_files!src@sŽeZdZdddddddœZdd „Zd d „Zd d „Zdd„Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zd d!„Zd"d#„Zd$S)%ÚAnyDBMTestCasesPython:s ProgrammingstheswaysGuidosintended)ÚaÚbÚcÚdrÚgcCs8t td¡}|jD]}|j||| d¡<q| ¡dS)NÚnÚascii)rrrÚ_dictÚencodeÚclose)ÚselfrÚkr r r Úinit_db1s  zAnyDBMTestCase.init_dbcCs4tdd„| ¡Dƒƒ}t|j ¡ƒ}| ||¡|S)Ncss|]}| d¡VqdS)rN)Údecode)Ú.0r"r r r Ú 8óz-AnyDBMTestCase.keys_helper..)ÚsortedÚkeysrÚ assertEqual)r!rr)Zdkeysr r r Ú keys_helper7s zAnyDBMTestCase.keys_helpercCs| t|jjtƒ¡dS©N)Z assertTrueÚ issubclassÚmoduleÚerrorÚOSError©r!r r r Ú test_error=szAnyDBMTestCase.test_errorcCs| tjtjt¡dSr,)Ú assertRaisesrr/rrr1r r r Útest_anydbm_not_existing@sz'AnyDBMTestCase.test_anydbm_not_existingcCsVt td¡}| t| ¡ƒg¡|jD]}|j||| d¡<q&| |¡|  ¡dS)Nrr) rrrr*Úlistr)rrÚ read_helperr ©r!rÚkeyr r r Útest_anydbm_creationCs    z#AnyDBMTestCase.test_anydbm_creationcCsLtj t¡t td¡ }| t|ƒd¡Wdƒn1s>0YdS)Nrr)rrZcreate_empty_filerrrr*Úlen©r!rr r r Ú8test_anydbm_creation_n_file_exists_with_invalid_contentsKs zGAnyDBMTestCase.test_anydbm_creation_n_file_exists_with_invalid_contentscCs`| ¡t td¡}d|jd<|d<| |¡| | dd¡d¡| |dd¡| ¡dS)Nrsindentedrógóxxxófoo) r#rrrrr6r*Ú setdefaultr r;r r r Útest_anydbm_modificationQs  z'AnyDBMTestCase.test_anydbm_modificationcCs˜| ¡t td¡}| |¡| | d¡|jd¡| | dd¡d¡| | d¡¡|  t ¡|dWdƒn1s‚0Y|  ¡dS)NÚróarr>r?) r#rrrr6r*ÚgetrÚ assertIsNoner3ÚKeyErrorr r;r r r Útest_anydbm_read[s   &zAnyDBMTestCase.test_anydbm_readcCs*| ¡t td¡}| |¡}| ¡dS)NrB)r#rrrr+r )r!rr)r r r Útest_anydbm_keysgs  zAnyDBMTestCase.test_anydbm_keyscCsžttjddƒdkr| d¡t td¡}| | ¡g¡d|d<| | ¡dg¡| d|¡| |dd¡| |  d¡d¡| |  d¡d¡|  ¡dS)NZlibraryz Berkeley DBzCBerkeley DB doesn't distinguish the empty value from the absent onerr'sempty) ÚgetattrrÚ _defaultmodZskipTestrrr*r)ÚassertInrDr@r r;r r r Útest_empty_valuems   zAnyDBMTestCase.test_empty_valuecCs6| ¡t td¡}d d¡}| ||¡| ¡dS)NrBrr)r#rrrrrKr r7r r r Útest_anydbm_access{s    z!AnyDBMTestCase.test_anydbm_accesscCs6| |¡}|jD] }| |j||| d¡¡qdS)Nr)r+rr*r)r!rr)r8r r r r6ƒs  zAnyDBMTestCase.read_helpercCs tƒdSr,©rr1r r r ÚtearDownˆszAnyDBMTestCase.tearDowncCs|jt_tƒdSr,)r.rrJrr1r r r ÚsetUp‹szAnyDBMTestCase.setUpN)Ú__name__Ú __module__Ú __qualname__rr#r+r2r4r9r<rArGrHrLrMr6rOrPr r r r r(s*û  rc@sBeZdZdd„Zejedddd„ƒZdd„Zd d „Z d d „Z d S)ÚWhichDBTestCasecCsštƒD]Ž}|j}|dkrqtƒ| td¡}| ¡| ||j t¡¡| td¡}d|d<|  d|¡| |dd¡| ¡| ||j t¡¡qdS)Nzdbm.dumbrÚwó1) r rQrrrr r*rÚwhichdbrK)r!r.rrr r r Ú test_whichdb‘s    zWhichDBTestCase.test_whichdbzTest requires ndbm)ÚreasoncCsbd t¡}t|dƒ | tjj|¡Wdƒn1s:0Y| |j  |dd…¡¡dS)Nz {}_ndbm.dbrUéýÿÿÿ) ÚformatrrZ addCleanuprrrrErrW)r!Zdb_filer r r Útest_whichdb_ndbm§s  .z!WhichDBTestCase.test_whichdb_ndbmcCs tƒdSr,rNr1r r r rO¯szWhichDBTestCase.tearDowncCs<tƒtjj|_t |jd¡|_|j ¡tj  d¡|_dS)Nrr) rrrÚTESTFNÚfilenamerrrr Zimport_fresh_moduler1r r r rP²s   zWhichDBTestCase.setUpcsÄt ˆjd¡ˆ_ˆ ˆj ¡g¡ddg}|D]\}}|ˆj|<q.ˆ tˆj ¡ƒtdd„|Dƒƒ¡|D](\}}ˆ |ˆj¡ˆ ˆj||¡qjˆ dˆj¡ˆ  t ‡fdd„¡ˆj  ¡dS) Nr)rCób)s 12345678910s019237410982340912840198242css|]\}}|VqdSr,r )r%r"Úvr r r r&¿r'z,WhichDBTestCase.test_keys..r>cs ˆjdS)Nr>)rr r1r r ÚÄr'z+WhichDBTestCase.test_keys..) rrr^rr*r)r(rKZ assertNotInr3rFr )r!rr"r`r r1r Ú test_keys¹s  $ zWhichDBTestCase.test_keysN) rQrRrSrXÚunittestZ skipUnlessrr\rOrPrbr r r r rTs   rTcCsNg}tƒD]&}| td|jttjfd|iƒ¡q dd„|Dƒ}| |¡|S)Nz TestCase-r.cSsg|]}t |¡‘qSr )rcZ makeSuite)r%rr r r Ú Îr'zload_tests..)r ÚappendÚtyperQrrcÚTestCaseZaddTests)ÚloaderZtestsÚpatternÚclassesr Zsuitesr r r Ú load_testsÈs þ rkÚ__main__)Ú__doc__rcrZ test.supportrrÚ import_modulerrrr]rr rrrgrTrkrQÚmainr r r r Ús     h8