a ze6@spddlZddlZddlmZddlmZejddgdZejddgdZGdd d e Z Gd d d Z Gd d d e ej Z Gddde ej ZGdddZGdddeej ZGdddeej ZGdddZGdddZGdddZGdddZGdddeej ZGd d!d!eej ZGd"d#d#ZGd$d%d%eej ZGd&d'd'eej Zed(krledS))N)support)UserListbisect_bisect)Zblocked)Zfreshc@s0eZdZdZddZddZddZdd Zd S) Rangez:A trivial range()-like object that has an insert() method.cCs||_||_d|_dSN)startstop last_insert)selfrr r D/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_bisect.py__init__ szRange.__init__cCs |j|jSr)r rr r r r __len__sz Range.__len__cCs6|j|j}|dkr||7}||kr,t||j|S)Nr)r r IndexError)r idxnr r r __getitem__s  zRange.__getitem__cCs||f|_dSr)r )r ritemr r r insertsz Range.insertN)__name__ __module__ __qualname____doc__rrrrr r r r r s rc@sVeZdZddZddZddZddZd d Zdd d ZddZ ddZ ddZ dS) TestBisectcQCsr|jjgddf|jjdgddf|jjdgddf|jjdgddf|jjddgddf|jjddgddf|jjddgddf|jjgdddf|jjgdddf|jjgdddf|jjgdddf|jjgdddf|jjgdddf|jjddgddf|jjddgddf|jjddgddf|jjddgddf|jjddgddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd d df|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd d df|jjgd dd f|jjgd dd f|jjgd ddf|jjgd ddf|jjgddf|jjdgddf|jjdgddf|jjdgddf|jjddgddf|jjddgddf|jjddgddf|jjgdddf|jjgdddf|jjgdddf|jjgdddf|jjgdddf|jjgdddf|jjddgddf|jjddgddf|jjddgddf|jjddgddf|jjddgddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd d df|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd ddf|jjgd d df|jjgd ddf|jjgd dd f|jjgd dd f|jjgd ddfgN|_dS)Nr)rrr)rrrrg?)rrrrrrrg@) rrrrrrrrrrg @ )module bisect_right bisect_leftprecomputedCasesrr r r setUp szTestBisect.setUpcCs@|jD]4\}}}}|||||||t|||qdSr)r' assertEqualr)r funcdataelemexpectedr r r test_precomputedsszTestBisect.test_precomputedcCsr|j}|t|jgdddd|t|jgdddd|t|jgdddd|t|jgdddddS)Nr r#r)r$ assertRaises ValueErrorr&r% insort_left insort_right)r modr r r test_negative_loxs zTestBisect.test_negative_locCs|j}tj}t|d}||||d|d||||d|d||||d|d||d||||d|d||ddS)Nrrrr")r$sysmaxsizeranger)r&r%)r r4rr+r r r test_large_ranges $zTestBisect.test_large_rangecCs|j}tj}td|d}||||d|d||||d|d||||d|d||d||||d|d||d|d}||||d|d||j||f|d}| |||d|d||j|d|fdS) Nrrrrr"d2) r$r6r7rr)r&r%r2r r3)r r4rr+xr r r test_large_pyranges$$zTestBisect.test_large_pyrangecsddlmtD]}fddt|D}|dd}|j||}|t|krr||||k|dkr|||d|k|j||}|t|kr||||k|dkr|||d|kqdS)Nr) randrangecsg|]}ddqS)rrr ).0jrr@r r z*TestBisect.test_random..r/r) randomr@r8sortr$r&len assertTruer%)r rir+r,ipr rCr test_randoms    zTestBisect.test_randomc Cs>|jD]0\}}}}tdD]}tt||}tddD]}tt||}|||||}|||kop|kn||jjur||kr||||k||jjur||kr|||d|k||jjur||kr||||k||jjur||kr|||d|k||t |t||q:qqdS)Nrrr) r'r8minrHrIr$r&r%r)max)r r*r+r,r-lohirKr r r test_optionalSlicings zTestBisect.test_optionalSlicingcCs||jj|jjdSr)r)r$rr%rr r r test_backcompatibilitysz!TestBisect.test_backcompatibilitycCsgd}||jj|ddddd||jj|ddddd||jj|ddddd|jj|dddd|jj|dddd|jj|dddd||gddS)N)r"(r;r?rr)ar=rPrQr)r"rTr?r?r?rUrVr;)r)r$r&r%rr2r3insort)r r+r r r test_keyword_argsszTestBisect.test_keyword_argsN)r?) rrrr(r.r5r9r>rLrRrSrYr r r r rsS  rc@seZdZeZdS)TestBisectPythonNrrr py_bisectr$r r r r rZsrZc@seZdZeZdS) TestBisectCNrrrc_bisectr$r r r r r]sr]c@s&eZdZd ddZddZddZdS) TestInsortcCslddlm}ttfD]N}t|D]0}|d}|dvrB|jj}n|jj}|||q$|t ||qdS)Nr)choice 0123456789Z02468) rFrblistrr8r$r2r3r)sorted)r rrbZinsortedrJZdigitfr r r test_vsBuiltinSorts    zTestInsort.test_vsBuiltinSortcCs||jj|jjdSr)r)r$rXr3rr r r rSsz!TestInsort.test_backcompatibilitycCsHGdddt}|}|j|d|j|d|ddg|jdS)Nc@seZdZgZddZdS)z)TestInsort.test_listDerived..ListcSs|j||dSr)r+r)r indexrr r r rsz0TestInsort.test_listDerived..List.insertN)rrrr+rr r r r Listsrir"r#)rdr$r2r3r)r+)r riZlstr r r test_listDeriveds zTestInsort.test_listDerivedN)ra)rrrrgrSrjr r r r r`s r`c@seZdZeZdS)TestInsortPythonNr[r r r r rksrkc@seZdZeZdS) TestInsortCNr^r r r r rlsrlc@seZdZdZddZdS)LenOnlyz:Dummy sequence class defining __len__ but not __getitem__.cCsdSNr"r rr r r rszLenOnly.__len__N)rrrrrr r r r rmsrmc@seZdZdZddZdS)GetOnlyz:Dummy sequence class defining __getitem__ but not __len__.cCsdSrnr )r Zndxr r r rszGetOnly.__getitem__N)rrrrrr r r r rosroc@s,eZdZdZddZeZeZeZeZeZ dS)CmpErrz;Dummy element that always raises an error during comparisoncCstdSr)ZeroDivisionError)r otherr r r __lt__sz CmpErr.__lt__N) rrrrrs__gt____le____ge____eq____ne__r r r r rpsrpc@s4eZdZddZddZddZddZd d Zd S) TestErrorHandlingcCs6|jj|jj|jj|jjfD]}|t|ddqdSrnr$r&r%r2r3r0 TypeErrorr rfr r r test_non_sequence s  z#TestErrorHandling.test_non_sequencecCs8|jj|jj|jj|jjfD]}|t|tdqdSrn)r$r&r%r2r3r0r{rmr|r r r test_len_onlys  zTestErrorHandling.test_len_onlycCs8|jj|jj|jj|jjfD]}|t|tdqdSrn)r$r&r%r2r3r0r{ror|r r r test_get_onlys  zTestErrorHandling.test_get_onlycCsFtttg}|jj|jj|jj|jjfD]}|t||dq,dSrn)rpr$r&r%r2r3r0rq)r seqrfr r r test_cmp_errs   zTestErrorHandling.test_cmp_errcCs4|jj|jj|jj|jjfD]}|t|dqdSrnrzr|r r r test_arg_parsings  z"TestErrorHandling.test_arg_parsingN)rrrr}r~rrrr r r r ry s ryc@seZdZeZdS)TestErrorHandlingPythonNr[r r r r r$src@seZdZeZdS)TestErrorHandlingCNr^r r r r r'src@seZdZddZddZdS)TestDocExamplecs<gddffdd fdddD}|gddS) N)<FPZZFDCBAcsj||}||Sr)r$r)scoreZ breakpointsZgradesrJrr r grade.sz)TestDocExample.test_grades..gradecsg|] }|qSr r )rAr)rr r rD2rEz.TestDocExample.test_grades..)!cMrYrr:)FACrBrr)r))r resultr )rr r test_grades-szTestDocExample.test_gradescCsgd}|jddddd|D}|jj}||||dd||||d d ||||d d ||||d ddS)N)Zredr#ZbluerZyellowrMZblackrcSs|dS)Nrr )rr r r 7rEz,TestDocExample.test_colors..)keycSsg|] }|dqS)rr )rArr r r rD8rEz.TestDocExample.test_colors..rrrrr#rrMr)rGr$r&r))r r+keysr&r r r test_colors5szTestDocExample.test_colorsN)rrrrrr r r r r,src@seZdZeZdS)TestDocExamplePythonNr[r r r r r?src@seZdZeZdS)TestDocExampleCNr^r r r r rBsr__main__)r6Zunittesttestr collectionsrZimport_fresh_moduler\r_objectrrZTestCaserZr]r`rkrlrmrorpryrrrrrrmainr r r r s0  ,