a 4êdg7ã@s`ddlmZe d¡ddlZddlZddlZddlmZGdd„dejƒZ e dkr\e  ¡dS)é)Úsupportzdbm.ndbmN)Úerrorc@sreZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z e   ejd¡dd„ƒZdd„ZdS)Ú DbmTestCasecCs(tj|_tj |jd¡|_|j ¡dS)NÚc)rZTESTFNÚfilenameÚdbmÚndbmÚopenÚdÚclose©Úself©rú./usr/local/lib/python3.9/test/test_dbm_ndbm.pyÚsetUp szDbmTestCase.setUpcCsdD]}t |j|¡qdS)N©Úz.pagz.dirz.db)rÚunlinkr)r ÚsuffixrrrÚtearDownszDbmTestCase.tearDowncCs tj |jd¡|_| |j ¡g¡d|jd<d|jd<d|jd<|j ¡| d|j¡| d|j¡| |jdd¡| |j d¡d ¡|  |j d ¡¡| |j d d ¡d ¡|  t ¡|jd Wdƒn1sà0Y| |j  d d ¡d ¡| |jd d ¡|j  ¡dS) NrÚbÚasdatasbytesZ019237410982340912840198242Z 12345678910óaóbsxxxsfooZxxx)rrr rr Ú assertEqualÚkeysÚassertInÚgetZ assertIsNoneÚ assertRaisesÚKeyErrorÚ setdefaultr r rrrÚ test_keyss"     (zDbmTestCase.test_keyscCs®tjjdkr| d¡tj |jd¡|_| |j ¡g¡d|jd<| |j ¡dg¡|  d|j¡| |jdd¡| |j  d¡d¡| |j  d¡d¡|j  ¡dS)Nz Berkeley DBzCBerkeley DB doesn't distinguish the empty value from the absent onerrÚemptysemptyó) rrZlibraryZskipTestr rr rrrrr r r rrrÚtest_empty_value's   zDbmTestCase.test_empty_valuec CsJdD]@}z tj |j|¡|_|j ¡WqtyB| ¡Yq0qdS)N)ÚrÚrwÚwÚn)rrr rr r rZfail)r ÚmoderrrÚ test_modes5s  zDbmTestCase.test_modescCsÊtj |jd¡}d|d<Wdƒn1s.0Ytj |jd¡&}| t| ¡ƒdg¡Wdƒn1st0Y| tjj¡}| ¡Wdƒn1sª0Y| t |j ƒd¡dS)Nrzcontext managerzndbm context managerr%sndbm context managerz"DBM object has already been closed) rrr rrÚlistrrrÚstrÚ exception)r ÚdbÚcmrrrÚtest_context_manager=s&4& ÿz DbmTestCase.test_context_managercCs tj |jd¡}d|d<Wdƒn1s.0Ytj |jd¡D}| t| ¡ƒdg¡| d|v¡| |dd¡Wdƒn1s’0YdS)Nrs bytes value ½s bytes key ½r%)rrr rrr+rÚ assertTrue©r r.rrrÚ test_bytesIs &zDbmTestCase.test_bytescCsÒtj |jd¡}d|d<Wdƒn1s.0Ytj |jd¡v}| t| ¡ƒd ¡g¡| d ¡|v¡| d|v¡| |d ¡d ¡¡| |dd ¡¡Wdƒn1sÄ0YdS)NruUnicode value ðŸuUnicode key ðŸr%) rrr rrr+rÚencoder1r2rrrÚ test_unicodeQs&ÿ ÿzDbmTestCase.test_unicodec Csþtj |jd¡}d|d<Wdƒn1s.0Ytj |jd¡¢}| t¡|d=Wdƒn1sp0Y| t¡|d=Wdƒn1s 0Y| t¡d|d<Wdƒn1sÒ0YWdƒn1sð0YdS)Nrs bytes values bytes keyr%s not exist keysnot exist value)rrr rrrr2rrrÚtest_write_readonly_file]s& $ $ z$DbmTestCase.test_write_readonly_filez*requires OS support of non-ASCII encodingscsÚtj‰dD]}| tjˆ|¡q tj ˆd¡}d|d<Wdƒn1sN0Y| t‡fdd„dDƒƒ¡tj ˆd¡D}|  t |  ¡ƒdg¡| d|v¡|  |dd¡Wdƒn1sÌ0YdS)Nrrsvalueskeyc3s|]}tj ˆ|¡VqdS)N)ÚosÚpathÚexists)Ú.0r©rrrÚ psÿz5DbmTestCase.test_nonascii_filename..r%) rÚTESTFN_NONASCIIZ addCleanuprrrr r1Úanyrr+r)r rr.rr;rÚtest_nonascii_filenamehs&ÿ z"DbmTestCase.test_nonascii_filenamecCsdd}| tjj¡}tj |¡Wdƒn1s40Y| |t|jƒ¡| |jj |¡dS)Nznonexisting-file) rrrrr rr,r-rr)r Znonexisting_filer/rrrÚtest_nonexisting_filews *z!DbmTestCase.test_nonexisting_fileN)Ú__name__Ú __module__Ú __qualname__rrr!r$r*r0r3r5r6ÚunittestZ skipUnlessrr=r?r@rrrrrs   ÿ rÚ__main__) ÚtestrÚ import_moduler7rDZdbm.ndbmrrZTestCaserrAÚmainrrrrÚs   w