ó n®¸Qc @s©dZddlZddlZddlZddlZddlmZddlZddlmZm Z m Z m Z m Z d„Z e Zd„Zd„Zdd d d d d ddgZdd d d d dddd g Zdejfd„ƒYZdejfd„ƒYZdefd„ƒYZdefd„ƒYZdejfd„ƒYZdefd„ƒYZdefd„ƒYZd„Zed kr¥ejd!d"ƒndS(#sF TestCases for python DB duplicate and Btree key comparison function. iÿÿÿÿN(tStringIO(tdbtdbshelvet test_supporttget_new_environment_pathtget_new_database_pathcCs$||krdS||kr dSdS(Niiÿÿÿÿi((tatb((s-/sys/lib/python2.7/bsddb/test/test_compare.pytcmps   cCst|jƒ|jƒƒS(N(Rtlower(tlefttright((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt lowercase_cmpscCs|d„}|S(NcSs|||ƒ S(N((R R tdelegate((s-/sys/lib/python2.7/bsddb/test/test_compare.pytreverses((RR((s-/sys/lib/python2.7/bsddb/test/test_compare.pytmake_reverse_comparators ttCCCPRtaaaRtctccccetccccftCCtComparatorTestscBs,eZd„Zd„Zd„Zd„ZRS(c CsÏ|}ddl}|jdkr5|jd|ƒnvg}xg|D]_}xVt|ƒD];\}}|||ƒ} | dkrU|j||ƒPqUqUW|j|ƒqBW|}|j||d|||fƒdS(NiÿÿÿÿiiRis'comparator `%s' is not right: %s vs. %s(ii(tsyst version_infotsortt enumeratetinserttappendt assertEqual( tselft comparatort expected_datatdataRtdata2titjtktr((s-/sys/lib/python2.7/bsddb/test/test_compare.pytcomparator_test_helper#s     cCs|jttƒdS(N(R(t lexical_cmpt_expected_lexical_test_data(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_lexical_comparator8scCs+t}|jƒ|jttƒ|ƒdS(N(R*RR(RR)(Rtrev((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_reverse_lexical_comparator:s cCs|jttƒdS(N(R(R t_expected_lowercase_test_data(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_lowercase_comparator?s (t__name__t __module__R(R+R-R/(((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR"s   tAbstractBtreeKeyCompareTestCasecBs¤eZdZdZejdks?ejdkrNejdkrNdd„Znd„Zd„Z d„Z d„Z d „Z d „Z d „Zdd „Zd „ZRS(iiiicCs|j||kd|ƒS(Ntmsg(t assertTrue(RRRR3((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt assertLessIscCsc|jjd|_tƒ|_tjƒ}|j|jtjtj Btj Btj Bƒ||_ dS(Ns.db( t __class__R0tfilenameRthomeDirRtDBEnvtopent DB_CREATEt DB_INIT_MPOOLt DB_INIT_LOCKt DB_THREADtenv(RR?((s-/sys/lib/python2.7/bsddb/test/test_compare.pytsetUpLs    cCsF|jƒ|jdk r2|jjƒd|_ntj|jƒdS(N(tcloseDBR?tNonetcloseRtrmtreeR8(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttearDownUs    cCs>d}x1|D])}|jj|t|ƒƒ|d}q WdS(Nii(Rtputtstr(RR"R$titem((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt addDataToDB\s cCsHtj|jƒ|_|j|ƒ|jj|jdtjtjƒdS(Nttest(RtDBR?tsetupDBR:R7tDB_BTREER;(Rtkey_comparator((s-/sys/lib/python2.7/bsddb/test/test_compare.pytcreateDBbs cCs|jj|ƒdS(N(Rtset_bt_compare(RRN((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRLgscCs,|jdk r(|jjƒd|_ndS(N(RRBRC(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRAjs cCsdS(N((R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt startTestoscCs*|dk r|j|ƒn|jƒdS(N(RBt check_resultsRA(Rtexpected((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt finishTestrs cCsÀ|jjƒ}zŸd}|jƒ}xm|r“|\}}|j|t|ƒdƒ|j|||d||||fƒ|d}|jƒ}q'W|j|t|ƒdƒWd|jƒXdS(Nis#to many values returned from cursors&expected value `%s' at %d but got `%s'is&not enough values returned from cursor(RtcursortfirstR5tlenRtnextRC(RRStcurstindextrectkeytignore((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRRws      N(ii(ii(ii(R0R1RBR?RRRR5R@RERIRORLRARQRTRR(((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR2Cs       tBtreeKeyCompareTestCasecBs,eZd„Zd„Zd„Zd„ZRS(cCs5|jƒ|j|ƒ|j|ƒ|j|ƒdS(N(RQRORIRT(RR R"((s-/sys/lib/python2.7/bsddb/test/test_compare.pytrunCompareTest‹s   cCs|jttƒdS(N(R_R)R*(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_lexical_ordering‘scCs+t}|jƒ|jttƒ|ƒdS(N(R*RR_RR)(Rtexpected_rev_data((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_reverse_lexical_ordering”s cCsJ|jƒd„}|j|ƒ|jdddgƒ|jdgƒdS(NcSsdS(Ni((tlR'((s-/sys/lib/python2.7/bsddb/test/test_compare.pytsocialist_comparatorœsRRtd(RQRORIRT(RRd((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_compare_function_uselessšs    (R0R1R_R`RbRf(((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR^Šs   tBtreeExceptionsTestCasecBsbeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( cCsD|jƒ|jt|jdƒ|jt|jdƒ|jƒdS(Ntabc(RQt assertRaisest TypeErrorRORBRT(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_raises_non_callable¦s cCs%|jƒ|jtƒ|jƒdS(N(RQROR)RT(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt!test_set_bt_compare_with_function¬s  cCsdS(N((Rtresults((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRR±scCs7|jƒd„}|jt|j|ƒ|jƒdS(NcSsdS(Ni((RcR'((s-/sys/lib/python2.7/bsddb/test/test_compare.pytbad_comparator¶s(RQRiRjRORT(RRn((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_compare_function_incorrect´s  cCs‹tj}tƒt_z |ƒWdtj}|t_|jƒ}|j|ƒsd|jd|ƒnXtjdkr‡dt_t_ ndS(sÛ Call method() while capturing sys.stderr output internally and call self.fail() if successRe.search() does not match the stderr output. This is used to test for uncatchable exceptions. Nsunexpected stderr output: ii(ii( RtstderrRtgetvaluetsearchtfailRRBt exc_tracebacktlast_traceback(Rtmethodt successRetstdErrttempterrorOut((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt verifyStderr¼s      cCsD|jƒd„}|j|ƒ|jdddgƒ|jƒdS(NcSs||krdStd‚dS(Nis!i'm a naughty comparison function(t RuntimeError(RcR'((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRnÑs RRR(RQRORIRT(RRn((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt _test_compare_function_exceptionÏs    cCs-|j|jtjdtjtjBƒƒdS(Ns(^RuntimeError:.* naughty.*){2}(R{R}tretcompiletMtS(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_compare_function_exceptionÛscCsD|jƒd„}|j|ƒ|jdddgƒ|jƒdS(NcSs||krdS|S(Ni((RcR'((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRnãs RRR(RQRORIRT(RRn((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt!_test_compare_function_bad_returnás    cCs-|j|jtjdtjtjBƒƒdS(Ns"(^TypeError:.* return an int.*){2}(R{RƒR~RR€R(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt test_compare_function_bad_returníscCs=d„}|jƒ|j|ƒ|jt|jj|ƒdS(NcSsdS(Ni((RR((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt my_compareös(RQRORiR|RRP(RR…((s-/sys/lib/python2.7/bsddb/test/test_compare.pyttest_cannot_assign_twiceôs   ( R0R1RkRlRRRoR{R}R‚RƒR„R†(((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRg¥s       t AbstractDuplicateCompareTestCasecBs¤eZdZdZejdks?ejdkrNejdkrNdd„Znd„Zd„Z d„Z d„Z d „Z d „Z d „Zdd „Zd „ZRS(iiiicCs|j||kd|ƒS(NR3(R4(RRRR3((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR5scCsc|jjd|_tƒ|_tjƒ}|j|jtjtj Btj Btj Bƒ||_ dS(Ns.db( R6R0R7RR8RR9R:R;R<R=R>R?(RR?((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR@s    cCsF|jƒ|jdk r2|jjƒd|_ntj|jƒdS(N(RAR?RBRCRRDR8(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyREs    cCs(x!|D]}|jjd|ƒqWdS(NR\(RRF(RR"RH((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRIs cCsHtj|jƒ|_|j|ƒ|jj|jdtjtjƒdS(NRJ(RRKR?RLR:R7RMR;(Rtdup_comparator((s-/sys/lib/python2.7/bsddb/test/test_compare.pyROs cCs'|jjtjƒ|jj|ƒdS(N(Rt set_flagst DB_DUPSORTtset_dup_compare(RRˆ((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRLscCs,|jdk r(|jjƒd|_ndS(N(RRBRC(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRA#s cCsdS(N((R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRQ(scCs*|dk r|j|ƒn|jƒdS(N(RBRRRA(RRS((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRT+s cCsÀ|jjƒ}zŸd}|jƒ}xm|r“|\}}|j|t|ƒdƒ|j|||d||||fƒ|d}|jƒ}q'W|j|t|ƒdƒWd|jƒXdS(Nis#to many values returned from cursors&expected value `%s' at %d but got `%s'is&not enough values returned from cursor(RRURVR5RWRRXRC(RRSRYRZR[R]R"((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRR0s      N(ii(ii(ii(R0R1RBR?RRRR5R@RERIRORLRARQRTRR(((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR‡ýs       tDuplicateCompareTestCasecBs#eZd„Zd„Zd„ZRS(cCs5|jƒ|j|ƒ|j|ƒ|j|ƒdS(N(RQRORIRT(RR R"((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR_Ds   cCs|jttƒdS(N(R_R)R*(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR`JscCs+t}|jƒ|jttƒ|ƒdS(N(R*RR_RR)(RRa((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRbMs (R0R1R_R`Rb(((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRŒCs  tDuplicateExceptionsTestCasecBskeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z RS( cCsD|jƒ|jt|jdƒ|jt|jdƒ|jƒdS(NRh(RQRiRjRORBRT(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRkTs cCs%|jƒ|jtƒ|jƒdS(N(RQROR)RT(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt"test_set_dup_compare_with_functionZs  cCsdS(N((RRm((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRR_scCs7|jƒd„}|jt|j|ƒ|jƒdS(NcSsdS(Ni((RcR'((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRnds(RQRiRjRORT(RRn((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRobs  cCsP|jƒd„}|j|ƒ|jtj|jdddgƒ|jƒdS(NcSsdS(Ni((RcR'((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRdlsRRRe(RQRORiRtDBKeyExistErrorRIRT(RRd((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRfjs    "cCs‹tj}tƒt_z |ƒWdtj}|t_|jƒ}|j|ƒsd|jd|ƒnXtjdkr‡dt_t_ ndS(sÛ Call method() while capturing sys.stderr output internally and call self.fail() if successRe.search() does not match the stderr output. This is used to test for uncatchable exceptions. Nsunexpected stderr output: ii(ii( RRpRRqRrRsRRBRtRu(RRvRwRxRyRz((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR{ss      cCsD|jƒd„}|j|ƒ|jdddgƒ|jƒdS(NcSs||krdStd‚dS(Nis!i'm a naughty comparison function(R|(RcR'((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRnˆs RRR(RQRORIRT(RRn((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR}†s    cCs-|j|jtjdtjtjBƒƒdS(Ns(^RuntimeError:.* naughty.*){2}(R{R}R~RR€R(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR‚’scCsD|jƒd„}|j|ƒ|jdddgƒ|jƒdS(NcSs||krdS|S(Ni((RcR'((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRnšs RRR(RQRORIRT(RRn((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRƒ˜s    cCs-|j|jtjdtjtjBƒƒdS(Ns"(^TypeError:.* return an int.*){2}(R{RƒR~RR€R(R((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR„¤scCs=d„}|jƒ|j|ƒ|jt|jj|ƒdS(NcSsdS(Ni((RR((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR…­s(RQRORiR|RR‹(RR…((s-/sys/lib/python2.7/bsddb/test/test_compare.pyR†«s   ( R0R1RkRŽRRRoRfR{R}R‚RƒR„R†(((s-/sys/lib/python2.7/bsddb/test/test_compare.pyRSs       cCs~tjƒ}|jtjtƒƒ|jtjtƒƒ|jtjtƒƒ|jtjtƒƒ|jtjtƒƒ|S(N( tunittestt TestSuitetaddTestt makeSuiteRRgR^RRŒ(tres((s-/sys/lib/python2.7/bsddb/test/test_compare.pyt test_suite´s t__main__t defaultTesttsuite(t__doc__RtosR~ttest_allt cStringIORRRRRRRRR)R RR*R.tTestCaseRR2R^RgR‡RŒRR•R0tmain(((s-/sys/lib/python2.7/bsddb/test/test_compare.pyts*$  (   !!GXFa