a ze7@s`ddlmZedddlZddlZddlZddlmZGdddejZ e dkr\e dS))supportzdbm.ndbmN)errorc@sreZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ e ejdddZddZdS) DbmTestCasecCs(tj|_tj|jd|_|jdS)Nc)rZTESTFNfilenamedbmndbmopendcloseselfrF/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_dbm_ndbm.pysetUp szDbmTestCase.setUpcCsdD]}t|j|qdS)Nz.pagz.dirz.db)runlinkr)r suffixrrrtearDownszDbmTestCase.tearDowncCs tj|jd|_||jgd|jd<d|jd<d|jd<|j|d|j|d|j||jdd||jdd | |jd ||jd d d | t |jd Wdn1s0Y||j d d d ||jd d |j dS) NrbasdatasbytesZ019237410982340912840198242Z 12345678910absxxxsfooZxxx)rrr rr assertEqualkeysassertIngetZ assertIsNone assertRaisesKeyError setdefaultr r rrr test_keyss"     (zDbmTestCase.test_keyscCstjjdkr|dtj|jd|_||jgd|jd<||jdg| d|j||jdd||j dd||j dd|j dS)Nz Berkeley DBzCBerkeley DB doesn't distinguish the empty value from the absent onerremptysempty) rrZlibraryZskipTestr rr rrrrr r r rrrtest_empty_value's   zDbmTestCase.test_empty_valuec CsJdD]@}z tj|j||_|jWqtyB|Yq0qdS)N)rrwwn)rrr rr r rZfail)r moderrr test_modes5s  zDbmTestCase.test_modescCstj|jd}d|d<Wdn1s.0Ytj|jd&}|t|dgWdn1st0Y|tjj}|Wdn1s0Y|t |j ddS)Nrzcontext managerzndbm context managerr%sndbm context managerz"DBM object has already been closed) rrr rrlistrrrstr exception)r dbcmrrrtest_context_manager=s&4& z DbmTestCase.test_context_managercCstj|jd}d|d<Wdn1s.0Ytj|jdD}|t|dg|d|v||ddWdn1s0YdS)Nrs bytes value s bytes key r%)rrr rrr+r assertTruer r.rrr test_bytesIs &zDbmTestCase.test_bytescCstj|jd}d|d<Wdn1s.0Ytj|jdv}|t|dg|d|v|d|v||dd||ddWdn1s0YdS)NruUnicode value 🐍uUnicode key 🐍r%) rrr rrr+rencoder1r2rrr test_unicodeQs& zDbmTestCase.test_unicodec Cstj|jd}d|d<Wdn1s.0Ytj|jd}|t|d=Wdn1sp0Y|t|d=Wdn1s0Y|td|d<Wdn1s0YWdn1s0YdS)Nrs bytes values bytes keyr%s not exist keysnot exist value)rrr rrrr2rrrtest_write_readonly_file]s& $ $ z$DbmTestCase.test_write_readonly_filez*requires OS support of non-ASCII encodingscstjdD]}|tj|q tjd}d|d<Wdn1sN0Y|tfdddDtjdD}| t | dg|d|v| |ddWdn1s0YdS)Nrrsvalueskeyc3s|]}tj|VqdS)N)ospathexists).0rrrr psz5DbmTestCase.test_nonascii_filename..r%) rTESTFN_NONASCIIZ addCleanuprrrr r1anyrr+r)r rr.rr;rtest_nonascii_filenamehs& z"DbmTestCase.test_nonascii_filenamecCsdd}|tjj}tj|Wdn1s40Y||t|j||jj |dS)Nznonexisting-file) rrrrr rr,r-rr)r Znonexisting_filer/rrrtest_nonexisting_filews *z!DbmTestCase.test_nonexisting_fileN)__name__ __module__ __qualname__rrr!r$r*r0r3r5r6unittestZ skipUnlessrr=r?r@rrrrrs    r__main__) testr import_moduler7rDZdbm.ndbmrrZTestCaserrAmainrrrrs   w