a 5êdgúã@sþddlZddlZddlZddlmZddlmZddlmZdd„Z Gdd„deƒZ Gd d „d ej ƒZ dd lm Z Gd d „d e j ƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZdd„ZedkrúeƒdS)éN)Úsupport)ÚMutableMapping)Ú dbm_iteratorcCs | d¡S©Núlatin-1)Údecode)Ús©r ú,/usr/local/lib/python3.9/test/test_shelve.pyÚL1sr c@sTeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z e Z dd„Z dd„Z dS)Ú byteskeydictz Mapping that supports bytes keyscCs i|_dS©N)Úd©Úselfr r r Ú__init__szbyteskeydict.__init__cCs|jt|ƒSr ©rr ©rÚkeyr r r Ú __getitem__szbyteskeydict.__getitem__cCs||jt|ƒ<dSr r)rrÚvaluer r r Ú __setitem__szbyteskeydict.__setitem__cCs|jt|ƒ=dSr rrr r r Ú __delitem__szbyteskeydict.__delitem__cCs t|jƒSr )Úlenrrr r r Ú__len__szbyteskeydict.__len__ccs |j ¡D]}| d¡Vq dSr)rÚkeysÚencode)rÚkr r r Úiterkeysszbyteskeydict.iterkeyscCs t| ¡ƒSr )Úlistrrr r r r#szbyteskeydict.keyscCs t|jƒSr )r rrr r r Úcopy&szbyteskeydict.copyN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrrÚ__iter__rr r r r r r sr c@sheZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)ÚTestCaseú shelftemp.dbcCs$t |jd¡D]}t |¡qdS©NÚ*)ÚglobÚfnrÚunlink)rÚfr r r ÚtearDown.szTestCase.tearDowncCsˆi}tj|ddd}gd¢|d<| |dgd¢¡| t|ƒd¡| ¡| tt|¡z |dWntyxYn 0| d¡dS©NéF©ÚprotocolÚ writeback©ér0ééÚkey1r5z"Closed shelf should not find a key)ÚshelveÚShelfÚ assertEqualrÚcloseÚ assertRaisesÚ ValueErrorÚfail©rÚd1rr r r Ú test_close2s   zTestCase.test_closecCsDtj|jdd}z$d|d<| |dd¡W| ¡n | ¡0dS)Nr©r2r4r8©r9Úopenr+r;r<©rrr r r Útest_ascii_file_shelfAs zTestCase.test_ascii_file_shelfcCsDtj|jdd}z$d|d<| |dd¡W| ¡n | ¡0dS)Nr5rCr4r8rDrFr r r Útest_binary_file_shelfIs zTestCase.test_binary_file_shelfcCsDtj|jdd}z$d|d<| |dd¡W| ¡n | ¡0dS)Nr0rCr4r8rDrFr r r Útest_proto2_file_shelfQs zTestCase.test_proto2_file_shelfcCsÐtƒ}tj|dd(}d|d<| |dd¡Wdƒn1sB0Ytƒ}tj|dd(}d|d<| |dd¡Wdƒn1sŽ0Y| t|ƒd¡| t|ƒd¡| | ¡| ¡¡dS)NrrCr4r8r5)r r9r:r;rÚassertNotEqualÚitems©rrArZd2r r r Útest_in_memory_shelfYs..zTestCase.test_in_memory_shelfcCstƒ}tj|dddR}gd¢|d<| |dgd¢¡|d d¡| |dgd¢¡Wdƒn1sn0Ytƒ}tj|dddR}gd¢|d<| |dgd¢¡|d d¡| |dgd¢¡Wdƒn1sæ0Y| t|ƒd ¡| t|ƒd ¡dS) Nr0Fr1r4r8éT)r5r0r6r7rNr5)r r9r:r;ÚappendrrLr r r Útest_mutable_entrygs 2 2zTestCase.test_mutable_entrycCsvi}d}dgt |¡|<| | d¡|¡dgtj|dd|<| | d¡|¡tj|dd}| t|j|dg¡dS)NuPöpr5úutf-8r)Z keyencodingÚascii)r9r:ZassertInrr=ÚUnicodeEncodeErrorr)rrrrr r r Útest_keyencodingyszTestCase.test_keyencodingcCsxi}d}| d¡}tj|dd0}dg||<||}|d d¡Wdƒn1sV0Y||}| ||¡dS)NrrQT)r3r5r0)rr9r:rOrJ)rrrÚ encodedkeyrZp1Zp2r r r Ú&test_writeback_also_writes_immediately†s  ,z/TestCase.test_writeback_also_writes_immediatelycCs i}tj|ddd@}gd¢|d<| |dgd¢¡| t|ƒd¡Wdƒn1sZ0Y| tt|¡z |dWntyYn 0| d¡dSr/)r9r:r;rr=r>r?r@r r r Ú test_with’s .  zTestCase.test_withcCs<t i¡}| |jd¡Wdƒn1s.0YdS)Nr6)r9r:r;Z _protocolrFr r r Útest_default_protocol s zTestCase.test_default_protocolN)r!r"r#r+r.rBrGrHrIrMrPrTrVrWrXr r r r r&*s  r&)Ú mapping_testsc@s:eZdZdZdZdd„ZejZdd„Z dd„Z d d „Z d S) ÚTestShelveBaser'rcOs$g|_tjj|g|¢Ri|¤ŽdSr )Ú_dbrYÚBasicTestMappingProtocolr)rÚargsÚkwr r r r©szTestShelveBase.__init__cCs ddddœS)NZvalue1r0)r5r0r6)r8Zkey2Zkey3r rr r r Ú _reference­szTestShelveBase._referencecCs\|jrtjtƒfi|j¤Ž}n.|jd7_tj|jt|jƒfi|j¤Ž}|j   |¡|S)Nr5) Ú_in_memr9r:r Ú_argsÚcounterrEr+Ústrr[rO)rÚxr r r Ú_empty_mapping¯s   zTestShelveBase._empty_mappingcCsD|jD] }| ¡qg|_|js@t |jd¡D]}t |¡q0dSr()r[r<r`r*r+rr,)rZdbr-r r r r.·s   zTestShelveBase.tearDownN) r!r"r#r+rbrr9r:Z type2testr_rer.r r r r rZ¦srZc@seZdZddiZdZdS)ÚTestAsciiFileShelver2rFN©r!r"r#rar`r r r r rf¿srfc@seZdZddiZdZdS)ÚTestBinaryFileShelver2r5FNrgr r r r rhÂsrhc@seZdZddiZdZdS)ÚTestProto2FileShelver2r0FNrgr r r r riÅsric@seZdZddiZdZdS)ÚTestAsciiMemShelver2rTNrgr r r r rjÈsrjc@seZdZddiZdZdS)ÚTestBinaryMemShelver2r5TNrgr r r r rkËsrkc@seZdZddiZdZdS)ÚTestProto2MemShelver2r0TNrgr r r r rlÎsrlc Cs&tƒD]}t ttttttt ¡qdSr ) rrZ run_unittestrfrhrirjrkrlr&)Úmoduler r r Ú test_mainÒs ùrnÚ__main__)Zunittestr9r*ÚtestrÚcollections.abcrZ test.test_dbmrr r r&rYr\rZrfrhrirjrkrlrnr!r r r r Ús&   z