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)%ÚAnyDBMTestCaseóPython: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-)Ú assertRaisesrr0rrr2r 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$rrrrr7r+Ú 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$rrrr7r+ÚgetrÚ assertIsNoner4ÚKeyErrorr!r<r r r Útest_anydbm_read[s   &zAnyDBMTestCase.test_anydbm_readcCs*| ¡t td¡}| |¡}| ¡dS)NrC)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*ÚassertInrErAr!r<r r r Útest_empty_valuems   zAnyDBMTestCase.test_empty_valuecCsF| ¡t td¡}d d¡}| ||¡||dks:J‚| ¡dS)NrCrrr)r$rrrr rLr!r8r r r Útest_anydbm_access{s    z!AnyDBMTestCase.test_anydbm_accesscCs6| |¡}|jD] }| |j||| d¡¡qdS)Nr)r,rr+r )r"rr*r9r r r r7ƒs  zAnyDBMTestCase.read_helpercCs tƒdSr-©rr2r r r ÚtearDownˆszAnyDBMTestCase.tearDowncCs|jt_tƒdSr-)r/rrKrr2r r r ÚsetUp‹szAnyDBMTestCase.setUpN)Ú__name__Ú __module__Ú __qualname__rr$r,r3r5r:r=rBrHrIrMrNr7rPrQr 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 rRrrrr!r+rÚwhichdbrL)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.dbrVéýÿÿÿ) ÚformatrrZ addCleanuprrrrFrrX)r"Zdb_filer r r Útest_whichdb_ndbm§s  .z!WhichDBTestCase.test_whichdb_ndbmcCs tƒdSr-rOr2r r r rP¯szWhichDBTestCase.tearDowncCs<tƒtjj|_t |jd¡|_|j ¡tj  d¡|_dS)Nrr) rrrÚTESTFNÚfilenamerrrr!Zimport_fresh_moduler2r r r rQ²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)rDób)s 12345678910s019237410982340912840198242css|]\}}|VqdSr-r )r&r#Úvr r r r'¿r(z,WhichDBTestCase.test_keys..r?cs ˆjdS)Nr?)rr r2r r ÚÄr(z+WhichDBTestCase.test_keys..) rrr_rr+r*r)rLZ assertNotInr4rGr!)r"rr#rar r2r Ú test_keys¹s  $ zWhichDBTestCase.test_keysN) rRrSrTrYÚunittestZ skipUnlessrr]rPrQrcr r r r rUs   rUcCsNg}tƒD]&}| td|jttjfd|iƒ¡q dd„|Dƒ}| |¡|S)Nz TestCase-r/cSsg|]}t |¡‘qSr )rdZ makeSuite)r&rr r r Ú Îr(zload_tests..)r ÚappendÚtyperRrrdÚTestCaseZaddTests)ÚloaderZtestsÚpatternÚclassesr Zsuitesr r r Ú load_testsÈs þ rlÚ__main__)Ú__doc__rdrZ test.supportrrÚ import_modulerrrr^rr rrrhrUrlrRÚmainr r r r Ús     h8