a ze @sddlZddlZddlZddlZddlZddlmZmZddlm Z ddZ ddZ Gdd d e Z Gd d d ejZed kredS) N)loadsdumps)supportcCs t|drt|StddS)z Helper function to convert a slice argument to an integer, and raise TypeError with a suitable message on failure. __index__zBslice indices must be integers or None or have an __index__ methodN)hasattroperatorindex TypeError)argr C/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_slice.pyevaluate_slice_index s   r cCst|}|jdurdnt|j}|dkr2td|dkrBtd|dkrNdnd}|dkrb|dn|}|jdur|dkr||n|}n*t|j}|dkrt|||nt||}|jdur|dkr|n|}n*t|j}|dkrt|||nt||}|||fS)zA Reference implementation for the slice.indices method. Nrzlength should not be negativezslice step cannot be zero) rrstepr ValueErrorstartmaxminstop)slicelengthrlowerupperrrr r r slice_indicess"       rc@seZdZddZddZdS) MyIndexablecCs ||_dSNvalue)selfrr r r __init__AszMyIndexable.__init__cCs|jSrrrr r r rDszMyIndexable.__index__N)__name__ __module__ __qualname__r rr r r r r@src@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS) SliceTestcCs$|tt|ttdddddS)Nr) assertRaisesr rr!r r r test_constructorJs zSliceTest.test_constructorcCs|ttdddddS)Nrr&r'zslice(1, 2, 3)) assertEqualreprrr!r r r test_reprNszSliceTest.test_reprcCsL|tttd|ttdWdn1s>0YdS)N)r)r hashr__hash__r!r r r test_hashQs zSliceTest.test_hashcs6tdddtdddtddd}||||d|d|dGdddtGfd d d t}t|t|||fd d td|td|||fd d tdd|tdd|||fdd dS)Nrr&r'r()rr&r'c@s eZdZdS)zSliceTest.test_cmp..ExcNr"r#r$r r r r Excasr4cseZdZfddZdS)z"SliceTest.test_cmp..BadCmpcsdSrr )rotherr4r r __eq__esz)SliceTest.test_cmp..BadCmp.__eq__N)r"r#r$r7r r6r r BadCmpdsr8cskSrr r s1s2r r kz$SliceTest.test_cmp..cskSrr r r9r r r<pr=cskSrr r r9r r r<ur=)rr+assertNotEqual Exceptionobjectr))rZs3r8r )r4r:r;r test_cmpWs,               zSliceTest.test_cmpcCstd}||jd||jd||jdtdd}||jd||jd||jdtddd}||jd||jd||jdGddd}|}t|}||j|udS)Nrr&r'c@s eZdZdS)z(SliceTest.test_members..AnyClassNr3r r r r AnyClasssrB)rr+rrrZ assertTrue)rsrBobjr r r test_membersws   zSliceTest.test_memberscCsz||}Wnty$d}Yn0zt||}WntyJd}Yn0||||dkr|jdkrt||}t||}|||dS)NZ valueerrorr)indicesrrr+rrange)rrractualZexpectedr r r check_indicess      zSliceTest.check_indicesc Cs|tddd|tddddd|tddddd|tddddd|tddd dd |td dd dd |tdd dd|tdddd|tdddd|tddddd|tddddd|tddddd|tdddd|tdddd|tdddd|tddddd|tddddd|tddddd|tdddtdd|tddddtdddd|tddddd|ttdddtjddgddd ddddddd d!d"ddg }ddd d!d"ddg}tj|d d#D]&}t|}|D]}| ||qq| tdddd$| t tddWdn1s0Y| t "tdddd%Wdn1s@0Y| t "td&ddd%Wdn1s~0Y| t "tdd'dd%Wdn1s0Y| t "tddd(d%Wdn1s0Y| t "tdddd)Wdn1s80Y|tdddd%d*|tt dddd%d*|tdt ddd%d*|tddt dd%d*|tdddt d%d*dS)+N )rrJrr&)rrJr&r)rrJr&r) rr)rKrrLr')r'rrLi)rrri)rrri)rKrrirK)rrKr )rKrNr)rKrKridriii5i@)repeatr.gg$@g?g@)rr.r)r+rrFlistrGsysmaxsize itertoolsproductrIr)rr r)rZvalsZlengthsZ slice_argsrCrr r r test_indicessh && . 2 2 2 2 2zSliceTest.test_indicescsFgGfdddt}|}d|dd<|tdddfgdS)NcseZdZfddZdS)z3SliceTest.test_setslice_without_getslice..Xcs||fdSr)append)riktmpr r __setitem__sz?SliceTest.test_setslice_without_getslice..X.__setitem__N)r"r#r$r_r r]r r Xsr`*rr&)r@r+r)rr`xr r]r test_setslice_without_getslices  z(SliceTest.test_setslice_without_getslicecCs`tddd}dD]J}tt||}|||||d|d|t|t|qdS)NrJr')rrr&)rrrr+rFr>id)rrCprotocoltr r r test_pickles   zSliceTest.test_picklecCsDGddd}|}t||_t|}d}t||dS)Nc@s eZdZdS)z#SliceTest.test_cycle..myobjNr3r r r r myobjr=rj)rrCweakrefrefr gc_collectZ assertIsNone)rrjowr r r test_cycles  zSliceTest.test_cycleN) r"r#r$r*r-r1rArErIrYrcrirpr r r r r%Hs E r%__main__)rWrrUZunittestrkpicklerrtestrr rr@rZTestCaser%r"mainr r r r s  &7