mò .á¸Ec@sdkZdkZdkZdkZdkZdkZdkZdkZdkZdk Z dk l Z dk l Z dklZdklZdklZdklZdklZd„Zd „Zd ZeƒZd eifd „ƒYZd „Zd„Ze djo eƒndS(N(s Application(smanage_addFolder(smanage_addFile(s makerequest(s rfc1123_date(sMessage(s MultiFilecCs<dk}dkl}|ddd>ƒ}|i|ƒiƒS(N(s DemoStoragetquotaii(tZODBtZODB.DemoStoraget DemoStoragetstDBtopen(RRR((t3/data/zmath/zope/lib/python/OFS/tests/testRanges.pytmakeConnections  cCsPdd>dd}tiƒ}|ititid„}t |t |ƒƒ|S(Niiii90cCs|||ƒƒdS(N(taddtctl(txR R R ((Rt addLetter)s( tsizet cStringIOtStringIOtfiletwritetstringtletterstrandomtchoiceR tfiltertrange(R RR((Rt createBigFile"s  tRangesTestSuite_testFoldertTestRequestRangecBsItZd„Zd„Zd„Zd„Zdd„Zd„Zdd„Z dd „Z de i d ƒd „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d „Z"d!„Z#d"„Z$d#„Z%RS($NcCstiƒ|_tƒ|_y×|iiƒ}tƒ}||d<||_t |id|iƒ|_ y|i i t ƒWntj onXt|i t ƒt|i t ƒ}ti}t|dd|ddƒ|i|_||_tiƒWn|iiƒ‚nXdS(Nt ApplicationtstdoutRt content_types text/plain(RRtselft responseOutRt connectiontroottrRtat makerequesttappt _delObjecttTESTFOLDER_NAMEtAttributeErrortmanage_addFoldertgetattrtfolderRRtdatatmanage_addFileRt transactiontcommittclose(RR$R-R#R,((RtsetUp5s.         cCsdy|iitƒWntj onXtiƒ|iiiƒ|i i ƒd|_|`dS(N( RR&R'R(R)R/tabortt_p_jartsyncR!R1tNone(R((RttearDownRs   cCs#|iitƒtiƒ|_dS(N(RRt manage_uploadtBIGFILEtgetvalueR-(R((Rt uploadBigFile\scCsP|ii||ƒ}|iiƒ}|ot i |ddƒd}n||S(Ns i( RRt index_htmltrequesttresponsetrvR R:tbodyRtsplit(RR=R>R@R?((RtdoGET`s icCst|ii|ƒS(N(t rfc1123_dateRRt_p_mtimetoffset(RRE((RtcreateLastModifiedDatemscCs×|ii}|i}d||id<|i||ƒ}|i |i ƒdjd|i ƒƒdt |i ƒ}|idƒ}|i|djdƒ|i ||jd| | fƒ|i |d jd | ƒdS( Nsbytes=%st HTTP_RANGEi sExpected a 416 status, got %ss bytes */%ds content-ranges No Content-Range header was set!s<Received incorrect Content-Range header. Expected %s, got %stsindex_html returned %s(RR&tREQUESTtreqtRESPONSEtrspRtenvironRBR@t failUnlesst getStatustlenR-texpect_content_ranget getHeadert content_rangetfailIfR6(RRR@RJRQRSRL((RtexpectUnsatisfiableps  cCs||ii}|i}||id<|dj o||id}|d}|d}d||df}|i|||ƒdS(Niiiiès%d-%d(RR;tjoinRZR[RR](RRZR[RƒR((Rt testBigFile!s    cCs^|iƒt|iƒ}|d|d}}d||f}|i||t|iƒƒdS(Nids%d-%d( RR;RPR-R RZR[RR](RR[R RZR((RttestBigFileEndOverflow+s  cCs|idddgƒdS(Ns 21-25,10-20iii (ii(i i(RRx(R((RttestAdjacentRanges3scCs|idddgƒdS(Ns 3-7,10-15iii i(ii(i i(RRx(R((RttestMultipleRanges6scCs |iddd gddƒdS( Ns 3-7,10-15iii iRai(ii(i i(RRx(R((RttestMultipleRangesDraft9scCsC|iƒ|idddt|iƒdt|iƒfgƒdS( Ns3-700,10-15,-10000ii½i ii'(ii½(i i(RR;RxRPR-(R((RttestMultipleRangesBigFile<s  cCsC|iƒ|iddt|iƒdt|iƒfdgƒdS( Ns10-15,-10000,70000-80000i ii'ipi8(i i(ipi8(RR;RxRPR-(R((Rt#testMultipleRangesBigFileOutOfOrderAs  cCsn|iƒt|iƒ}|d|d}}|id||fdt|iƒdt|iƒfgƒdS(Nids 3-700,%s-%sii½(ii½(RR;RPR-R RZR[Rx(RRZR[R ((Rt$testMultipleRangesBigFileEndOverflowGs  cCs|idddddƒdS(Ns10-25i iRXtgarbage(RR](R((RttestIllegalIfRangeOscCs#|idddd|iƒƒdS(Ns10-25i iRX(RR]RF(R((RttestEqualIfRangeDateTscCs#|idd|iddƒƒdS(Ns 21-25,10-20RXREiœÿÿÿ(RRYRF(R((RttestIsModifiedIfRangeDateXs cCs)|idddd|iddƒƒdS(Ns10-25i iRXREid(RR]RF(R((RttestIsNotModifiedIfRangeDate\scCs&|idddd|iiƒƒdS(Ns10-25i iRX(RR]Rt http__etag(R((RttestEqualIfRangeEtag`scCs$|idd|iiƒdƒdS(Ns10-25RXtbar(RRYRR‘(R((RttestNotEqualIfRangeEtagds (&t__name__t __module__R2R7R;RBRFRUR6RYR]tretcompileRxRyRzR{R|R}R~RR€RR‚R„R…R†R‡RˆR‰RŠR‹RRŽRRR’R”(((RR3sB      L                      cCs&tiƒ}|ititƒƒ|S(N(tunittestt TestSuitetsuitetaddTestt makeSuiteR(R›((Rt test_suiteis cCstiƒitƒƒdS(N(R™tTextTestRunnertrunRž(((Rtmainnst__main__(!tostsysR™RRRttimeR—RR/tOFS.ApplicationRt OFS.FolderR*t OFS.ImageR.tTesting.makerequestR%t webdav.commonRCt mimetoolsRet multifileRgRRR(R9tTestCaseRRžR¡R•(RR™RRRCRR*RR—RgR.R¡RR¤RR(R9R/RR%RžR¥ReR£((Rt? s(-            ÿ7