a ze@sdddlmZedZddlZddlZddlmZmZm Z eZ Gdddej Z e dkr`edS))supportzdbm.gnuN)TESTFNTESTFN_NONASCIIunlinkc@seZdZeddZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZeedddZddZdS)TestGdbmcCs<tjr8zddlm}Wnty(Yn0td|dS)Nr) _GDBM_VERSIONzgdbm version: )rverbose_gdbmr ImportErrorprint)versionr E/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_dbm_gnu.py setUpClass s  zTestGdbm.setUpClasscCs d|_dSNgselfr r rsetUpszTestGdbm.setUpcCs |jdur|jttdSr)rcloserfilenamerr r rtearDowns  zTestGdbm.tearDowncCs^ttd|_||jgd|jd<d|jd<d|jd<t|j}||tgd|d|j|d |j||jdd|j}|r|||| ||j |}q||j d d | |j d ||j d d d | t|jd Wdn1s(0Y||jd d d ||jd d dS)NcbaZ019237410982340912840198242Z 12345678910sdatabytes)ars 12345678910rbsxxxsfooZxxx)gdbmopenrr assertEqualkeyssetassertInZfirstkeyremoveZnextkeygetZ assertIsNone assertRaisesKeyError setdefault)rZkey_setkeyr r rtest_key_methodss,       *zTestGdbm.test_key_methodscs`tttjtjtdttd_jtjfddtjdddS)Nrrcs jdS)Nrrr rr r=z0TestGdbm.test_error_conditions..cSsttdS)Nrx)rr rrr r r rr-?r.)rrr'rerrorr rrrr rrtest_error_conditions6s  zTestGdbm.test_error_conditionscCs|ttj}|td}t|D]}tt||_|jq|td}|D]*}|D] }tt|||_|jqTqLdS)NZfsuZcrwn)r#rZ open_flagssortedr rrr)rallZmodesmodeflagsflagr r r test_flagsAs     zTestGdbm.test_flagscCsttd|_tjt}t|d}d||jd<tjt}||||jd=| tjt||j tjt}| ||| ||dS)Nri'x) rr rrospathgetsizemaxZ assertGreaterr!Z reorganizeZ assertLessZassertGreaterEqual)rZsize0Z value_sizeZsize1Zsize2r r rtest_reorganizeQs       zTestGdbm.test_reorganizecCsttd}d|d<Wdn1s*0Yttd&}|t|dgWdn1sl0Y|tj}|Wdn1s0Y|t|j ddS)Nrzcontext managerzgdbm context managerr,sgdbm context managerz#GDBM object has already been closed) rr rr!listr"r'r0str exception)rdbcmr r rtest_context_managerfs&4& zTestGdbm.test_context_managercCsttd}d|d<Wdn1s*0YttdD}|t|dg|d|v||ddWdn1s0YdS)Nrs bytes value s bytes key r,)rr rr!r>r" assertTruerrAr r r test_bytesrs &zTestGdbm.test_bytescCsttd}d|d<Wdn1s*0Yttdv}|t|dg|d|v|d|v||dd||ddWdn1s0YdS)NruUnicode value 🐍uUnicode key 🐍r,)rr rr!r>r"encoderDrEr r r test_unicodezs& zTestGdbm.test_unicodec Csttd}d|d<Wdn1s*0Yttd}|tj|d=Wdn1sj0Y|tj|d=Wdn1s0Y|tjd|d<Wdn1s0YWdn1s0YdS)Nrs bytes values bytes keyr,s not exist keysnot exist value)rr rr'r0rEr r rtest_write_readonly_files&$$z!TestGdbm.test_write_readonly_filez*requires OS support of non-ASCII encodingscCst}|t|t|d}d|d<Wdn1s:0Y|tj|t|dD}| t | dg|d|v| |ddWdn1s0YdS)Nrsvalueskeyr,) rZ addCleanuprrr rDr9r:existsr!r>r")rrrAr r rtest_nonascii_filenames &zTestGdbm.test_nonascii_filenamecCs`d}|tj}t|Wdn1s00Y||t|j||jj|dS)Nznonexisting-file) r'rr0r r$r?r@r!r)rZnonexisting_filerBr r rtest_nonexisting_files (zTestGdbm.test_nonexisting_fileN)__name__ __module__ __qualname__ staticmethodrrrr+r1r7r=rCrFrHrIunittestZ skipUnlessrrKrLr r r rr s"      r__main__)testr import_modulerrQr9Z test.supportrrrrZTestCaserrMmainr r r rs