a 4dg6@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@s,eZdZddZddZddZddZd S) RangecCs||_||_d|_dSN)startstop last_insert)selfrr r ,/usr/local/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__rrrrr r r r r src@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)Nrr"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 r3rr*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#r5r6rr(r%r$r1r r2)r r3rr*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?r7sortr#r%len assertTruer$)r rir*r+ipr rBr 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&r7minrGrHr#r%r$r(max)r r)r*r+r,lohirJr 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<rOrPr)r!rSr>r>r>rTrUr:)r(r#r%r$rr1r2insort)r r*r r r test_keyword_argsszTestBisect.test_keyword_argsN)r>) rrrr'r-r4r8r=rKrQrRrXr r r r rsS  rc@seZdZeZdS)TestBisectPythonNrrr py_bisectr#r r r r rYsrYc@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) rEralistrr7r#r1r2r(sorted)r rraZinsortedrIdigitfr r r test_vsBuiltinSorts    zTestInsort.test_vsBuiltinSortcCs||jj|jjdSr)r(r#rWr2rr r r rRsz!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")rcr#r1r2r(r*)r riZlstr r r test_listDeriveds zTestInsort.test_listDerivedN)r`)rrrrgrRrjr r r r r_s r_c@seZdZeZdS)TestInsortPythonNrZr r r r rksrkc@seZdZeZdS) TestInsortCNr]r r r r rlsrlc@seZdZddZdS)LenOnlycCsdSNr!r rr r r rszLenOnly.__len__N)rrrrr r r r rmsrmc@seZdZddZdS)GetOnlycCsdSrnr )r Zndxr r r rszGetOnly.__getitem__N)rrrrr r r r rosroc@s(eZdZddZeZeZeZeZeZdS)CmpErrcCstdSr)ZeroDivisionError)r otherr r r __lt__sz CmpErr.__lt__N) rrrrs__gt____le____ge____eq____ne__r r r r rps rpc@s4eZdZddZddZddZddZd d Zd S) TestErrorHandlingcCs6|jj|jj|jj|jjfD]}|t|ddqdSrnr#r%r$r1r2r/ TypeErrorr rfr r r test_non_sequence s  z#TestErrorHandling.test_non_sequencecCs8|jj|jj|jj|jjfD]}|t|tdqdSrn)r#r%r$r1r2r/r{rmr|r r r test_len_onlys  zTestErrorHandling.test_len_onlycCs8|jj|jj|jj|jjfD]}|t|tdqdSrn)r#r%r$r1r2r/r{ror|r r r test_get_onlys  zTestErrorHandling.test_get_onlycCsFtttg}|jj|jj|jj|jjfD]}|t||dq,dSrn)rpr#r%r$r1r2r/rq)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)TestErrorHandlingPythonNrZr r r r r$src@seZdZeZdS)TestErrorHandlingCNr]r r r r r'src@seZdZddZddZdS)TestDocExamplecs<gddffdd fdddD}|gddS) N)<FPZZFDCBAcsj||}||Sr)r#r)scoreZ breakpointsZgradesrIrr r grade.sz)TestDocExample.test_grades..gradecsg|] }|qSr r )r@r)rr r rC2rDz.TestDocExample.test_grades..)!cMrYrr9)FACrBrr)r()r resultr )rr r test_grades-szTestDocExample.test_gradescCsgd}|jddddd|D}|jj}||||dd||||d d ||||d d ||||d ddS)N)Zredr"ZbluerZyellowrLZblackrcSs|dS)Nrr )rr r r 7rDz,TestDocExample.test_colors..)keycSsg|] }|dqS)rr )r@rr r r rC8rDz.TestDocExample.test_colors..rrrrr"rrLr)rFr#r%r()r r*keysr%r r r test_colors5szTestDocExample.test_colorsN)rrrrrr r r r r,src@seZdZeZdS)TestDocExamplePythonNrZr r r r r?src@seZdZeZdS)TestDocExampleCNr]r r r r rBsr__main__)r5Zunittesttestr collectionsrZimport_fresh_moduler[r^objectrrZTestCaserYr\r_rkrlrmrorpryrrrrrrmainr r r r s0  ,