m 9Ec@s%dkZdklZlZlZlZdklZlZl Z l Z dk l Z l Z lZlZdklZlZlZlZdklZlZlZlZdklZlZlZlZdkl Z dk!Z!dk"l#Z#d k$l%Z%d efd YZ&d e&fd YZ'de&fdYZ(de(fdYZ)de'fdYZ*defdYZ+de+fdYZ,de+fdYZ-defdYZ.defdYZ/defdYZ0d efd!YZ1d"e'fd#YZ2d$e'fd%YZ3d&e'fd'YZ4d(e'fd)YZ5d*e'fd+YZ6d,e(fd-YZ7d.e(fd/YZ8d0e(fd1YZ9d2e(fd3YZ:d4e(fd5YZ;d6e)fd7YZ<d8e)fd9YZ=d:e)fd;YZ>d<e)fd=YZ?d>e)fd?YZ@d@e*fdAYZAdBe*fdCYZBdDe*fdEYZCdFe*fdGYZDdHe*fdIYZEdJfdKYZFdLefdMYZGdNZHdOZIdPZJdQZKdRZLeMdSjo eLndS(TN(sTestCases TestSuitesTextTestRunners makeSuite(sOOBTreesOOBucketsOOSets OOTreeSet(sIOBTreesIOBucketsIOSets IOTreeSet(sIIBTreesIIBucketsIISets IITreeSet(sIFBTreesIFBucketsIFSets IFTreeSet(sOIBTreesOIBucketsOISets OITreeSet(scheck(sDB(sMappingStoragetBasecBsJtZdZeZdZdZdZdZdZ dZ RS(s6 Tests common to all types: sets, buckets, and BTrees cCs4|idj o|iind|_|`dS(N(tselftdbtNonetclosett(R((t6/data/zmath/zope/lib/python/BTrees/tests/testBTrees.pyttearDown"s cCs9|idjott|_n|iiiS(N(RRRtDBtMappingStoragetopentroot(R((Rt_getRoot(scCs|iidS(N(R t_p_jarR(RR ((Rt _closeRoot3scCsxdD]}|ii}|i||d}|i}|||R=((RttestLens   cCsld|id<|i|iid|id|ij|id|ij|id|ijdS(Niii(RRR,thas_key(R((RttestHasKeyWorkss  csx%tdD]}|||i|sii( R&R:RRtvaluesRBRRR/t IndexErrort itervaluestvalue(RRRGRBR:((RRBRttestValuesWorkss  cCsx%tdD]}||id|               L  1  8 tNormalSetTestscBstZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZRS(s Test common to all set types cCs|it|dS(N(RRgR&R'(RRR'((RRscCs&|i}|i|idddS(Nii(RRRtinsert(RR((RttestInsertReturnsValues cCs3|i}|id|i|idddS(Nii(RRRR(RR((RttestDuplicateInserts  cCsV|i}|id|i|id|id|j|id|jdS(Nii(RRRR,R@(RR((Rt testInserts   cCsq|i}td}x|D]}|i|qWx7|D]/}|i|i||i||jq:WdS(Ni'(RRRvR*R:RR,R@(RR*RR:((Rt testBigInserts  cCsU|i}td}x|D]}|i|qWx|D]}|i|q:WdS(Ni'(RRRvR*R:Rtremove(RR*RR:((RttestRemoveSucceedss  cCs|it|idS(N(RR/R0t_removenonexistent(R((RttestRemoveFailsscCs|iiddS(Ni(RRR(R((RRscCs7|i}|i|id |id|jdS(Ni(RRR,R@(RR((RttestHasKeyFailss cCs\|i}td}x|D]}|i|qWt|i|}|i |gdS(Ni( RRRvR*R:RRaRRbR(RR*RR:Rb((RttestKeyss  cCsi|i}td}x|D]}|i|qW|it|ig}|i |g|dS(Ni( RRRvR*R:RR RaRRbR(RR*RR:Rb((RRcs   cCs|i}|id|id|id|id|id|id|id|id|i|id|i|idd|i|id d|i|id|i|idd|i|id d|i|i|j|i|id|j|i|i|j|i|id|jy|i|idWn+tj o}|it |d nX|i d y|i|idWn+tj o}|it |d nX|i d dS( Niiiiii iii sno key satisfies the conditionssexpected ValueError( RRRRRYRZR,R[R\R]R^(RRR\((RR_s:          cCsh}g}x=tdD]/}tidd}|||<|i|qW|i}|i |i i ||it|i i|dS(Ni'i0i(RdR'R&RR;ReR=RfRRRLRRRgRR(RRdRRR'R=((RRhs    cCs|i}|idddg|it|iddgt|idd|it|iddgt|idd|it|idd gt|idd |it|id d gt|id d |it|iddgt|idd|i|itd |id d}|it|d|it|g|idddd }|it|d|it|gdS(Niii iiiiiii i i,ii2iRIRJ( RRRgRRRR R&R-(RRR((RRns 77777 cCs||i}xltdD]^}|i|it|dtd|d|}|i||it|||i}|it|||}|it ||xtd|d|dD]}|| }|it ||| ||}|it |||xMtd|d|dD]0}|||!}|it ||||!q<WqWqWdS(Ni ii iii(RRR&RoR RR-RRgRqR:RRtRu(RRqRRtRoRuRR:((RRx%s,        cCs|i}xgdgddgtdddfD]}|i|i||it||g}x|D]}|i |qqW|i||t |}|i |t |jg}yx|i |iqWWntj onX|i||q1WdS(NiiiiVii(RRR&RR RgRRR:R=RfRyRzR,R{R|(RRRzRR:R=((Rt testIteratorEs* (   (R"R#R$RRRRRRRRRRRcR_RhRnRxR(((RRs"           #   tExtendedSetTestscBstZdZdZRS(NcCsV|i}td}x|D]}|i|qW|it|dt|dS(Ni'(RRRvR*R:RRR-(RR*RR:((RR?^s   cCs\|i}td}x|D]}|i|qWx"|D]}|i|||q:WdS(Ni'(RRRvR*R:RR(RR*RR:((Rt testGetItemds  (R"R#R?R(((RR]s t BTreeTestscBstZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZRS(s Tests common to all BTrees cCs+|iit|iti|dS(N(RRt_checktcheckR%R(R((RRns  cCsd|idRLRaRRbR(RR9R*RbR:R>R=((RttestRandomNonOverlappingInsertss    cCsh}td}x4|D],}ti|}||i|RLRaRbR(RR9R*RbR:R>R=((RttestRandomOverlappingInsertss    cCs9td}g}x7|D]/}ti|}||i|<|i |qWg}x|D]}ti|}|ii |oY|i ||ij|i|=|i ||ii |o|i d|qqYqYWg}x2|D]*}|ii |o|i |qqW|i|g|||fdS(Nishad problems deleting %s(R&R*R9R:R;R<R=RRRftdeletedR@R,R^tbadonesR(RR9RR=R*RR:((RttestRandomDeletess.    cCstd}x*|D]"}ti|}||i|d?d@d:dAdBd>dCdDdEdFddGdHdIdJdKdLdMdNd?ddOdPd-d&ddQdRdSd<d9dTdUd dRdVdFd(dWdXdYdBdZdd[dPd\d]ddWd3d^d7d\d_d`dadbdcdddedfddgdDddhdidjdkdldmddGdndedodpdqd drdsdtdud dvdHdd`dwdRddxdydsdvd dzd!d@d{d|d}d~ddpddd'ddd;ddddCddgddddddddd"dd!ddSddddddddddkdddd8dhdd:dddtddd0dd7ddddddQddddMdd5ddddddXddtdLddddddd;deddLd8d<dddddDdddqdiddEdddddddddmddddbdQdRdddPdwd#ddOd/ddd dd dg,}ddd[dd^dGdtdd)dd:dMdhdd(dddAd*d>ddddvd{dxdDdddddddd`dd"dmddYdQd#ddd dZdcd ddbd7dFdudUddJdXdd2dd6dPddkd8ddEddIddzdCddldd,dKd ddrdSd9ddjd4dsdddHdd%dddd<dddyd0d-ddqddd=dddddod?dOd!dddBd_ddgv}x|D]}d|i|W|i |i d~qWdS(N(RRRRt permutationstonepermRpRRRRRRR(RRRRRp((Rt testDeletess      (R"R#RRRRR(((RRs ( 3  t IIBucketTestcBstZdZRS(NcCst|_dS(N(tIIBucketRR(R((RRs(R"R#R(((RR st IFBucketTestcBstZdZRS(NcCst|_dS(N(tIFBucketRR(R((RRs(R"R#R(((RR st IOBucketTestcBstZdZRS(NcCst|_dS(N(tIOBucketRR(R((RRs(R"R#R(((RR st OIBucketTestcBstZdZRS(NcCst|_dS(N(tOIBucketRR(R((RRs(R"R#R(((RRst OOBucketTestcBstZdZRS(NcCst|_dS(N(tOOBucketRR(R((RRs(R"R#R(((RRst IITreeSetTestcBstZdZRS(NcCst|_dS(N(RRR(R((RRs(R"R#R(((RRst IFTreeSetTestcBstZdZRS(NcCst|_dS(N(t IFTreeSetRR(R((RRs(R"R#R(((RRst IOTreeSetTestcBstZdZRS(NcCst|_dS(N(t IOTreeSetRR(R((RRs(R"R#R(((RRst OITreeSetTestcBstZdZRS(NcCst|_dS(N(t OITreeSetRR(R((RRs(R"R#R(((RRst OOTreeSetTestcBstZdZRS(NcCst|_dS(N(t OOTreeSetRR(R((RRs(R"R#R(((RRst IISetTestcBstZdZdZRS(NcCst|_dS(N(RRR(R((RRscCsI|iid|it|iid|it|iidddS(Niti(RRRR/RR(R((RttestNonIntKeyRaisess(R"R#RR(((RRs t IFSetTestcBstZdZRS(NcCst|_dS(N(tIFSetRR(R((RRs(R"R#R(((RRst IOSetTestcBstZdZRS(NcCst|_dS(N(RRR(R((RRs(R"R#R(((RR!st OISetTestcBstZdZRS(NcCst|_dS(N(tOISetRR(R((RRs(R"R#R(((RR"st OOSetTestcBstZdZRS(NcCst|_dS(N(tOOSetRR(R((RRs(R"R#R(((RR$st IIBTreeTestcBstZdZRS(NcCst|_dS(N(RRR(R((RRs(R"R#R(((RR&st IFBTreeTestcBstZdZRS(NcCst|_dS(N(RRR(R((RRs(R"R#R(((RR'st IOBTreeTestcBstZdZRS(NcCst|_dS(N(RRR(R((RRs(R"R#R(((RR(st OIBTreeTestcBstZdZRS(NcCst|_dS(N(RRR(R((RRs(R"R#R(((RR)st OOBTreeTestcBstZdZRS(NcCst|_dS(N(tOOBTreeRR(R((RRs(R"R#R(((RR*stDoesntLikeBeingComparedcBstZdZRS(NcCstddS(Nt incomparable(R[(Rtother((Rt__cmp__s(R"R#R/(((RR,st TestCmpErrorcBstZdZRS(NcCsct}d|dR@((RR!s     =cCstitdS(N(tTextTestRunnertrunR8(((Rtmain0st__main__(NR;tunittesttTestCaseR3RCR7tBTrees.OOBTreeR+RR%RtBTrees.IOBTreeRRRRtBTrees.IIBTreeRR RRtBTrees.IFBTreeRR R RtBTrees.OIBTreeRRR#Rt BTrees.checkRRtZODBRtZODB.MappingStorageR RR%RRRRRRRRRRR R R RRRRRRRRRR!R"R$R&R'R(R)R*R,R0R8RaRRRER"(DRR%RRRaRR R;RRRRRR0R8R RRRRR%R3R+RRRRRHR)RRRRRERRRCRRRRR RR(R"R7R&RRR R*R R RRRR!RR$R RR,RRR'RR#R((Rt?sl     b   !