a zeF@sdZddlZddlZddlZddlZzddlmZWneyJdZYn0ejj Z ej e ejj Z ddZddZdd ZGd d d ZGd d d ejZeD]HZejdsJejddZdeZeeeejfdeiee<qedkredS)z=Test script for the dbm.open function based on testdumbdbm.pyN)ndbmc csJtjD]>}zt|dgd}Wnty2YqYn0|tj|<|VqdS)Nopen)fromlist)dbmZ_names __import__ ImportErrorZ_modules)namemodr A/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_dbm.py dbm_iterators    r cCstjtdSN)testsupportrmtreedirnamer r r r cleaunup_test_dirsrcCstttdSr )rosmkdirrr r r r setup_test_dir"src@seZdZdddddddZdd Zd d Zd d ZddZddZddZ ddZ ddZ ddZ ddZ ddZddZd d!Zd"d#Zd$S)%AnyDBMTestCasePython:s ProgrammingstheswaysGuidosintended)abcdfgcCs8ttd}|jD]}|j|||d<q|dS)Nnascii)rr_fname_dictencodeclose)selfrkr r r init_db0s  zAnyDBMTestCase.init_dbcCs4tdd|D}t|j}||||S)Ncss|]}|dVqdS)rN)decode).0r%r r r 7z-AnyDBMTestCase.keys_helper..)sortedkeysr! assertEqual)r$rr,Zdkeysr r r keys_helper6s zAnyDBMTestCase.keys_helpercCs|t|jjtdSr )Z assertTrue issubclassmoduleerrorOSErrorr$r r r test_error<szAnyDBMTestCase.test_errorcCs|tjtjtdSr ) assertRaisesrr1rr r3r r r test_anydbm_not_existing?sz'AnyDBMTestCase.test_anydbm_not_existingcCsVttd}|t|g|jD]}|j|||d<q&||| dS)Nrr) rrr r-listr,r!r" read_helperr#r$rkeyr r r test_anydbm_creationBs    z#AnyDBMTestCase.test_anydbm_creationcCsLtjtttd }|t|dWdn1s>0YdS)Nrr)rrZcreate_empty_filer rrr-lenr$rr r r 8test_anydbm_creation_n_file_exists_with_invalid_contentsJs zGAnyDBMTestCase.test_anydbm_creation_n_file_exists_with_invalid_contentscCs`|ttd}d|jd<|d<||||ddd||dd|dS)Nrsindentedrgxxxfoo) r&rrr r!r8r- setdefaultr#r=r r r test_anydbm_modificationPs  z'AnyDBMTestCase.test_anydbm_modificationcCs|ttd}||||d|jd||ddd||d| t |dWdn1s0Y| dS)Nrarr@rA) r&rrr r8r-getr! assertIsNoner5KeyErrorr#r=r r r test_anydbm_readZs   &zAnyDBMTestCase.test_anydbm_readcCs*|ttd}||}|dS)NrD)r&rrr r.r#)r$rr,r r r test_anydbm_keysfs  zAnyDBMTestCase.test_anydbm_keyscCsttjdddkr|dttd}||gd|d<||dg|d|||dd|| dd|| dd| dS)NZlibraryz Berkeley DBzCBerkeley DB doesn't distinguish the empty value from the absent onerr*sempty) getattrr _defaultmodZskipTestrr r-r,assertInrFrBr#r=r r r test_empty_valuels   zAnyDBMTestCase.test_empty_valuecCsF|ttd}dd}|||||dks:J|dS)NrDrrr)r&rrr r"rMr#r9r r r test_anydbm_accesszs    z!AnyDBMTestCase.test_anydbm_accesscCs6||}|jD] }||j|||dqdS)Nr)r.r!r-r")r$rr,r:r r r r8s  zAnyDBMTestCase.read_helpercsttd|gddg}|D]\}}||<q*|ttdd|D|D]$\}}|||||qb|d|t fddWdn1s0YdS) Nr)rEb)s 12345678910s019237410982340912840198242css|]\}}|VqdSr r )r(r%vr r r r)r*z+AnyDBMTestCase.test_keys..r@csdS)Nr@r r rr r r*z*AnyDBMTestCase.test_keys..) rrr r-r,r+rMZ assertNotInr5rH)r$rr%rQr rRr test_keyss  "   zAnyDBMTestCase.test_keyscCs.|ttdtj|jt_|ttdS)NrL) addCleanupsetattrrrLr0rrr3r r r setUps zAnyDBMTestCase.setUpN)__name__ __module__ __qualname__r!r&r.r4r6r;r>rCrIrJrNrOr8rTrWr r r r r's*   rc@s2eZdZddZejeddddZddZd S) WhichDBTestCasec Cs|ttdtjtD]}|j}t|t_|tdWdn1sP0Y| ||j t|td4}d|d<| d|| |ddWdn1s0Y| ||j tqdS)NrLrw1) rUrVrrLr rXrrr r-whichdbrM)r$r0rrr r r test_whichdbs , .zWhichDBTestCase.test_whichdbzTest requires ndbm)reasoncCsDttddWdn1s$0Y||jtdS)Nz.dbwb)rr rGrr^r3r r r test_whichdb_ndbms.z!WhichDBTestCase.test_whichdb_ndbmcCs"|tttjd|_dS)Nr)rUrrrrZimport_fresh_modulerr3r r r rWs zWhichDBTestCase.setUpN) rXrYrZr_unittestZ skipUnlessrrbrWr r r r r[s  r[zdbm.Z TestCase_r0__main__)__doc__rcrrZ test.supportrrrrZTESTFNrpathjoinr r rrrZTestCaser[r rX startswithsuffixZtestnametypeglobalsmainr r r r s2   t!