| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953 |
- #!/usr/bin/python
- # -*- encoding: utf-8 -*-
- from cStringIO import StringIO
- import unittest
- import calendar
- import time
- import base64
- import os
- # Add build directory to search path
- if os.path.exists("build"):
- from distutils.util import get_platform
- import sys
- s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
- s = os.path.join(os.getcwd(), s)
- sys.path.insert(0,s)
- from dateutil.relativedelta import *
- from dateutil.parser import *
- from dateutil.easter import *
- from dateutil.rrule import *
- from dateutil.tz import *
- from dateutil import zoneinfo
- from datetime import *
- class RelativeDeltaTest(unittest.TestCase):
- now = datetime(2003, 9, 17, 20, 54, 47, 282310)
- today = date(2003, 9, 17)
- def testNextMonth(self):
- self.assertEqual(self.now+relativedelta(months=+1),
- datetime(2003, 10, 17, 20, 54, 47, 282310))
- def testNextMonthPlusOneWeek(self):
- self.assertEqual(self.now+relativedelta(months=+1, weeks=+1),
- datetime(2003, 10, 24, 20, 54, 47, 282310))
- def testNextMonthPlusOneWeek10am(self):
- self.assertEqual(self.today +
- relativedelta(months=+1, weeks=+1, hour=10),
- datetime(2003, 10, 24, 10, 0))
- def testNextMonthPlusOneWeek10amDiff(self):
- self.assertEqual(relativedelta(datetime(2003, 10, 24, 10, 0),
- self.today),
- relativedelta(months=+1, days=+7, hours=+10))
- def testOneMonthBeforeOneYear(self):
- self.assertEqual(self.now+relativedelta(years=+1, months=-1),
- datetime(2004, 8, 17, 20, 54, 47, 282310))
- def testMonthsOfDiffNumOfDays(self):
- self.assertEqual(date(2003, 1, 27)+relativedelta(months=+1),
- date(2003, 2, 27))
- self.assertEqual(date(2003, 1, 31)+relativedelta(months=+1),
- date(2003, 2, 28))
- self.assertEqual(date(2003, 1, 31)+relativedelta(months=+2),
- date(2003, 3, 31))
- def testMonthsOfDiffNumOfDaysWithYears(self):
- self.assertEqual(date(2000, 2, 28)+relativedelta(years=+1),
- date(2001, 2, 28))
- self.assertEqual(date(2000, 2, 29)+relativedelta(years=+1),
- date(2001, 2, 28))
- self.assertEqual(date(1999, 2, 28)+relativedelta(years=+1),
- date(2000, 2, 28))
- self.assertEqual(date(1999, 3, 1)+relativedelta(years=+1),
- date(2000, 3, 1))
- self.assertEqual(date(1999, 3, 1)+relativedelta(years=+1),
- date(2000, 3, 1))
- self.assertEqual(date(2001, 2, 28)+relativedelta(years=-1),
- date(2000, 2, 28))
- self.assertEqual(date(2001, 3, 1)+relativedelta(years=-1),
- date(2000, 3, 1))
- def testNextFriday(self):
- self.assertEqual(self.today+relativedelta(weekday=FR),
- date(2003, 9, 19))
- def testNextFridayInt(self):
- self.assertEqual(self.today+relativedelta(weekday=calendar.FRIDAY),
- date(2003, 9, 19))
- def testLastFridayInThisMonth(self):
- self.assertEqual(self.today+relativedelta(day=31, weekday=FR(-1)),
- date(2003, 9, 26))
- def testNextWednesdayIsToday(self):
- self.assertEqual(self.today+relativedelta(weekday=WE),
- date(2003, 9, 17))
- def testNextWenesdayNotToday(self):
- self.assertEqual(self.today+relativedelta(days=+1, weekday=WE),
- date(2003, 9, 24))
-
- def test15thISOYearWeek(self):
- self.assertEqual(date(2003, 1, 1) +
- relativedelta(day=4, weeks=+14, weekday=MO(-1)),
- date(2003, 4, 7))
- def testMillenniumAge(self):
- self.assertEqual(relativedelta(self.now, date(2001,1,1)),
- relativedelta(years=+2, months=+8, days=+16,
- hours=+20, minutes=+54, seconds=+47,
- microseconds=+282310))
- def testJohnAge(self):
- self.assertEqual(relativedelta(self.now,
- datetime(1978, 4, 5, 12, 0)),
- relativedelta(years=+25, months=+5, days=+12,
- hours=+8, minutes=+54, seconds=+47,
- microseconds=+282310))
- def testJohnAgeWithDate(self):
- self.assertEqual(relativedelta(self.today,
- datetime(1978, 4, 5, 12, 0)),
- relativedelta(years=+25, months=+5, days=+11,
- hours=+12))
- def testYearDay(self):
- self.assertEqual(date(2003, 1, 1)+relativedelta(yearday=260),
- date(2003, 9, 17))
- self.assertEqual(date(2002, 1, 1)+relativedelta(yearday=260),
- date(2002, 9, 17))
- self.assertEqual(date(2000, 1, 1)+relativedelta(yearday=260),
- date(2000, 9, 16))
- self.assertEqual(self.today+relativedelta(yearday=261),
- date(2003, 9, 18))
- def testYearDayBug(self):
- # Tests a problem reported by Adam Ryan.
- self.assertEqual(date(2010, 1, 1)+relativedelta(yearday=15),
- date(2010, 1, 15))
- def testNonLeapYearDay(self):
- self.assertEqual(date(2003, 1, 1)+relativedelta(nlyearday=260),
- date(2003, 9, 17))
- self.assertEqual(date(2002, 1, 1)+relativedelta(nlyearday=260),
- date(2002, 9, 17))
- self.assertEqual(date(2000, 1, 1)+relativedelta(nlyearday=260),
- date(2000, 9, 17))
- self.assertEqual(self.today+relativedelta(yearday=261),
- date(2003, 9, 18))
- class RRuleTest(unittest.TestCase):
- def testYearly(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0)])
- def testYearlyInterval(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- interval=2,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0),
- datetime(2001, 9, 2, 9, 0)])
- def testYearlyIntervalLarge(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- interval=100,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(2097, 9, 2, 9, 0),
- datetime(2197, 9, 2, 9, 0)])
- def testYearlyByMonth(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonth=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 2, 9, 0),
- datetime(1998, 3, 2, 9, 0),
- datetime(1999, 1, 2, 9, 0)])
- def testYearlyByMonthDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonthday=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 3, 9, 0),
- datetime(1997, 10, 1, 9, 0),
- datetime(1997, 10, 3, 9, 0)])
- def testYearlyByMonthAndMonthDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(5,7),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 5, 9, 0),
- datetime(1998, 1, 7, 9, 0),
- datetime(1998, 3, 5, 9, 0)])
- def testYearlyByWeekDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testYearlyByNWeekDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 25, 9, 0),
- datetime(1998, 1, 6, 9, 0),
- datetime(1998, 12, 31, 9, 0)])
- def testYearlyByNWeekDayLarge(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekday=(TU(3),TH(-3)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 11, 9, 0),
- datetime(1998, 1, 20, 9, 0),
- datetime(1998, 12, 17, 9, 0)])
- def testYearlyByMonthAndWeekDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 8, 9, 0)])
- def testYearlyByMonthAndNWeekDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 29, 9, 0),
- datetime(1998, 3, 3, 9, 0)])
- def testYearlyByMonthAndNWeekDayLarge(self):
- # This is interesting because the TH(-3) ends up before
- # the TU(3).
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(3),TH(-3)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 15, 9, 0),
- datetime(1998, 1, 20, 9, 0),
- datetime(1998, 3, 12, 9, 0)])
- def testYearlyByMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 2, 3, 9, 0),
- datetime(1998, 3, 3, 9, 0)])
- def testYearlyByMonthAndMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 3, 3, 9, 0),
- datetime(2001, 3, 1, 9, 0)])
- def testYearlyByYearDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=4,
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 9, 0),
- datetime(1998, 1, 1, 9, 0),
- datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0)])
- def testYearlyByYearDayNeg(self):
- self.assertEqual(list(rrule(YEARLY,
- count=4,
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 9, 0),
- datetime(1998, 1, 1, 9, 0),
- datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0)])
- def testYearlyByMonthAndYearDay(self):
- self.assertEqual(list(rrule(YEARLY,
- count=4,
- bymonth=(4,7),
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0),
- datetime(1999, 4, 10, 9, 0),
- datetime(1999, 7, 19, 9, 0)])
- def testYearlyByMonthAndYearDayNeg(self):
- self.assertEqual(list(rrule(YEARLY,
- count=4,
- bymonth=(4,7),
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0),
- datetime(1999, 4, 10, 9, 0),
- datetime(1999, 7, 19, 9, 0)])
- def testYearlyByWeekNo(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekno=20,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 5, 11, 9, 0),
- datetime(1998, 5, 12, 9, 0),
- datetime(1998, 5, 13, 9, 0)])
- def testYearlyByWeekNoAndWeekDay(self):
- # That's a nice one. The first days of week number one
- # may be in the last year.
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekno=1,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 29, 9, 0),
- datetime(1999, 1, 4, 9, 0),
- datetime(2000, 1, 3, 9, 0)])
- def testYearlyByWeekNoAndWeekDayLarge(self):
- # Another nice test. The last days of week number 52/53
- # may be in the next year.
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekno=52,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 9, 0),
- datetime(1998, 12, 27, 9, 0),
- datetime(2000, 1, 2, 9, 0)])
- def testYearlyByWeekNoAndWeekDayLast(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekno=-1,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 9, 0),
- datetime(1999, 1, 3, 9, 0),
- datetime(2000, 1, 2, 9, 0)])
- def testYearlyByEaster(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byeaster=0,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 12, 9, 0),
- datetime(1999, 4, 4, 9, 0),
- datetime(2000, 4, 23, 9, 0)])
- def testYearlyByEasterPos(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byeaster=1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 13, 9, 0),
- datetime(1999, 4, 5, 9, 0),
- datetime(2000, 4, 24, 9, 0)])
- def testYearlyByEasterNeg(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byeaster=-1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 11, 9, 0),
- datetime(1999, 4, 3, 9, 0),
- datetime(2000, 4, 22, 9, 0)])
- def testYearlyByWeekNoAndWeekDay53(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekno=53,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 12, 28, 9, 0),
- datetime(2004, 12, 27, 9, 0),
- datetime(2009, 12, 28, 9, 0)])
- def testYearlyByWeekNoAndWeekDay53(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byweekno=53,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 12, 28, 9, 0),
- datetime(2004, 12, 27, 9, 0),
- datetime(2009, 12, 28, 9, 0)])
- def testYearlyByHour(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byhour=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0),
- datetime(1998, 9, 2, 6, 0),
- datetime(1998, 9, 2, 18, 0)])
- def testYearlyByMinute(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6),
- datetime(1997, 9, 2, 9, 18),
- datetime(1998, 9, 2, 9, 6)])
- def testYearlyBySecond(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 6),
- datetime(1997, 9, 2, 9, 0, 18),
- datetime(1998, 9, 2, 9, 0, 6)])
- def testYearlyByHourAndMinute(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6),
- datetime(1997, 9, 2, 18, 18),
- datetime(1998, 9, 2, 6, 6)])
- def testYearlyByHourAndSecond(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byhour=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0, 6),
- datetime(1997, 9, 2, 18, 0, 18),
- datetime(1998, 9, 2, 6, 0, 6)])
- def testYearlyByMinuteAndSecond(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6, 6),
- datetime(1997, 9, 2, 9, 6, 18),
- datetime(1997, 9, 2, 9, 18, 6)])
- def testYearlyByHourAndMinuteAndSecond(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6, 6),
- datetime(1997, 9, 2, 18, 6, 18),
- datetime(1997, 9, 2, 18, 18, 6)])
- def testYearlyBySetPos(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonthday=15,
- byhour=(6,18),
- bysetpos=(3,-3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 11, 15, 18, 0),
- datetime(1998, 2, 15, 6, 0),
- datetime(1998, 11, 15, 18, 0)])
- def testMonthly(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 10, 2, 9, 0),
- datetime(1997, 11, 2, 9, 0)])
- def testMonthlyInterval(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- interval=2,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 11, 2, 9, 0),
- datetime(1998, 1, 2, 9, 0)])
- def testMonthlyIntervalLarge(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- interval=18,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1999, 3, 2, 9, 0),
- datetime(2000, 9, 2, 9, 0)])
- def testMonthlyByMonth(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonth=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 2, 9, 0),
- datetime(1998, 3, 2, 9, 0),
- datetime(1999, 1, 2, 9, 0)])
- def testMonthlyByMonthDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonthday=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 3, 9, 0),
- datetime(1997, 10, 1, 9, 0),
- datetime(1997, 10, 3, 9, 0)])
- def testMonthlyByMonthAndMonthDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(5,7),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 5, 9, 0),
- datetime(1998, 1, 7, 9, 0),
- datetime(1998, 3, 5, 9, 0)])
- def testMonthlyByWeekDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testMonthlyByNWeekDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 25, 9, 0),
- datetime(1997, 10, 7, 9, 0)])
- def testMonthlyByNWeekDayLarge(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byweekday=(TU(3),TH(-3)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 11, 9, 0),
- datetime(1997, 9, 16, 9, 0),
- datetime(1997, 10, 16, 9, 0)])
- def testMonthlyByMonthAndWeekDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 8, 9, 0)])
- def testMonthlyByMonthAndNWeekDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 29, 9, 0),
- datetime(1998, 3, 3, 9, 0)])
- def testMonthlyByMonthAndNWeekDayLarge(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(3),TH(-3)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 15, 9, 0),
- datetime(1998, 1, 20, 9, 0),
- datetime(1998, 3, 12, 9, 0)])
- def testMonthlyByMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 2, 3, 9, 0),
- datetime(1998, 3, 3, 9, 0)])
- def testMonthlyByMonthAndMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 3, 3, 9, 0),
- datetime(2001, 3, 1, 9, 0)])
- def testMonthlyByYearDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=4,
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 9, 0),
- datetime(1998, 1, 1, 9, 0),
- datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0)])
- def testMonthlyByYearDayNeg(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=4,
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 9, 0),
- datetime(1998, 1, 1, 9, 0),
- datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0)])
- def testMonthlyByMonthAndYearDay(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=4,
- bymonth=(4,7),
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0),
- datetime(1999, 4, 10, 9, 0),
- datetime(1999, 7, 19, 9, 0)])
- def testMonthlyByMonthAndYearDayNeg(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=4,
- bymonth=(4,7),
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0),
- datetime(1999, 4, 10, 9, 0),
- datetime(1999, 7, 19, 9, 0)])
- def testMonthlyByWeekNo(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byweekno=20,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 5, 11, 9, 0),
- datetime(1998, 5, 12, 9, 0),
- datetime(1998, 5, 13, 9, 0)])
- def testMonthlyByWeekNoAndWeekDay(self):
- # That's a nice one. The first days of week number one
- # may be in the last year.
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byweekno=1,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 29, 9, 0),
- datetime(1999, 1, 4, 9, 0),
- datetime(2000, 1, 3, 9, 0)])
- def testMonthlyByWeekNoAndWeekDayLarge(self):
- # Another nice test. The last days of week number 52/53
- # may be in the next year.
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byweekno=52,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 9, 0),
- datetime(1998, 12, 27, 9, 0),
- datetime(2000, 1, 2, 9, 0)])
- def testMonthlyByWeekNoAndWeekDayLast(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byweekno=-1,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 9, 0),
- datetime(1999, 1, 3, 9, 0),
- datetime(2000, 1, 2, 9, 0)])
- def testMonthlyByWeekNoAndWeekDay53(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byweekno=53,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 12, 28, 9, 0),
- datetime(2004, 12, 27, 9, 0),
- datetime(2009, 12, 28, 9, 0)])
- def testMonthlyByEaster(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byeaster=0,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 12, 9, 0),
- datetime(1999, 4, 4, 9, 0),
- datetime(2000, 4, 23, 9, 0)])
- def testMonthlyByEasterPos(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byeaster=1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 13, 9, 0),
- datetime(1999, 4, 5, 9, 0),
- datetime(2000, 4, 24, 9, 0)])
- def testMonthlyByEasterNeg(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byeaster=-1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 11, 9, 0),
- datetime(1999, 4, 3, 9, 0),
- datetime(2000, 4, 22, 9, 0)])
- def testMonthlyByHour(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byhour=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0),
- datetime(1997, 10, 2, 6, 0),
- datetime(1997, 10, 2, 18, 0)])
- def testMonthlyByMinute(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6),
- datetime(1997, 9, 2, 9, 18),
- datetime(1997, 10, 2, 9, 6)])
- def testMonthlyBySecond(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 6),
- datetime(1997, 9, 2, 9, 0, 18),
- datetime(1997, 10, 2, 9, 0, 6)])
- def testMonthlyByHourAndMinute(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6),
- datetime(1997, 9, 2, 18, 18),
- datetime(1997, 10, 2, 6, 6)])
- def testMonthlyByHourAndSecond(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byhour=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0, 6),
- datetime(1997, 9, 2, 18, 0, 18),
- datetime(1997, 10, 2, 6, 0, 6)])
- def testMonthlyByMinuteAndSecond(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6, 6),
- datetime(1997, 9, 2, 9, 6, 18),
- datetime(1997, 9, 2, 9, 18, 6)])
- def testMonthlyByHourAndMinuteAndSecond(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6, 6),
- datetime(1997, 9, 2, 18, 6, 18),
- datetime(1997, 9, 2, 18, 18, 6)])
- def testMonthlyBySetPos(self):
- self.assertEqual(list(rrule(MONTHLY,
- count=3,
- bymonthday=(13,17),
- byhour=(6,18),
- bysetpos=(3,-3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 13, 18, 0),
- datetime(1997, 9, 17, 6, 0),
- datetime(1997, 10, 13, 18, 0)])
- def testWeekly(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testWeeklyInterval(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- interval=2,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 16, 9, 0),
- datetime(1997, 9, 30, 9, 0)])
- def testWeeklyIntervalLarge(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- interval=20,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 1, 20, 9, 0),
- datetime(1998, 6, 9, 9, 0)])
- def testWeeklyByMonth(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- bymonth=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 13, 9, 0),
- datetime(1998, 1, 20, 9, 0)])
- def testWeeklyByMonthDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- bymonthday=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 3, 9, 0),
- datetime(1997, 10, 1, 9, 0),
- datetime(1997, 10, 3, 9, 0)])
- def testWeeklyByMonthAndMonthDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(5,7),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 5, 9, 0),
- datetime(1998, 1, 7, 9, 0),
- datetime(1998, 3, 5, 9, 0)])
- def testWeeklyByWeekDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testWeeklyByNWeekDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testWeeklyByMonthAndWeekDay(self):
- # This test is interesting, because it crosses the year
- # boundary in a weekly period to find day '1' as a
- # valid recurrence.
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 8, 9, 0)])
- def testWeeklyByMonthAndNWeekDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 8, 9, 0)])
- def testWeeklyByMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 2, 3, 9, 0),
- datetime(1998, 3, 3, 9, 0)])
- def testWeeklyByMonthAndMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 3, 3, 9, 0),
- datetime(2001, 3, 1, 9, 0)])
- def testWeeklyByYearDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=4,
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 9, 0),
- datetime(1998, 1, 1, 9, 0),
- datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0)])
- def testWeeklyByYearDayNeg(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=4,
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 9, 0),
- datetime(1998, 1, 1, 9, 0),
- datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0)])
- def testWeeklyByMonthAndYearDay(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=4,
- bymonth=(1,7),
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 7, 19, 9, 0),
- datetime(1999, 1, 1, 9, 0),
- datetime(1999, 7, 19, 9, 0)])
- def testWeeklyByMonthAndYearDayNeg(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=4,
- bymonth=(1,7),
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 7, 19, 9, 0),
- datetime(1999, 1, 1, 9, 0),
- datetime(1999, 7, 19, 9, 0)])
- def testWeeklyByWeekNo(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byweekno=20,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 5, 11, 9, 0),
- datetime(1998, 5, 12, 9, 0),
- datetime(1998, 5, 13, 9, 0)])
- def testWeeklyByWeekNoAndWeekDay(self):
- # That's a nice one. The first days of week number one
- # may be in the last year.
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byweekno=1,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 29, 9, 0),
- datetime(1999, 1, 4, 9, 0),
- datetime(2000, 1, 3, 9, 0)])
- def testWeeklyByWeekNoAndWeekDayLarge(self):
- # Another nice test. The last days of week number 52/53
- # may be in the next year.
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byweekno=52,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 9, 0),
- datetime(1998, 12, 27, 9, 0),
- datetime(2000, 1, 2, 9, 0)])
- def testWeeklyByWeekNoAndWeekDayLast(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byweekno=-1,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 9, 0),
- datetime(1999, 1, 3, 9, 0),
- datetime(2000, 1, 2, 9, 0)])
- def testWeeklyByWeekNoAndWeekDay53(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byweekno=53,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 12, 28, 9, 0),
- datetime(2004, 12, 27, 9, 0),
- datetime(2009, 12, 28, 9, 0)])
- def testWeeklyByEaster(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byeaster=0,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 12, 9, 0),
- datetime(1999, 4, 4, 9, 0),
- datetime(2000, 4, 23, 9, 0)])
- def testWeeklyByEasterPos(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byeaster=1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 13, 9, 0),
- datetime(1999, 4, 5, 9, 0),
- datetime(2000, 4, 24, 9, 0)])
- def testWeeklyByEasterNeg(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byeaster=-1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 11, 9, 0),
- datetime(1999, 4, 3, 9, 0),
- datetime(2000, 4, 22, 9, 0)])
- def testWeeklyByHour(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byhour=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0),
- datetime(1997, 9, 9, 6, 0),
- datetime(1997, 9, 9, 18, 0)])
- def testWeeklyByMinute(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6),
- datetime(1997, 9, 2, 9, 18),
- datetime(1997, 9, 9, 9, 6)])
- def testWeeklyBySecond(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 6),
- datetime(1997, 9, 2, 9, 0, 18),
- datetime(1997, 9, 9, 9, 0, 6)])
- def testWeeklyByHourAndMinute(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6),
- datetime(1997, 9, 2, 18, 18),
- datetime(1997, 9, 9, 6, 6)])
- def testWeeklyByHourAndSecond(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byhour=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0, 6),
- datetime(1997, 9, 2, 18, 0, 18),
- datetime(1997, 9, 9, 6, 0, 6)])
- def testWeeklyByMinuteAndSecond(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6, 6),
- datetime(1997, 9, 2, 9, 6, 18),
- datetime(1997, 9, 2, 9, 18, 6)])
- def testWeeklyByHourAndMinuteAndSecond(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6, 6),
- datetime(1997, 9, 2, 18, 6, 18),
- datetime(1997, 9, 2, 18, 18, 6)])
- def testWeeklyBySetPos(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- byweekday=(TU,TH),
- byhour=(6,18),
- bysetpos=(3,-3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0),
- datetime(1997, 9, 4, 6, 0),
- datetime(1997, 9, 9, 18, 0)])
- def testDaily(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0)])
- def testDailyInterval(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- interval=2,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 6, 9, 0)])
- def testDailyIntervalLarge(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- interval=92,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 12, 3, 9, 0),
- datetime(1998, 3, 5, 9, 0)])
- def testDailyByMonth(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- bymonth=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 1, 2, 9, 0),
- datetime(1998, 1, 3, 9, 0)])
- def testDailyByMonthDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- bymonthday=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 3, 9, 0),
- datetime(1997, 10, 1, 9, 0),
- datetime(1997, 10, 3, 9, 0)])
- def testDailyByMonthAndMonthDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- bymonth=(1,3),
- bymonthday=(5,7),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 5, 9, 0),
- datetime(1998, 1, 7, 9, 0),
- datetime(1998, 3, 5, 9, 0)])
- def testDailyByWeekDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testDailyByNWeekDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testDailyByMonthAndWeekDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 8, 9, 0)])
- def testDailyByMonthAndNWeekDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 1, 6, 9, 0),
- datetime(1998, 1, 8, 9, 0)])
- def testDailyByMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 2, 3, 9, 0),
- datetime(1998, 3, 3, 9, 0)])
- def testDailyByMonthAndMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- bymonth=(1,3),
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 3, 3, 9, 0),
- datetime(2001, 3, 1, 9, 0)])
- def testDailyByYearDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=4,
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 9, 0),
- datetime(1998, 1, 1, 9, 0),
- datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0)])
- def testDailyByYearDayNeg(self):
- self.assertEqual(list(rrule(DAILY,
- count=4,
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 9, 0),
- datetime(1998, 1, 1, 9, 0),
- datetime(1998, 4, 10, 9, 0),
- datetime(1998, 7, 19, 9, 0)])
- def testDailyByMonthAndYearDay(self):
- self.assertEqual(list(rrule(DAILY,
- count=4,
- bymonth=(1,7),
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 7, 19, 9, 0),
- datetime(1999, 1, 1, 9, 0),
- datetime(1999, 7, 19, 9, 0)])
- def testDailyByMonthAndYearDayNeg(self):
- self.assertEqual(list(rrule(DAILY,
- count=4,
- bymonth=(1,7),
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 9, 0),
- datetime(1998, 7, 19, 9, 0),
- datetime(1999, 1, 1, 9, 0),
- datetime(1999, 7, 19, 9, 0)])
- def testDailyByWeekNo(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byweekno=20,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 5, 11, 9, 0),
- datetime(1998, 5, 12, 9, 0),
- datetime(1998, 5, 13, 9, 0)])
- def testDailyByWeekNoAndWeekDay(self):
- # That's a nice one. The first days of week number one
- # may be in the last year.
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byweekno=1,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 29, 9, 0),
- datetime(1999, 1, 4, 9, 0),
- datetime(2000, 1, 3, 9, 0)])
- def testDailyByWeekNoAndWeekDayLarge(self):
- # Another nice test. The last days of week number 52/53
- # may be in the next year.
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byweekno=52,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 9, 0),
- datetime(1998, 12, 27, 9, 0),
- datetime(2000, 1, 2, 9, 0)])
- def testDailyByWeekNoAndWeekDayLast(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byweekno=-1,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 9, 0),
- datetime(1999, 1, 3, 9, 0),
- datetime(2000, 1, 2, 9, 0)])
- def testDailyByWeekNoAndWeekDay53(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byweekno=53,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 12, 28, 9, 0),
- datetime(2004, 12, 27, 9, 0),
- datetime(2009, 12, 28, 9, 0)])
- def testDailyByEaster(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byeaster=0,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 12, 9, 0),
- datetime(1999, 4, 4, 9, 0),
- datetime(2000, 4, 23, 9, 0)])
- def testDailyByEasterPos(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byeaster=1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 13, 9, 0),
- datetime(1999, 4, 5, 9, 0),
- datetime(2000, 4, 24, 9, 0)])
- def testDailyByEasterNeg(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byeaster=-1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 11, 9, 0),
- datetime(1999, 4, 3, 9, 0),
- datetime(2000, 4, 22, 9, 0)])
- def testDailyByHour(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byhour=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0),
- datetime(1997, 9, 3, 6, 0),
- datetime(1997, 9, 3, 18, 0)])
- def testDailyByMinute(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6),
- datetime(1997, 9, 2, 9, 18),
- datetime(1997, 9, 3, 9, 6)])
- def testDailyBySecond(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 6),
- datetime(1997, 9, 2, 9, 0, 18),
- datetime(1997, 9, 3, 9, 0, 6)])
- def testDailyByHourAndMinute(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6),
- datetime(1997, 9, 2, 18, 18),
- datetime(1997, 9, 3, 6, 6)])
- def testDailyByHourAndSecond(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byhour=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0, 6),
- datetime(1997, 9, 2, 18, 0, 18),
- datetime(1997, 9, 3, 6, 0, 6)])
- def testDailyByMinuteAndSecond(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6, 6),
- datetime(1997, 9, 2, 9, 6, 18),
- datetime(1997, 9, 2, 9, 18, 6)])
- def testDailyByHourAndMinuteAndSecond(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6, 6),
- datetime(1997, 9, 2, 18, 6, 18),
- datetime(1997, 9, 2, 18, 18, 6)])
- def testDailyBySetPos(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- byhour=(6,18),
- byminute=(15,45),
- bysetpos=(3,-3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 15),
- datetime(1997, 9, 3, 6, 45),
- datetime(1997, 9, 3, 18, 15)])
- def testHourly(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 2, 10, 0),
- datetime(1997, 9, 2, 11, 0)])
- def testHourlyInterval(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- interval=2,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 2, 11, 0),
- datetime(1997, 9, 2, 13, 0)])
- def testHourlyIntervalLarge(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- interval=769,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 10, 4, 10, 0),
- datetime(1997, 11, 5, 11, 0)])
- def testHourlyByMonth(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- bymonth=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 1, 0),
- datetime(1998, 1, 1, 2, 0)])
- def testHourlyByMonthDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- bymonthday=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 3, 0, 0),
- datetime(1997, 9, 3, 1, 0),
- datetime(1997, 9, 3, 2, 0)])
- def testHourlyByMonthAndMonthDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(5,7),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 5, 0, 0),
- datetime(1998, 1, 5, 1, 0),
- datetime(1998, 1, 5, 2, 0)])
- def testHourlyByWeekDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 2, 10, 0),
- datetime(1997, 9, 2, 11, 0)])
- def testHourlyByNWeekDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 2, 10, 0),
- datetime(1997, 9, 2, 11, 0)])
- def testHourlyByMonthAndWeekDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 1, 0),
- datetime(1998, 1, 1, 2, 0)])
- def testHourlyByMonthAndNWeekDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 1, 0),
- datetime(1998, 1, 1, 2, 0)])
- def testHourlyByMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 1, 0),
- datetime(1998, 1, 1, 2, 0)])
- def testHourlyByMonthAndMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 1, 0),
- datetime(1998, 1, 1, 2, 0)])
- def testHourlyByYearDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=4,
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 0, 0),
- datetime(1997, 12, 31, 1, 0),
- datetime(1997, 12, 31, 2, 0),
- datetime(1997, 12, 31, 3, 0)])
- def testHourlyByYearDayNeg(self):
- self.assertEqual(list(rrule(HOURLY,
- count=4,
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 0, 0),
- datetime(1997, 12, 31, 1, 0),
- datetime(1997, 12, 31, 2, 0),
- datetime(1997, 12, 31, 3, 0)])
- def testHourlyByMonthAndYearDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=4,
- bymonth=(4,7),
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 0, 0),
- datetime(1998, 4, 10, 1, 0),
- datetime(1998, 4, 10, 2, 0),
- datetime(1998, 4, 10, 3, 0)])
- def testHourlyByMonthAndYearDayNeg(self):
- self.assertEqual(list(rrule(HOURLY,
- count=4,
- bymonth=(4,7),
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 0, 0),
- datetime(1998, 4, 10, 1, 0),
- datetime(1998, 4, 10, 2, 0),
- datetime(1998, 4, 10, 3, 0)])
- def testHourlyByWeekNo(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byweekno=20,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 5, 11, 0, 0),
- datetime(1998, 5, 11, 1, 0),
- datetime(1998, 5, 11, 2, 0)])
- def testHourlyByWeekNoAndWeekDay(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byweekno=1,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 29, 0, 0),
- datetime(1997, 12, 29, 1, 0),
- datetime(1997, 12, 29, 2, 0)])
- def testHourlyByWeekNoAndWeekDayLarge(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byweekno=52,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 0, 0),
- datetime(1997, 12, 28, 1, 0),
- datetime(1997, 12, 28, 2, 0)])
- def testHourlyByWeekNoAndWeekDayLast(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byweekno=-1,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 0, 0),
- datetime(1997, 12, 28, 1, 0),
- datetime(1997, 12, 28, 2, 0)])
- def testHourlyByWeekNoAndWeekDay53(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byweekno=53,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 12, 28, 0, 0),
- datetime(1998, 12, 28, 1, 0),
- datetime(1998, 12, 28, 2, 0)])
- def testHourlyByEaster(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byeaster=0,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 12, 0, 0),
- datetime(1998, 4, 12, 1, 0),
- datetime(1998, 4, 12, 2, 0)])
- def testHourlyByEasterPos(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byeaster=1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 13, 0, 0),
- datetime(1998, 4, 13, 1, 0),
- datetime(1998, 4, 13, 2, 0)])
- def testHourlyByEasterNeg(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byeaster=-1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 11, 0, 0),
- datetime(1998, 4, 11, 1, 0),
- datetime(1998, 4, 11, 2, 0)])
- def testHourlyByHour(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byhour=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0),
- datetime(1997, 9, 3, 6, 0),
- datetime(1997, 9, 3, 18, 0)])
- def testHourlyByMinute(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6),
- datetime(1997, 9, 2, 9, 18),
- datetime(1997, 9, 2, 10, 6)])
- def testHourlyBySecond(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 6),
- datetime(1997, 9, 2, 9, 0, 18),
- datetime(1997, 9, 2, 10, 0, 6)])
- def testHourlyByHourAndMinute(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6),
- datetime(1997, 9, 2, 18, 18),
- datetime(1997, 9, 3, 6, 6)])
- def testHourlyByHourAndSecond(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byhour=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0, 6),
- datetime(1997, 9, 2, 18, 0, 18),
- datetime(1997, 9, 3, 6, 0, 6)])
- def testHourlyByMinuteAndSecond(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6, 6),
- datetime(1997, 9, 2, 9, 6, 18),
- datetime(1997, 9, 2, 9, 18, 6)])
- def testHourlyByHourAndMinuteAndSecond(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6, 6),
- datetime(1997, 9, 2, 18, 6, 18),
- datetime(1997, 9, 2, 18, 18, 6)])
- def testHourlyBySetPos(self):
- self.assertEqual(list(rrule(HOURLY,
- count=3,
- byminute=(15,45),
- bysecond=(15,45),
- bysetpos=(3,-3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 15, 45),
- datetime(1997, 9, 2, 9, 45, 15),
- datetime(1997, 9, 2, 10, 15, 45)])
- def testMinutely(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 2, 9, 1),
- datetime(1997, 9, 2, 9, 2)])
- def testMinutelyInterval(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- interval=2,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 2, 9, 2),
- datetime(1997, 9, 2, 9, 4)])
- def testMinutelyIntervalLarge(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- interval=1501,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 10, 1),
- datetime(1997, 9, 4, 11, 2)])
- def testMinutelyByMonth(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bymonth=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 0, 1),
- datetime(1998, 1, 1, 0, 2)])
- def testMinutelyByMonthDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bymonthday=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 3, 0, 0),
- datetime(1997, 9, 3, 0, 1),
- datetime(1997, 9, 3, 0, 2)])
- def testMinutelyByMonthAndMonthDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bymonth=(1,3),
- bymonthday=(5,7),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 5, 0, 0),
- datetime(1998, 1, 5, 0, 1),
- datetime(1998, 1, 5, 0, 2)])
- def testMinutelyByWeekDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 2, 9, 1),
- datetime(1997, 9, 2, 9, 2)])
- def testMinutelyByNWeekDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 2, 9, 1),
- datetime(1997, 9, 2, 9, 2)])
- def testMinutelyByMonthAndWeekDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 0, 1),
- datetime(1998, 1, 1, 0, 2)])
- def testMinutelyByMonthAndNWeekDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 0, 1),
- datetime(1998, 1, 1, 0, 2)])
- def testMinutelyByMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 0, 1),
- datetime(1998, 1, 1, 0, 2)])
- def testMinutelyByMonthAndMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bymonth=(1,3),
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0),
- datetime(1998, 1, 1, 0, 1),
- datetime(1998, 1, 1, 0, 2)])
- def testMinutelyByYearDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=4,
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 0, 0),
- datetime(1997, 12, 31, 0, 1),
- datetime(1997, 12, 31, 0, 2),
- datetime(1997, 12, 31, 0, 3)])
- def testMinutelyByYearDayNeg(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=4,
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 0, 0),
- datetime(1997, 12, 31, 0, 1),
- datetime(1997, 12, 31, 0, 2),
- datetime(1997, 12, 31, 0, 3)])
- def testMinutelyByMonthAndYearDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=4,
- bymonth=(4,7),
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 0, 0),
- datetime(1998, 4, 10, 0, 1),
- datetime(1998, 4, 10, 0, 2),
- datetime(1998, 4, 10, 0, 3)])
- def testMinutelyByMonthAndYearDayNeg(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=4,
- bymonth=(4,7),
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 0, 0),
- datetime(1998, 4, 10, 0, 1),
- datetime(1998, 4, 10, 0, 2),
- datetime(1998, 4, 10, 0, 3)])
- def testMinutelyByWeekNo(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byweekno=20,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 5, 11, 0, 0),
- datetime(1998, 5, 11, 0, 1),
- datetime(1998, 5, 11, 0, 2)])
- def testMinutelyByWeekNoAndWeekDay(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byweekno=1,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 29, 0, 0),
- datetime(1997, 12, 29, 0, 1),
- datetime(1997, 12, 29, 0, 2)])
- def testMinutelyByWeekNoAndWeekDayLarge(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byweekno=52,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 0, 0),
- datetime(1997, 12, 28, 0, 1),
- datetime(1997, 12, 28, 0, 2)])
- def testMinutelyByWeekNoAndWeekDayLast(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byweekno=-1,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 0, 0),
- datetime(1997, 12, 28, 0, 1),
- datetime(1997, 12, 28, 0, 2)])
- def testMinutelyByWeekNoAndWeekDay53(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byweekno=53,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 12, 28, 0, 0),
- datetime(1998, 12, 28, 0, 1),
- datetime(1998, 12, 28, 0, 2)])
- def testMinutelyByEaster(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byeaster=0,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 12, 0, 0),
- datetime(1998, 4, 12, 0, 1),
- datetime(1998, 4, 12, 0, 2)])
- def testMinutelyByEasterPos(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byeaster=1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 13, 0, 0),
- datetime(1998, 4, 13, 0, 1),
- datetime(1998, 4, 13, 0, 2)])
- def testMinutelyByEasterNeg(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byeaster=-1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 11, 0, 0),
- datetime(1998, 4, 11, 0, 1),
- datetime(1998, 4, 11, 0, 2)])
- def testMinutelyByHour(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byhour=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0),
- datetime(1997, 9, 2, 18, 1),
- datetime(1997, 9, 2, 18, 2)])
- def testMinutelyByMinute(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6),
- datetime(1997, 9, 2, 9, 18),
- datetime(1997, 9, 2, 10, 6)])
- def testMinutelyBySecond(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 6),
- datetime(1997, 9, 2, 9, 0, 18),
- datetime(1997, 9, 2, 9, 1, 6)])
- def testMinutelyByHourAndMinute(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6),
- datetime(1997, 9, 2, 18, 18),
- datetime(1997, 9, 3, 6, 6)])
- def testMinutelyByHourAndSecond(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byhour=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0, 6),
- datetime(1997, 9, 2, 18, 0, 18),
- datetime(1997, 9, 2, 18, 1, 6)])
- def testMinutelyByMinuteAndSecond(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6, 6),
- datetime(1997, 9, 2, 9, 6, 18),
- datetime(1997, 9, 2, 9, 18, 6)])
- def testMinutelyByHourAndMinuteAndSecond(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6, 6),
- datetime(1997, 9, 2, 18, 6, 18),
- datetime(1997, 9, 2, 18, 18, 6)])
- def testMinutelyBySetPos(self):
- self.assertEqual(list(rrule(MINUTELY,
- count=3,
- bysecond=(15,30,45),
- bysetpos=(3,-3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 15),
- datetime(1997, 9, 2, 9, 0, 45),
- datetime(1997, 9, 2, 9, 1, 15)])
- def testSecondly(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 0),
- datetime(1997, 9, 2, 9, 0, 1),
- datetime(1997, 9, 2, 9, 0, 2)])
- def testSecondlyInterval(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- interval=2,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 0),
- datetime(1997, 9, 2, 9, 0, 2),
- datetime(1997, 9, 2, 9, 0, 4)])
- def testSecondlyIntervalLarge(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- interval=90061,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 0),
- datetime(1997, 9, 3, 10, 1, 1),
- datetime(1997, 9, 4, 11, 2, 2)])
- def testSecondlyByMonth(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bymonth=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0, 0),
- datetime(1998, 1, 1, 0, 0, 1),
- datetime(1998, 1, 1, 0, 0, 2)])
- def testSecondlyByMonthDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bymonthday=(1,3),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 3, 0, 0, 0),
- datetime(1997, 9, 3, 0, 0, 1),
- datetime(1997, 9, 3, 0, 0, 2)])
- def testSecondlyByMonthAndMonthDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(5,7),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 5, 0, 0, 0),
- datetime(1998, 1, 5, 0, 0, 1),
- datetime(1998, 1, 5, 0, 0, 2)])
- def testSecondlyByWeekDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 0),
- datetime(1997, 9, 2, 9, 0, 1),
- datetime(1997, 9, 2, 9, 0, 2)])
- def testSecondlyByNWeekDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 0),
- datetime(1997, 9, 2, 9, 0, 1),
- datetime(1997, 9, 2, 9, 0, 2)])
- def testSecondlyByMonthAndWeekDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0, 0),
- datetime(1998, 1, 1, 0, 0, 1),
- datetime(1998, 1, 1, 0, 0, 2)])
- def testSecondlyByMonthAndNWeekDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bymonth=(1,3),
- byweekday=(TU(1),TH(-1)),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0, 0),
- datetime(1998, 1, 1, 0, 0, 1),
- datetime(1998, 1, 1, 0, 0, 2)])
- def testSecondlyByMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0, 0),
- datetime(1998, 1, 1, 0, 0, 1),
- datetime(1998, 1, 1, 0, 0, 2)])
- def testSecondlyByMonthAndMonthDayAndWeekDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bymonth=(1,3),
- bymonthday=(1,3),
- byweekday=(TU,TH),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 1, 1, 0, 0, 0),
- datetime(1998, 1, 1, 0, 0, 1),
- datetime(1998, 1, 1, 0, 0, 2)])
- def testSecondlyByYearDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=4,
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 0, 0, 0),
- datetime(1997, 12, 31, 0, 0, 1),
- datetime(1997, 12, 31, 0, 0, 2),
- datetime(1997, 12, 31, 0, 0, 3)])
- def testSecondlyByYearDayNeg(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=4,
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 31, 0, 0, 0),
- datetime(1997, 12, 31, 0, 0, 1),
- datetime(1997, 12, 31, 0, 0, 2),
- datetime(1997, 12, 31, 0, 0, 3)])
- def testSecondlyByMonthAndYearDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=4,
- bymonth=(4,7),
- byyearday=(1,100,200,365),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 0, 0, 0),
- datetime(1998, 4, 10, 0, 0, 1),
- datetime(1998, 4, 10, 0, 0, 2),
- datetime(1998, 4, 10, 0, 0, 3)])
- def testSecondlyByMonthAndYearDayNeg(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=4,
- bymonth=(4,7),
- byyearday=(-365,-266,-166,-1),
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 10, 0, 0, 0),
- datetime(1998, 4, 10, 0, 0, 1),
- datetime(1998, 4, 10, 0, 0, 2),
- datetime(1998, 4, 10, 0, 0, 3)])
- def testSecondlyByWeekNo(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byweekno=20,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 5, 11, 0, 0, 0),
- datetime(1998, 5, 11, 0, 0, 1),
- datetime(1998, 5, 11, 0, 0, 2)])
- def testSecondlyByWeekNoAndWeekDay(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byweekno=1,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 29, 0, 0, 0),
- datetime(1997, 12, 29, 0, 0, 1),
- datetime(1997, 12, 29, 0, 0, 2)])
- def testSecondlyByWeekNoAndWeekDayLarge(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byweekno=52,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 0, 0, 0),
- datetime(1997, 12, 28, 0, 0, 1),
- datetime(1997, 12, 28, 0, 0, 2)])
- def testSecondlyByWeekNoAndWeekDayLast(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byweekno=-1,
- byweekday=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 12, 28, 0, 0, 0),
- datetime(1997, 12, 28, 0, 0, 1),
- datetime(1997, 12, 28, 0, 0, 2)])
- def testSecondlyByWeekNoAndWeekDay53(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byweekno=53,
- byweekday=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 12, 28, 0, 0, 0),
- datetime(1998, 12, 28, 0, 0, 1),
- datetime(1998, 12, 28, 0, 0, 2)])
- def testSecondlyByEaster(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byeaster=0,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 12, 0, 0, 0),
- datetime(1998, 4, 12, 0, 0, 1),
- datetime(1998, 4, 12, 0, 0, 2)])
- def testSecondlyByEasterPos(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byeaster=1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 13, 0, 0, 0),
- datetime(1998, 4, 13, 0, 0, 1),
- datetime(1998, 4, 13, 0, 0, 2)])
- def testSecondlyByEasterNeg(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byeaster=-1,
- dtstart=parse("19970902T090000"))),
- [datetime(1998, 4, 11, 0, 0, 0),
- datetime(1998, 4, 11, 0, 0, 1),
- datetime(1998, 4, 11, 0, 0, 2)])
- def testSecondlyByHour(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byhour=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0, 0),
- datetime(1997, 9, 2, 18, 0, 1),
- datetime(1997, 9, 2, 18, 0, 2)])
- def testSecondlyByMinute(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6, 0),
- datetime(1997, 9, 2, 9, 6, 1),
- datetime(1997, 9, 2, 9, 6, 2)])
- def testSecondlyBySecond(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0, 6),
- datetime(1997, 9, 2, 9, 0, 18),
- datetime(1997, 9, 2, 9, 1, 6)])
- def testSecondlyByHourAndMinute(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6, 0),
- datetime(1997, 9, 2, 18, 6, 1),
- datetime(1997, 9, 2, 18, 6, 2)])
- def testSecondlyByHourAndSecond(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byhour=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 0, 6),
- datetime(1997, 9, 2, 18, 0, 18),
- datetime(1997, 9, 2, 18, 1, 6)])
- def testSecondlyByMinuteAndSecond(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 6, 6),
- datetime(1997, 9, 2, 9, 6, 18),
- datetime(1997, 9, 2, 9, 18, 6)])
- def testSecondlyByHourAndMinuteAndSecond(self):
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- byhour=(6,18),
- byminute=(6,18),
- bysecond=(6,18),
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 18, 6, 6),
- datetime(1997, 9, 2, 18, 6, 18),
- datetime(1997, 9, 2, 18, 18, 6)])
- def testSecondlyByHourAndMinuteAndSecondBug(self):
- # This explores a bug found by Mathieu Bridon.
- self.assertEqual(list(rrule(SECONDLY,
- count=3,
- bysecond=(0,),
- byminute=(1,),
- dtstart=parse("20100322120100"))),
- [datetime(2010, 3, 22, 12, 1),
- datetime(2010, 3, 22, 13, 1),
- datetime(2010, 3, 22, 14, 1)])
- def testUntilNotMatching(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"),
- until=parse("19970905T080000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0)])
- def testUntilMatching(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"),
- until=parse("19970904T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0)])
- def testUntilSingle(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"),
- until=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0)])
- def testUntilEmpty(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"),
- until=parse("19970901T090000"))),
- [])
- def testUntilWithDate(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"),
- until=date(1997, 9, 5))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0)])
- def testWkStIntervalMO(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- interval=2,
- byweekday=(TU,SU),
- wkst=MO,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 7, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testWkStIntervalSU(self):
- self.assertEqual(list(rrule(WEEKLY,
- count=3,
- interval=2,
- byweekday=(TU,SU),
- wkst=SU,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 14, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testDTStartIsDate(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- dtstart=date(1997, 9, 2))),
- [datetime(1997, 9, 2, 0, 0),
- datetime(1997, 9, 3, 0, 0),
- datetime(1997, 9, 4, 0, 0)])
- def testDTStartWithMicroseconds(self):
- self.assertEqual(list(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000.5"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0)])
- def testMaxYear(self):
- self.assertEqual(list(rrule(YEARLY,
- count=3,
- bymonth=2,
- bymonthday=31,
- dtstart=parse("99970902T090000"))),
- [])
- def testGetItem(self):
- self.assertEqual(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"))[0],
- datetime(1997, 9, 2, 9, 0))
- def testGetItemNeg(self):
- self.assertEqual(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"))[-1],
- datetime(1997, 9, 4, 9, 0))
- def testGetItemSlice(self):
- self.assertEqual(rrule(DAILY,
- #count=3,
- dtstart=parse("19970902T090000"))[1:2],
- [datetime(1997, 9, 3, 9, 0)])
- def testGetItemSliceEmpty(self):
- self.assertEqual(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"))[:],
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0)])
- def testGetItemSliceStep(self):
- self.assertEqual(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000"))[::-2],
- [datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 2, 9, 0)])
- def testCount(self):
- self.assertEqual(rrule(DAILY,
- count=3,
- dtstart=parse("19970902T090000")).count(),
- 3)
- def testContains(self):
- rr = rrule(DAILY, count=3, dtstart=parse("19970902T090000"))
- self.assertEqual(datetime(1997, 9, 3, 9, 0) in rr, True)
- def testContainsNot(self):
- rr = rrule(DAILY, count=3, dtstart=parse("19970902T090000"))
- self.assertEqual(datetime(1997, 9, 3, 9, 0) not in rr, False)
- def testBefore(self):
- self.assertEqual(rrule(DAILY,
- #count=5,
- dtstart=parse("19970902T090000"))
- .before(parse("19970905T090000")),
- datetime(1997, 9, 4, 9, 0))
- def testBeforeInc(self):
- self.assertEqual(rrule(DAILY,
- #count=5,
- dtstart=parse("19970902T090000"))
- .before(parse("19970905T090000"), inc=True),
- datetime(1997, 9, 5, 9, 0))
- def testAfter(self):
- self.assertEqual(rrule(DAILY,
- #count=5,
- dtstart=parse("19970902T090000"))
- .after(parse("19970904T090000")),
- datetime(1997, 9, 5, 9, 0))
- def testAfterInc(self):
- self.assertEqual(rrule(DAILY,
- #count=5,
- dtstart=parse("19970902T090000"))
- .after(parse("19970904T090000"), inc=True),
- datetime(1997, 9, 4, 9, 0))
- def testBetween(self):
- self.assertEqual(rrule(DAILY,
- #count=5,
- dtstart=parse("19970902T090000"))
- .between(parse("19970902T090000"),
- parse("19970906T090000")),
- [datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 5, 9, 0)])
- def testBetweenInc(self):
- self.assertEqual(rrule(DAILY,
- #count=5,
- dtstart=parse("19970902T090000"))
- .between(parse("19970902T090000"),
- parse("19970906T090000"), inc=True),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 5, 9, 0),
- datetime(1997, 9, 6, 9, 0)])
- def testCachePre(self):
- rr = rrule(DAILY, count=15, cache=True,
- dtstart=parse("19970902T090000"))
- self.assertEqual(list(rr),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 5, 9, 0),
- datetime(1997, 9, 6, 9, 0),
- datetime(1997, 9, 7, 9, 0),
- datetime(1997, 9, 8, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 10, 9, 0),
- datetime(1997, 9, 11, 9, 0),
- datetime(1997, 9, 12, 9, 0),
- datetime(1997, 9, 13, 9, 0),
- datetime(1997, 9, 14, 9, 0),
- datetime(1997, 9, 15, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testCachePost(self):
- rr = rrule(DAILY, count=15, cache=True,
- dtstart=parse("19970902T090000"))
- for x in rr: pass
- self.assertEqual(list(rr),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 5, 9, 0),
- datetime(1997, 9, 6, 9, 0),
- datetime(1997, 9, 7, 9, 0),
- datetime(1997, 9, 8, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 10, 9, 0),
- datetime(1997, 9, 11, 9, 0),
- datetime(1997, 9, 12, 9, 0),
- datetime(1997, 9, 13, 9, 0),
- datetime(1997, 9, 14, 9, 0),
- datetime(1997, 9, 15, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testCachePostInternal(self):
- rr = rrule(DAILY, count=15, cache=True,
- dtstart=parse("19970902T090000"))
- for x in rr: pass
- self.assertEqual(rr._cache,
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 3, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 5, 9, 0),
- datetime(1997, 9, 6, 9, 0),
- datetime(1997, 9, 7, 9, 0),
- datetime(1997, 9, 8, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 10, 9, 0),
- datetime(1997, 9, 11, 9, 0),
- datetime(1997, 9, 12, 9, 0),
- datetime(1997, 9, 13, 9, 0),
- datetime(1997, 9, 14, 9, 0),
- datetime(1997, 9, 15, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testCachePreContains(self):
- rr = rrule(DAILY, count=3, cache=True,
- dtstart=parse("19970902T090000"))
- self.assertEqual(datetime(1997, 9, 3, 9, 0) in rr, True)
- def testCachePostContains(self):
- rr = rrule(DAILY, count=3, cache=True,
- dtstart=parse("19970902T090000"))
- for x in rr: pass
- self.assertEqual(datetime(1997, 9, 3, 9, 0) in rr, True)
- def testSet(self):
- set = rruleset()
- set.rrule(rrule(YEARLY, count=2, byweekday=TU,
- dtstart=parse("19970902T090000")))
- set.rrule(rrule(YEARLY, count=1, byweekday=TH,
- dtstart=parse("19970902T090000")))
- self.assertEqual(list(set),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testSetDate(self):
- set = rruleset()
- set.rrule(rrule(YEARLY, count=1, byweekday=TU,
- dtstart=parse("19970902T090000")))
- set.rdate(datetime(1997, 9, 4, 9))
- set.rdate(datetime(1997, 9, 9, 9))
- self.assertEqual(list(set),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testSetExRule(self):
- set = rruleset()
- set.rrule(rrule(YEARLY, count=6, byweekday=(TU,TH),
- dtstart=parse("19970902T090000")))
- set.exrule(rrule(YEARLY, count=3, byweekday=TH,
- dtstart=parse("19970902T090000")))
- self.assertEqual(list(set),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testSetExDate(self):
- set = rruleset()
- set.rrule(rrule(YEARLY, count=6, byweekday=(TU,TH),
- dtstart=parse("19970902T090000")))
- set.exdate(datetime(1997, 9, 4, 9))
- set.exdate(datetime(1997, 9, 11, 9))
- set.exdate(datetime(1997, 9, 18, 9))
- self.assertEqual(list(set),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testSetExDateRevOrder(self):
- set = rruleset()
- set.rrule(rrule(MONTHLY, count=5, bymonthday=10,
- dtstart=parse("20040101T090000")))
- set.exdate(datetime(2004, 4, 10, 9, 0))
- set.exdate(datetime(2004, 2, 10, 9, 0))
- self.assertEqual(list(set),
- [datetime(2004, 1, 10, 9, 0),
- datetime(2004, 3, 10, 9, 0),
- datetime(2004, 5, 10, 9, 0)])
- def testSetDateAndExDate(self):
- set = rruleset()
- set.rdate(datetime(1997, 9, 2, 9))
- set.rdate(datetime(1997, 9, 4, 9))
- set.rdate(datetime(1997, 9, 9, 9))
- set.rdate(datetime(1997, 9, 11, 9))
- set.rdate(datetime(1997, 9, 16, 9))
- set.rdate(datetime(1997, 9, 18, 9))
- set.exdate(datetime(1997, 9, 4, 9))
- set.exdate(datetime(1997, 9, 11, 9))
- set.exdate(datetime(1997, 9, 18, 9))
- self.assertEqual(list(set),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testSetDateAndExRule(self):
- set = rruleset()
- set.rdate(datetime(1997, 9, 2, 9))
- set.rdate(datetime(1997, 9, 4, 9))
- set.rdate(datetime(1997, 9, 9, 9))
- set.rdate(datetime(1997, 9, 11, 9))
- set.rdate(datetime(1997, 9, 16, 9))
- set.rdate(datetime(1997, 9, 18, 9))
- set.exrule(rrule(YEARLY, count=3, byweekday=TH,
- dtstart=parse("19970902T090000")))
- self.assertEqual(list(set),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testSetCount(self):
- set = rruleset()
- set.rrule(rrule(YEARLY, count=6, byweekday=(TU,TH),
- dtstart=parse("19970902T090000")))
- set.exrule(rrule(YEARLY, count=3, byweekday=TH,
- dtstart=parse("19970902T090000")))
- self.assertEqual(set.count(), 3)
- def testSetCachePre(self):
- set = rruleset()
- set.rrule(rrule(YEARLY, count=2, byweekday=TU,
- dtstart=parse("19970902T090000")))
- set.rrule(rrule(YEARLY, count=1, byweekday=TH,
- dtstart=parse("19970902T090000")))
- self.assertEqual(list(set),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testSetCachePost(self):
- set = rruleset(cache=True)
- set.rrule(rrule(YEARLY, count=2, byweekday=TU,
- dtstart=parse("19970902T090000")))
- set.rrule(rrule(YEARLY, count=1, byweekday=TH,
- dtstart=parse("19970902T090000")))
- for x in set: pass
- self.assertEqual(list(set),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testSetCachePostInternal(self):
- set = rruleset(cache=True)
- set.rrule(rrule(YEARLY, count=2, byweekday=TU,
- dtstart=parse("19970902T090000")))
- set.rrule(rrule(YEARLY, count=1, byweekday=TH,
- dtstart=parse("19970902T090000")))
- for x in set: pass
- self.assertEqual(list(set._cache),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testStr(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=3\n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0)])
- def testStrType(self):
- self.assertEqual(isinstance(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=3\n"
- ), rrule), True)
- def testStrForceSetType(self):
- self.assertEqual(isinstance(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=3\n"
- , forceset=True), rruleset), True)
- def testStrSetType(self):
- self.assertEqual(isinstance(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n"
- "RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n"
- ), rruleset), True)
- def testStrCase(self):
- self.assertEqual(list(rrulestr(
- "dtstart:19970902T090000\n"
- "rrule:freq=yearly;count=3\n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0)])
- def testStrSpaces(self):
- self.assertEqual(list(rrulestr(
- " DTSTART:19970902T090000 "
- " RRULE:FREQ=YEARLY;COUNT=3 "
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0)])
- def testStrSpacesAndLines(self):
- self.assertEqual(list(rrulestr(
- " DTSTART:19970902T090000 \n"
- " \n"
- " RRULE:FREQ=YEARLY;COUNT=3 \n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0)])
- def testStrNoDTStart(self):
- self.assertEqual(list(rrulestr(
- "RRULE:FREQ=YEARLY;COUNT=3\n"
- , dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0)])
- def testStrValueOnly(self):
- self.assertEqual(list(rrulestr(
- "FREQ=YEARLY;COUNT=3\n"
- , dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0)])
- def testStrUnfold(self):
- self.assertEqual(list(rrulestr(
- "FREQ=YEA\n RLY;COUNT=3\n", unfold=True,
- dtstart=parse("19970902T090000"))),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1998, 9, 2, 9, 0),
- datetime(1999, 9, 2, 9, 0)])
- def testStrSet(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n"
- "RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testStrSetDate(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TU\n"
- "RDATE:19970904T090000\n"
- "RDATE:19970909T090000\n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 4, 9, 0),
- datetime(1997, 9, 9, 9, 0)])
- def testStrSetExRule(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=6;BYDAY=TU,TH\n"
- "EXRULE:FREQ=YEARLY;COUNT=3;BYDAY=TH\n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testStrSetExDate(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=6;BYDAY=TU,TH\n"
- "EXDATE:19970904T090000\n"
- "EXDATE:19970911T090000\n"
- "EXDATE:19970918T090000\n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testStrSetDateAndExDate(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RDATE:19970902T090000\n"
- "RDATE:19970904T090000\n"
- "RDATE:19970909T090000\n"
- "RDATE:19970911T090000\n"
- "RDATE:19970916T090000\n"
- "RDATE:19970918T090000\n"
- "EXDATE:19970904T090000\n"
- "EXDATE:19970911T090000\n"
- "EXDATE:19970918T090000\n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testStrSetDateAndExRule(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RDATE:19970902T090000\n"
- "RDATE:19970904T090000\n"
- "RDATE:19970909T090000\n"
- "RDATE:19970911T090000\n"
- "RDATE:19970916T090000\n"
- "RDATE:19970918T090000\n"
- "EXRULE:FREQ=YEARLY;COUNT=3;BYDAY=TH\n"
- )),
- [datetime(1997, 9, 2, 9, 0),
- datetime(1997, 9, 9, 9, 0),
- datetime(1997, 9, 16, 9, 0)])
- def testStrKeywords(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=3;INTERVAL=3;"
- "BYMONTH=3;BYWEEKDAY=TH;BYMONTHDAY=3;"
- "BYHOUR=3;BYMINUTE=3;BYSECOND=3\n"
- )),
- [datetime(2033, 3, 3, 3, 3, 3),
- datetime(2039, 3, 3, 3, 3, 3),
- datetime(2072, 3, 3, 3, 3, 3)])
- def testStrNWeekDay(self):
- self.assertEqual(list(rrulestr(
- "DTSTART:19970902T090000\n"
- "RRULE:FREQ=YEARLY;COUNT=3;BYDAY=1TU,-1TH\n"
- )),
- [datetime(1997, 12, 25, 9, 0),
- datetime(1998, 1, 6, 9, 0),
- datetime(1998, 12, 31, 9, 0)])
- def testBadBySetPos(self):
- self.assertRaises(ValueError,
- rrule, MONTHLY,
- count=1,
- bysetpos=0,
- dtstart=parse("19970902T090000"))
- def testBadBySetPosMany(self):
- self.assertRaises(ValueError,
- rrule, MONTHLY,
- count=1,
- bysetpos=(-1,0,1),
- dtstart=parse("19970902T090000"))
- class ParserTest(unittest.TestCase):
- def setUp(self):
- self.tzinfos = {"BRST": -10800}
- self.brsttz = tzoffset("BRST", -10800)
- self.default = datetime(2003, 9, 25)
- def testDateCommandFormat(self):
- self.assertEqual(parse("Thu Sep 25 10:36:28 BRST 2003",
- tzinfos=self.tzinfos),
- datetime(2003, 9, 25, 10, 36, 28,
- tzinfo=self.brsttz))
- def testDateCommandFormatUnicode(self):
- self.assertEqual(parse(u"Thu Sep 25 10:36:28 BRST 2003",
- tzinfos=self.tzinfos),
- datetime(2003, 9, 25, 10, 36, 28,
- tzinfo=self.brsttz))
- def testDateCommandFormatReversed(self):
- self.assertEqual(parse("2003 10:36:28 BRST 25 Sep Thu",
- tzinfos=self.tzinfos),
- datetime(2003, 9, 25, 10, 36, 28,
- tzinfo=self.brsttz))
- def testDateCommandFormatIgnoreTz(self):
- self.assertEqual(parse("Thu Sep 25 10:36:28 BRST 2003",
- ignoretz=True),
- datetime(2003, 9, 25, 10, 36, 28))
- def testDateCommandFormatStrip1(self):
- self.assertEqual(parse("Thu Sep 25 10:36:28 2003"),
- datetime(2003, 9, 25, 10, 36, 28))
- def testDateCommandFormatStrip2(self):
- self.assertEqual(parse("Thu Sep 25 10:36:28", default=self.default),
- datetime(2003, 9, 25, 10, 36, 28))
- def testDateCommandFormatStrip3(self):
- self.assertEqual(parse("Thu Sep 10:36:28", default=self.default),
- datetime(2003, 9, 25, 10, 36, 28))
- def testDateCommandFormatStrip4(self):
- self.assertEqual(parse("Thu 10:36:28", default=self.default),
- datetime(2003, 9, 25, 10, 36, 28))
- def testDateCommandFormatStrip5(self):
- self.assertEqual(parse("Sep 10:36:28", default=self.default),
- datetime(2003, 9, 25, 10, 36, 28))
- def testDateCommandFormatStrip6(self):
- self.assertEqual(parse("10:36:28", default=self.default),
- datetime(2003, 9, 25, 10, 36, 28))
- def testDateCommandFormatStrip7(self):
- self.assertEqual(parse("10:36", default=self.default),
- datetime(2003, 9, 25, 10, 36))
- def testDateCommandFormatStrip8(self):
- self.assertEqual(parse("Thu Sep 25 2003"),
- datetime(2003, 9, 25))
- def testDateCommandFormatStrip9(self):
- self.assertEqual(parse("Sep 25 2003"),
- datetime(2003, 9, 25))
- def testDateCommandFormatStrip9(self):
- self.assertEqual(parse("Sep 2003", default=self.default),
- datetime(2003, 9, 25))
- def testDateCommandFormatStrip10(self):
- self.assertEqual(parse("Sep", default=self.default),
- datetime(2003, 9, 25))
- def testDateCommandFormatStrip11(self):
- self.assertEqual(parse("2003", default=self.default),
- datetime(2003, 9, 25))
- def testDateRCommandFormat(self):
- self.assertEqual(parse("Thu, 25 Sep 2003 10:49:41 -0300"),
- datetime(2003, 9, 25, 10, 49, 41,
- tzinfo=self.brsttz))
- def testISOFormat(self):
- self.assertEqual(parse("2003-09-25T10:49:41.5-03:00"),
- datetime(2003, 9, 25, 10, 49, 41, 500000,
- tzinfo=self.brsttz))
- def testISOFormatStrip1(self):
- self.assertEqual(parse("2003-09-25T10:49:41-03:00"),
- datetime(2003, 9, 25, 10, 49, 41,
- tzinfo=self.brsttz))
- def testISOFormatStrip2(self):
- self.assertEqual(parse("2003-09-25T10:49:41"),
- datetime(2003, 9, 25, 10, 49, 41))
- def testISOFormatStrip3(self):
- self.assertEqual(parse("2003-09-25T10:49"),
- datetime(2003, 9, 25, 10, 49))
- def testISOFormatStrip4(self):
- self.assertEqual(parse("2003-09-25T10"),
- datetime(2003, 9, 25, 10))
- def testISOFormatStrip5(self):
- self.assertEqual(parse("2003-09-25"),
- datetime(2003, 9, 25))
- def testISOStrippedFormat(self):
- self.assertEqual(parse("20030925T104941.5-0300"),
- datetime(2003, 9, 25, 10, 49, 41, 500000,
- tzinfo=self.brsttz))
- def testISOStrippedFormatStrip1(self):
- self.assertEqual(parse("20030925T104941-0300"),
- datetime(2003, 9, 25, 10, 49, 41,
- tzinfo=self.brsttz))
- def testISOStrippedFormatStrip2(self):
- self.assertEqual(parse("20030925T104941"),
- datetime(2003, 9, 25, 10, 49, 41))
- def testISOStrippedFormatStrip3(self):
- self.assertEqual(parse("20030925T1049"),
- datetime(2003, 9, 25, 10, 49, 0))
- def testISOStrippedFormatStrip4(self):
- self.assertEqual(parse("20030925T10"),
- datetime(2003, 9, 25, 10))
- def testISOStrippedFormatStrip5(self):
- self.assertEqual(parse("20030925"),
- datetime(2003, 9, 25))
- def testNoSeparator1(self):
- self.assertEqual(parse("199709020908"),
- datetime(1997, 9, 2, 9, 8))
- def testNoSeparator2(self):
- self.assertEqual(parse("19970902090807"),
- datetime(1997, 9, 2, 9, 8, 7))
- def testDateWithDash1(self):
- self.assertEqual(parse("2003-09-25"),
- datetime(2003, 9, 25))
- def testDateWithDash2(self):
- self.assertEqual(parse("2003-Sep-25"),
- datetime(2003, 9, 25))
- def testDateWithDash3(self):
- self.assertEqual(parse("25-Sep-2003"),
- datetime(2003, 9, 25))
- def testDateWithDash4(self):
- self.assertEqual(parse("25-Sep-2003"),
- datetime(2003, 9, 25))
- def testDateWithDash5(self):
- self.assertEqual(parse("Sep-25-2003"),
- datetime(2003, 9, 25))
- def testDateWithDash6(self):
- self.assertEqual(parse("09-25-2003"),
- datetime(2003, 9, 25))
- def testDateWithDash7(self):
- self.assertEqual(parse("25-09-2003"),
- datetime(2003, 9, 25))
- def testDateWithDash8(self):
- self.assertEqual(parse("10-09-2003", dayfirst=True),
- datetime(2003, 9, 10))
- def testDateWithDash9(self):
- self.assertEqual(parse("10-09-2003"),
- datetime(2003, 10, 9))
- def testDateWithDash10(self):
- self.assertEqual(parse("10-09-03"),
- datetime(2003, 10, 9))
- def testDateWithDash11(self):
- self.assertEqual(parse("10-09-03", yearfirst=True),
- datetime(2010, 9, 3))
- def testDateWithDot1(self):
- self.assertEqual(parse("2003.09.25"),
- datetime(2003, 9, 25))
- def testDateWithDot2(self):
- self.assertEqual(parse("2003.Sep.25"),
- datetime(2003, 9, 25))
- def testDateWithDot3(self):
- self.assertEqual(parse("25.Sep.2003"),
- datetime(2003, 9, 25))
- def testDateWithDot4(self):
- self.assertEqual(parse("25.Sep.2003"),
- datetime(2003, 9, 25))
- def testDateWithDot5(self):
- self.assertEqual(parse("Sep.25.2003"),
- datetime(2003, 9, 25))
- def testDateWithDot6(self):
- self.assertEqual(parse("09.25.2003"),
- datetime(2003, 9, 25))
- def testDateWithDot7(self):
- self.assertEqual(parse("25.09.2003"),
- datetime(2003, 9, 25))
- def testDateWithDot8(self):
- self.assertEqual(parse("10.09.2003", dayfirst=True),
- datetime(2003, 9, 10))
- def testDateWithDot9(self):
- self.assertEqual(parse("10.09.2003"),
- datetime(2003, 10, 9))
- def testDateWithDot10(self):
- self.assertEqual(parse("10.09.03"),
- datetime(2003, 10, 9))
- def testDateWithDot11(self):
- self.assertEqual(parse("10.09.03", yearfirst=True),
- datetime(2010, 9, 3))
- def testDateWithSlash1(self):
- self.assertEqual(parse("2003/09/25"),
- datetime(2003, 9, 25))
- def testDateWithSlash2(self):
- self.assertEqual(parse("2003/Sep/25"),
- datetime(2003, 9, 25))
- def testDateWithSlash3(self):
- self.assertEqual(parse("25/Sep/2003"),
- datetime(2003, 9, 25))
- def testDateWithSlash4(self):
- self.assertEqual(parse("25/Sep/2003"),
- datetime(2003, 9, 25))
- def testDateWithSlash5(self):
- self.assertEqual(parse("Sep/25/2003"),
- datetime(2003, 9, 25))
- def testDateWithSlash6(self):
- self.assertEqual(parse("09/25/2003"),
- datetime(2003, 9, 25))
- def testDateWithSlash7(self):
- self.assertEqual(parse("25/09/2003"),
- datetime(2003, 9, 25))
- def testDateWithSlash8(self):
- self.assertEqual(parse("10/09/2003", dayfirst=True),
- datetime(2003, 9, 10))
- def testDateWithSlash9(self):
- self.assertEqual(parse("10/09/2003"),
- datetime(2003, 10, 9))
- def testDateWithSlash10(self):
- self.assertEqual(parse("10/09/03"),
- datetime(2003, 10, 9))
- def testDateWithSlash11(self):
- self.assertEqual(parse("10/09/03", yearfirst=True),
- datetime(2010, 9, 3))
- def testDateWithSpace12(self):
- self.assertEqual(parse("25 09 03"),
- datetime(2003, 9, 25))
- def testDateWithSpace13(self):
- self.assertEqual(parse("25 09 03"),
- datetime(2003, 9, 25))
- def testDateWithSpace1(self):
- self.assertEqual(parse("2003 09 25"),
- datetime(2003, 9, 25))
- def testDateWithSpace2(self):
- self.assertEqual(parse("2003 Sep 25"),
- datetime(2003, 9, 25))
- def testDateWithSpace3(self):
- self.assertEqual(parse("25 Sep 2003"),
- datetime(2003, 9, 25))
- def testDateWithSpace4(self):
- self.assertEqual(parse("25 Sep 2003"),
- datetime(2003, 9, 25))
- def testDateWithSpace5(self):
- self.assertEqual(parse("Sep 25 2003"),
- datetime(2003, 9, 25))
- def testDateWithSpace6(self):
- self.assertEqual(parse("09 25 2003"),
- datetime(2003, 9, 25))
- def testDateWithSpace7(self):
- self.assertEqual(parse("25 09 2003"),
- datetime(2003, 9, 25))
- def testDateWithSpace8(self):
- self.assertEqual(parse("10 09 2003", dayfirst=True),
- datetime(2003, 9, 10))
- def testDateWithSpace9(self):
- self.assertEqual(parse("10 09 2003"),
- datetime(2003, 10, 9))
- def testDateWithSpace10(self):
- self.assertEqual(parse("10 09 03"),
- datetime(2003, 10, 9))
- def testDateWithSpace11(self):
- self.assertEqual(parse("10 09 03", yearfirst=True),
- datetime(2010, 9, 3))
- def testDateWithSpace12(self):
- self.assertEqual(parse("25 09 03"),
- datetime(2003, 9, 25))
- def testDateWithSpace13(self):
- self.assertEqual(parse("25 09 03"),
- datetime(2003, 9, 25))
- def testStrangelyOrderedDate1(self):
- self.assertEqual(parse("03 25 Sep"),
- datetime(2003, 9, 25))
- def testStrangelyOrderedDate2(self):
- self.assertEqual(parse("2003 25 Sep"),
- datetime(2003, 9, 25))
- def testStrangelyOrderedDate3(self):
- self.assertEqual(parse("25 03 Sep"),
- datetime(2025, 9, 3))
- def testHourWithLetters(self):
- self.assertEqual(parse("10h36m28.5s", default=self.default),
- datetime(2003, 9, 25, 10, 36, 28, 500000))
- def testHourWithLettersStrip1(self):
- self.assertEqual(parse("10h36m28s", default=self.default),
- datetime(2003, 9, 25, 10, 36, 28))
- def testHourWithLettersStrip1(self):
- self.assertEqual(parse("10h36m", default=self.default),
- datetime(2003, 9, 25, 10, 36))
- def testHourWithLettersStrip2(self):
- self.assertEqual(parse("10h", default=self.default),
- datetime(2003, 9, 25, 10))
- def testHourAmPm1(self):
- self.assertEqual(parse("10h am", default=self.default),
- datetime(2003, 9, 25, 10))
- def testHourAmPm2(self):
- self.assertEqual(parse("10h pm", default=self.default),
- datetime(2003, 9, 25, 22))
- def testHourAmPm3(self):
- self.assertEqual(parse("10am", default=self.default),
- datetime(2003, 9, 25, 10))
- def testHourAmPm4(self):
- self.assertEqual(parse("10pm", default=self.default),
- datetime(2003, 9, 25, 22))
- def testHourAmPm5(self):
- self.assertEqual(parse("10:00 am", default=self.default),
- datetime(2003, 9, 25, 10))
- def testHourAmPm6(self):
- self.assertEqual(parse("10:00 pm", default=self.default),
- datetime(2003, 9, 25, 22))
- def testHourAmPm7(self):
- self.assertEqual(parse("10:00am", default=self.default),
- datetime(2003, 9, 25, 10))
- def testHourAmPm8(self):
- self.assertEqual(parse("10:00pm", default=self.default),
- datetime(2003, 9, 25, 22))
- def testHourAmPm9(self):
- self.assertEqual(parse("10:00a.m", default=self.default),
- datetime(2003, 9, 25, 10))
- def testHourAmPm10(self):
- self.assertEqual(parse("10:00p.m", default=self.default),
- datetime(2003, 9, 25, 22))
- def testHourAmPm11(self):
- self.assertEqual(parse("10:00a.m.", default=self.default),
- datetime(2003, 9, 25, 10))
- def testHourAmPm12(self):
- self.assertEqual(parse("10:00p.m.", default=self.default),
- datetime(2003, 9, 25, 22))
- def testPertain(self):
- self.assertEqual(parse("Sep 03", default=self.default),
- datetime(2003, 9, 3))
- self.assertEqual(parse("Sep of 03", default=self.default),
- datetime(2003, 9, 25))
- def testWeekdayAlone(self):
- self.assertEqual(parse("Wed", default=self.default),
- datetime(2003, 10, 1))
- def testLongWeekday(self):
- self.assertEqual(parse("Wednesday", default=self.default),
- datetime(2003, 10, 1))
- def testLongMonth(self):
- self.assertEqual(parse("October", default=self.default),
- datetime(2003, 10, 25))
-
- def testZeroYear(self):
- self.assertEqual(parse("31-Dec-00", default=self.default),
- datetime(2000, 12, 31))
- def testFuzzy(self):
- s = "Today is 25 of September of 2003, exactly " \
- "at 10:49:41 with timezone -03:00."
- self.assertEqual(parse(s, fuzzy=True),
- datetime(2003, 9, 25, 10, 49, 41,
- tzinfo=self.brsttz))
- def testExtraSpace(self):
- self.assertEqual(parse(" July 4 , 1976 12:01:02 am "),
- datetime(1976, 7, 4, 0, 1, 2))
- def testRandomFormat1(self):
- self.assertEqual(parse("Wed, July 10, '96"),
- datetime(1996, 7, 10, 0, 0))
- def testRandomFormat2(self):
- self.assertEqual(parse("1996.07.10 AD at 15:08:56 PDT",
- ignoretz=True),
- datetime(1996, 7, 10, 15, 8, 56))
- def testRandomFormat3(self):
- self.assertEqual(parse("1996.July.10 AD 12:08 PM"),
- datetime(1996, 7, 10, 12, 8))
- def testRandomFormat4(self):
- self.assertEqual(parse("Tuesday, April 12, 1952 AD 3:30:42pm PST",
- ignoretz=True),
- datetime(1952, 4, 12, 15, 30, 42))
- def testRandomFormat5(self):
- self.assertEqual(parse("November 5, 1994, 8:15:30 am EST",
- ignoretz=True),
- datetime(1994, 11, 5, 8, 15, 30))
- def testRandomFormat6(self):
- self.assertEqual(parse("1994-11-05T08:15:30-05:00",
- ignoretz=True),
- datetime(1994, 11, 5, 8, 15, 30))
- def testRandomFormat7(self):
- self.assertEqual(parse("1994-11-05T08:15:30Z",
- ignoretz=True),
- datetime(1994, 11, 5, 8, 15, 30))
- def testRandomFormat8(self):
- self.assertEqual(parse("July 4, 1976"), datetime(1976, 7, 4))
- def testRandomFormat9(self):
- self.assertEqual(parse("7 4 1976"), datetime(1976, 7, 4))
- def testRandomFormat10(self):
- self.assertEqual(parse("4 jul 1976"), datetime(1976, 7, 4))
- def testRandomFormat11(self):
- self.assertEqual(parse("7-4-76"), datetime(1976, 7, 4))
- def testRandomFormat12(self):
- self.assertEqual(parse("19760704"), datetime(1976, 7, 4))
- def testRandomFormat13(self):
- self.assertEqual(parse("0:01:02", default=self.default),
- datetime(2003, 9, 25, 0, 1, 2))
- def testRandomFormat14(self):
- self.assertEqual(parse("12h 01m02s am", default=self.default),
- datetime(2003, 9, 25, 0, 1, 2))
- def testRandomFormat15(self):
- self.assertEqual(parse("0:01:02 on July 4, 1976"),
- datetime(1976, 7, 4, 0, 1, 2))
- def testRandomFormat16(self):
- self.assertEqual(parse("0:01:02 on July 4, 1976"),
- datetime(1976, 7, 4, 0, 1, 2))
- def testRandomFormat17(self):
- self.assertEqual(parse("1976-07-04T00:01:02Z", ignoretz=True),
- datetime(1976, 7, 4, 0, 1, 2))
- def testRandomFormat18(self):
- self.assertEqual(parse("July 4, 1976 12:01:02 am"),
- datetime(1976, 7, 4, 0, 1, 2))
- def testRandomFormat19(self):
- self.assertEqual(parse("Mon Jan 2 04:24:27 1995"),
- datetime(1995, 1, 2, 4, 24, 27))
- def testRandomFormat20(self):
- self.assertEqual(parse("Tue Apr 4 00:22:12 PDT 1995", ignoretz=True),
- datetime(1995, 4, 4, 0, 22, 12))
- def testRandomFormat21(self):
- self.assertEqual(parse("04.04.95 00:22"),
- datetime(1995, 4, 4, 0, 22))
- def testRandomFormat22(self):
- self.assertEqual(parse("Jan 1 1999 11:23:34.578"),
- datetime(1999, 1, 1, 11, 23, 34, 578000))
- def testRandomFormat23(self):
- self.assertEqual(parse("950404 122212"),
- datetime(1995, 4, 4, 12, 22, 12))
- def testRandomFormat24(self):
- self.assertEqual(parse("0:00 PM, PST", default=self.default,
- ignoretz=True),
- datetime(2003, 9, 25, 12, 0))
- def testRandomFormat25(self):
- self.assertEqual(parse("12:08 PM", default=self.default),
- datetime(2003, 9, 25, 12, 8))
- def testRandomFormat26(self):
- self.assertEqual(parse("5:50 A.M. on June 13, 1990"),
- datetime(1990, 6, 13, 5, 50))
- def testRandomFormat27(self):
- self.assertEqual(parse("3rd of May 2001"), datetime(2001, 5, 3))
- def testRandomFormat28(self):
- self.assertEqual(parse("5th of March 2001"), datetime(2001, 3, 5))
- def testRandomFormat29(self):
- self.assertEqual(parse("1st of May 2003"), datetime(2003, 5, 1))
- def testRandomFormat30(self):
- self.assertEqual(parse("01h02m03", default=self.default),
- datetime(2003, 9, 25, 1, 2, 3))
- def testRandomFormat31(self):
- self.assertEqual(parse("01h02", default=self.default),
- datetime(2003, 9, 25, 1, 2))
- def testRandomFormat32(self):
- self.assertEqual(parse("01h02s", default=self.default),
- datetime(2003, 9, 25, 1, 0, 2))
- def testRandomFormat33(self):
- self.assertEqual(parse("01m02", default=self.default),
- datetime(2003, 9, 25, 0, 1, 2))
- def testRandomFormat34(self):
- self.assertEqual(parse("01m02h", default=self.default),
- datetime(2003, 9, 25, 2, 1))
- def testRandomFormat35(self):
- self.assertEqual(parse("2004 10 Apr 11h30m", default=self.default),
- datetime(2004, 4, 10, 11, 30))
- def testIncreasingCTime(self):
- # This test will check 200 different years, every month, every day,
- # every hour, every minute, every second, and every weekday, using
- # a delta of more or less 1 year, 1 month, 1 day, 1 minute and
- # 1 second.
- delta = timedelta(days=365+31+1, seconds=1+60+60*60)
- dt = datetime(1900, 1, 1, 0, 0, 0, 0)
- for i in range(200):
- self.assertEqual(parse(dt.ctime()), dt)
- dt += delta
- def testIncreasingISOFormat(self):
- delta = timedelta(days=365+31+1, seconds=1+60+60*60)
- dt = datetime(1900, 1, 1, 0, 0, 0, 0)
- for i in range(200):
- self.assertEqual(parse(dt.isoformat()), dt)
- dt += delta
- def testMicrosecondsPrecisionError(self):
- # Skip found out that sad precision problem. :-(
- dt1 = parse("00:11:25.01")
- dt2 = parse("00:12:10.01")
- self.assertEquals(dt1.microsecond, 10000)
- self.assertEquals(dt2.microsecond, 10000)
- def testMicrosecondPrecisionErrorReturns(self):
- # One more precision issue, discovered by Eric Brown. This should
- # be the last one, as we're no longer using floating points.
- for ms in [100001, 100000, 99999, 99998,
- 10001, 10000, 9999, 9998,
- 1001, 1000, 999, 998,
- 101, 100, 99, 98]:
- dt = datetime(2008, 2, 27, 21, 26, 1, ms)
- self.assertEquals(parse(dt.isoformat()), dt)
- def testHighPrecisionSeconds(self):
- self.assertEquals(parse("20080227T21:26:01.123456789"),
- datetime(2008, 2, 27, 21, 26, 1, 123456))
- def testCustomParserInfo(self):
- # Custom parser info wasn't working, as Michael Elsdörfer discovered.
- from dateutil.parser import parserinfo, parser
- class myparserinfo(parserinfo):
- MONTHS = parserinfo.MONTHS[:]
- MONTHS[0] = ("Foo", "Foo")
- myparser = parser(myparserinfo())
- dt = myparser.parse("01/Foo/2007")
- self.assertEquals(dt, datetime(2007, 1, 1))
- class EasterTest(unittest.TestCase):
- easterlist = [
- # WESTERN ORTHODOX
- (date(1990, 4, 15), date(1990, 4, 15)),
- (date(1991, 3, 31), date(1991, 4, 7)),
- (date(1992, 4, 19), date(1992, 4, 26)),
- (date(1993, 4, 11), date(1993, 4, 18)),
- (date(1994, 4, 3), date(1994, 5, 1)),
- (date(1995, 4, 16), date(1995, 4, 23)),
- (date(1996, 4, 7), date(1996, 4, 14)),
- (date(1997, 3, 30), date(1997, 4, 27)),
- (date(1998, 4, 12), date(1998, 4, 19)),
- (date(1999, 4, 4), date(1999, 4, 11)),
- (date(2000, 4, 23), date(2000, 4, 30)),
- (date(2001, 4, 15), date(2001, 4, 15)),
- (date(2002, 3, 31), date(2002, 5, 5)),
- (date(2003, 4, 20), date(2003, 4, 27)),
- (date(2004, 4, 11), date(2004, 4, 11)),
- (date(2005, 3, 27), date(2005, 5, 1)),
- (date(2006, 4, 16), date(2006, 4, 23)),
- (date(2007, 4, 8), date(2007, 4, 8)),
- (date(2008, 3, 23), date(2008, 4, 27)),
- (date(2009, 4, 12), date(2009, 4, 19)),
- (date(2010, 4, 4), date(2010, 4, 4)),
- (date(2011, 4, 24), date(2011, 4, 24)),
- (date(2012, 4, 8), date(2012, 4, 15)),
- (date(2013, 3, 31), date(2013, 5, 5)),
- (date(2014, 4, 20), date(2014, 4, 20)),
- (date(2015, 4, 5), date(2015, 4, 12)),
- (date(2016, 3, 27), date(2016, 5, 1)),
- (date(2017, 4, 16), date(2017, 4, 16)),
- (date(2018, 4, 1), date(2018, 4, 8)),
- (date(2019, 4, 21), date(2019, 4, 28)),
- (date(2020, 4, 12), date(2020, 4, 19)),
- (date(2021, 4, 4), date(2021, 5, 2)),
- (date(2022, 4, 17), date(2022, 4, 24)),
- (date(2023, 4, 9), date(2023, 4, 16)),
- (date(2024, 3, 31), date(2024, 5, 5)),
- (date(2025, 4, 20), date(2025, 4, 20)),
- (date(2026, 4, 5), date(2026, 4, 12)),
- (date(2027, 3, 28), date(2027, 5, 2)),
- (date(2028, 4, 16), date(2028, 4, 16)),
- (date(2029, 4, 1), date(2029, 4, 8)),
- (date(2030, 4, 21), date(2030, 4, 28)),
- (date(2031, 4, 13), date(2031, 4, 13)),
- (date(2032, 3, 28), date(2032, 5, 2)),
- (date(2033, 4, 17), date(2033, 4, 24)),
- (date(2034, 4, 9), date(2034, 4, 9)),
- (date(2035, 3, 25), date(2035, 4, 29)),
- (date(2036, 4, 13), date(2036, 4, 20)),
- (date(2037, 4, 5), date(2037, 4, 5)),
- (date(2038, 4, 25), date(2038, 4, 25)),
- (date(2039, 4, 10), date(2039, 4, 17)),
- (date(2040, 4, 1), date(2040, 5, 6)),
- (date(2041, 4, 21), date(2041, 4, 21)),
- (date(2042, 4, 6), date(2042, 4, 13)),
- (date(2043, 3, 29), date(2043, 5, 3)),
- (date(2044, 4, 17), date(2044, 4, 24)),
- (date(2045, 4, 9), date(2045, 4, 9)),
- (date(2046, 3, 25), date(2046, 4, 29)),
- (date(2047, 4, 14), date(2047, 4, 21)),
- (date(2048, 4, 5), date(2048, 4, 5)),
- (date(2049, 4, 18), date(2049, 4, 25)),
- (date(2050, 4, 10), date(2050, 4, 17)),
- ]
- def testEaster(self):
- for western, orthodox in self.easterlist:
- self.assertEqual(western, easter(western.year, EASTER_WESTERN))
- self.assertEqual(orthodox, easter(orthodox.year, EASTER_ORTHODOX))
- class TZTest(unittest.TestCase):
- TZFILE_EST5EDT = """
- VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAADrAAAABAAAABCeph5wn7rrYKCGAHCh
- ms1gomXicKOD6eCkaq5wpTWnYKZTyvCnFYlgqDOs8Kj+peCqE47wqt6H4KvzcPCsvmngrdNS8K6e
- S+CvszTwsH4t4LGcUXCyZ0pgs3wzcLRHLGC1XBVwticOYLc793C4BvBguRvZcLnm0mC7BPXwu8a0
- YLzk1/C9r9DgvsS58L+PsuDApJvwwW+U4MKEffDDT3bgxGRf8MUvWODGTXxwxw864MgtXnDI+Fdg
- yg1AcMrYOWDLiPBw0iP0cNJg++DTdeTw1EDd4NVVxvDWIL/g1zWo8NgAoeDZFYrw2eCD4Nr+p3Db
- wGXg3N6JcN2pgmDevmtw34lkYOCeTXDhaUZg4n4vcONJKGDkXhFw5Vcu4OZHLfDnNxDg6CcP8OkW
- 8uDqBvHw6vbU4Ovm0/Ds1rbg7ca18O6/02Dvr9Jw8J+1YPGPtHDyf5dg82+WcPRfeWD1T3hw9j9b
- YPcvWnD4KHfg+Q88cPoIWeD6+Fjw++g74PzYOvD9yB3g/rgc8P+n/+AAl/7wAYfh4AJ34PADcP5g
- BGD9cAVQ4GAGQN9wBzDCYAeNGXAJEKRgCa2U8ArwhmAL4IVwDNmi4A3AZ3AOuYTgD6mD8BCZZuAR
- iWXwEnlI4BNpR/AUWSrgFUkp8BY5DOAXKQvwGCIpYBkI7fAaAgtgGvIKcBvh7WAc0exwHcHPYB6x
- znAfobFgIHYA8CGBk2AiVeLwI2qv4CQ1xPAlSpHgJhWm8Ccqc+An/sNwKQpV4CnepXAq6jfgK76H
- cCzTVGAtnmlwLrM2YC9+S3AwkxhgMWdn8DJy+mAzR0nwNFLcYDUnK/A2Mr5gNwcN8Dgb2uA45u/w
- Ofu84DrG0fA7257gPK/ucD27gOA+j9BwP5ti4EBvsnBBhH9gQk+UcENkYWBEL3ZwRURDYEYPWHBH
- JCVgR/h08EkEB2BJ2FbwSuPpYEu4OPBMzQXgTZga8E6s5+BPd/zwUIzJ4FFhGXBSbKvgU0D7cFRM
- jeBVIN1wVixv4FcAv3BYFYxgWOChcFn1bmBawINwW9VQYFypn/BdtTJgXomB8F+VFGBgaWPwYX4w
- 4GJJRfBjXhLgZCkn8GU99OBmEkRwZx3W4GfyJnBo/bjgadIIcGrdmuBrsepwbMa3YG2RzHBupplg
- b3GucHCGe2BxWsrwcmZdYHM6rPB0Rj9gdRqO8HYvW+B2+nDweA894HjaUvB57x/gero08HvPAeB8
- o1Fwfa7j4H6DM3B/jsXgAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAB
- AAEAAQABAgMBAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAB
- AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA
- AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAB
- AAEAAQABAAEAAQABAAEAAQABAAEAAf//x8ABAP//ubAABP//x8ABCP//x8ABDEVEVABFU1QARVdU
- AEVQVAAAAAABAAAAAQ==
- """
- EUROPE_HELSINKI = """
- VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAAAAAAAB1AAAABQAAAA2kc28Yy85RYMy/hdAV
- I+uQFhPckBcDzZAX876QGOOvkBnToJAaw5GQG7y9EBysrhAdnJ8QHoyQEB98gRAgbHIQIVxjECJM
- VBAjPEUQJCw2ECUcJxAmDBgQJwVDkCf1NJAo5SWQKdUWkCrFB5ArtPiQLKTpkC2U2pAuhMuQL3S8
- kDBkrZAxXdkQMnK0EDM9uxA0UpYQNR2dEDYyeBA2/X8QOBuUkDjdYRA5+3aQOr1DEDvbWJA8pl+Q
- Pbs6kD6GQZA/mxyQQGYjkEGEORBCRgWQQ2QbEEQl55BFQ/0QRgXJkEcj3xBH7uYQSQPBEEnOyBBK
- 46MQS66qEEzMv5BNjowQTqyhkE9ubhBQjIOQUVeKkFJsZZBTN2yQVExHkFUXTpBWLCmQVvcwkFgV
- RhBY1xKQWfUoEFq29JBb1QoQXKAREF207BBef/MQX5TOEGBf1RBhfeqQYj+3EGNdzJBkH5kQZT2u
- kGYItZBnHZCQZ+iXkGj9cpBpyHmQat1UkGuoW5BsxnEQbYg9kG6mUxBvaB+QcIY1EHFRPBByZhcQ
- czEeEHRF+RB1EQAQdi8VkHbw4hB4DveQeNDEEHnu2ZB6sKYQe867kHyZwpB9rp2QfnmkkH+Of5AC
- AQIDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQD
- BAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAME
- AwQAABdoAAAAACowAQQAABwgAAkAACowAQQAABwgAAlITVQARUVTVABFRVQAAAAAAQEAAAABAQ==
- """
- NEW_YORK = """
- VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAABcAAADrAAAABAAAABCeph5wn7rrYKCGAHCh
- ms1gomXicKOD6eCkaq5wpTWnYKZTyvCnFYlgqDOs8Kj+peCqE47wqt6H4KvzcPCsvmngrdNS8K6e
- S+CvszTwsH4t4LGcUXCyZ0pgs3wzcLRHLGC1XBVwticOYLc793C4BvBguRvZcLnm0mC7BPXwu8a0
- YLzk1/C9r9DgvsS58L+PsuDApJvwwW+U4MKEffDDT3bgxGRf8MUvWODGTXxwxw864MgtXnDI+Fdg
- yg1AcMrYOWDLiPBw0iP0cNJg++DTdeTw1EDd4NVVxvDWIL/g1zWo8NgAoeDZFYrw2eCD4Nr+p3Db
- wGXg3N6JcN2pgmDevmtw34lkYOCeTXDhaUZg4n4vcONJKGDkXhFw5Vcu4OZHLfDnNxDg6CcP8OkW
- 8uDqBvHw6vbU4Ovm0/Ds1rbg7ca18O6/02Dvr9Jw8J+1YPGPtHDyf5dg82+WcPRfeWD1T3hw9j9b
- YPcvWnD4KHfg+Q88cPoIWeD6+Fjw++g74PzYOvD9yB3g/rgc8P+n/+AAl/7wAYfh4AJ34PADcP5g
- BGD9cAVQ4GEGQN9yBzDCYgeNGXMJEKRjCa2U9ArwhmQL4IV1DNmi5Q3AZ3YOuYTmD6mD9xCZZucR
- iWX4EnlI6BNpR/kUWSrpFUkp+RY5DOoXKQv6GCIpaxkI7fsaAgtsGvIKfBvh7Wwc0ex8HcHPbR6x
- zn0fobFtIHYA/SGBk20iVeL+I2qv7iQ1xP4lSpHuJhWm/ycqc+8n/sOAKQpV8CnepYAq6jfxK76H
- gSzTVHItnmmCLrM2cy9+S4MwkxhzMWdoBDJy+nQzR0oENFLcdTUnLAU2Mr51NwcOBjgb2vY45vAG
- Ofu89jrG0gY72572PK/uhj27gPY+j9CGP5ti9kBvsoZBhH92Qk+UhkNkYXZEL3aHRURDd0XzqQdH
- LV/3R9OLB0kNQfdJs20HSu0j90uciYdM1kB3TXxrh062IndPXE2HUJYEd1E8L4dSdeZ3UxwRh1RV
- yHdU+/OHVjWqd1blEAdYHsb3WMTyB1n+qPdapNQHW96K91yEtgddvmz3XmSYB1+eTvdgTbSHYYdr
- d2ItlodjZ013ZA14h2VHL3dl7VqHZycRd2fNPIdpBvN3aa0eh2rm1XdrljsHbM/x9212HQdur9P3
- b1X/B3CPtfdxNeEHcm+X93MVwwd0T3n3dP7fh3Y4lnd23sGHeBh4d3i+o4d5+Fp3ep6Fh3vYPHd8
- fmeHfbged35eSYd/mAB3AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAB
- AAEAAQABAgMBAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAB
- AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA
- AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAB
- AAEAAQABAAEAAQABAAEAAQABAAEAAf//x8ABAP//ubAABP//x8ABCP//x8ABDEVEVABFU1QARVdU
- AEVQVAAEslgAAAAAAQWk7AEAAAACB4YfggAAAAMJZ1MDAAAABAtIhoQAAAAFDSsLhQAAAAYPDD8G
- AAAABxDtcocAAAAIEs6mCAAAAAkVn8qJAAAACheA/goAAAALGWIxiwAAAAwdJeoMAAAADSHa5Q0A
- AAAOJZ6djgAAAA8nf9EPAAAAECpQ9ZAAAAARLDIpEQAAABIuE1ySAAAAEzDnJBMAAAAUM7hIlAAA
- ABU2jBAVAAAAFkO3G5YAAAAXAAAAAQAAAAE=
- """
- TZICAL_EST5EDT = """
- BEGIN:VTIMEZONE
- TZID:US-Eastern
- LAST-MODIFIED:19870101T000000Z
- TZURL:http://zones.stds_r_us.net/tz/US-Eastern
- BEGIN:STANDARD
- DTSTART:19671029T020000
- RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
- TZOFFSETFROM:-0400
- TZOFFSETTO:-0500
- TZNAME:EST
- END:STANDARD
- BEGIN:DAYLIGHT
- DTSTART:19870405T020000
- RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
- TZOFFSETFROM:-0500
- TZOFFSETTO:-0400
- TZNAME:EDT
- END:DAYLIGHT
- END:VTIMEZONE
- """
- def testStrStart1(self):
- self.assertEqual(datetime(2003,4,6,1,59,
- tzinfo=tzstr("EST5EDT")).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,
- tzinfo=tzstr("EST5EDT")).tzname(), "EDT")
- def testStrEnd1(self):
- self.assertEqual(datetime(2003,10,26,0,59,
- tzinfo=tzstr("EST5EDT")).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,
- tzinfo=tzstr("EST5EDT")).tzname(), "EST")
- def testStrStart2(self):
- s = "EST5EDT,4,0,6,7200,10,0,26,7200,3600"
- self.assertEqual(datetime(2003,4,6,1,59,
- tzinfo=tzstr(s)).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,
- tzinfo=tzstr(s)).tzname(), "EDT")
- def testStrEnd2(self):
- s = "EST5EDT,4,0,6,7200,10,0,26,7200,3600"
- self.assertEqual(datetime(2003,10,26,0,59,
- tzinfo=tzstr(s)).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,
- tzinfo=tzstr(s)).tzname(), "EST")
- def testStrStart3(self):
- s = "EST5EDT,4,1,0,7200,10,-1,0,7200,3600"
- self.assertEqual(datetime(2003,4,6,1,59,
- tzinfo=tzstr(s)).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,
- tzinfo=tzstr(s)).tzname(), "EDT")
- def testStrEnd3(self):
- s = "EST5EDT,4,1,0,7200,10,-1,0,7200,3600"
- self.assertEqual(datetime(2003,10,26,0,59,
- tzinfo=tzstr(s)).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,
- tzinfo=tzstr(s)).tzname(), "EST")
- def testStrStart4(self):
- s = "EST5EDT4,M4.1.0/02:00:00,M10-5-0/02:00"
- self.assertEqual(datetime(2003,4,6,1,59,
- tzinfo=tzstr(s)).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,
- tzinfo=tzstr(s)).tzname(), "EDT")
- def testStrEnd4(self):
- s = "EST5EDT4,M4.1.0/02:00:00,M10-5-0/02:00"
- self.assertEqual(datetime(2003,10,26,0,59,
- tzinfo=tzstr(s)).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,
- tzinfo=tzstr(s)).tzname(), "EST")
- def testStrStart5(self):
- s = "EST5EDT4,95/02:00:00,298/02:00"
- self.assertEqual(datetime(2003,4,6,1,59,
- tzinfo=tzstr(s)).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,
- tzinfo=tzstr(s)).tzname(), "EDT")
- def testStrEnd5(self):
- s = "EST5EDT4,95/02:00:00,298/02"
- self.assertEqual(datetime(2003,10,26,0,59,
- tzinfo=tzstr(s)).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,
- tzinfo=tzstr(s)).tzname(), "EST")
- def testStrStart6(self):
- s = "EST5EDT4,J96/02:00:00,J299/02:00"
- self.assertEqual(datetime(2003,4,6,1,59,
- tzinfo=tzstr(s)).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,
- tzinfo=tzstr(s)).tzname(), "EDT")
- def testStrEnd6(self):
- s = "EST5EDT4,J96/02:00:00,J299/02"
- self.assertEqual(datetime(2003,10,26,0,59,
- tzinfo=tzstr(s)).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,
- tzinfo=tzstr(s)).tzname(), "EST")
- def testStrCmp1(self):
- self.assertEqual(tzstr("EST5EDT"),
- tzstr("EST5EDT4,M4.1.0/02:00:00,M10-5-0/02:00"))
-
- def testStrCmp2(self):
- self.assertEqual(tzstr("EST5EDT"),
- tzstr("EST5EDT,4,1,0,7200,10,-1,0,7200,3600"))
- def testRangeCmp1(self):
- self.assertEqual(tzstr("EST5EDT"),
- tzrange("EST", -18000, "EDT", -14400,
- relativedelta(hours=+2,
- month=4, day=1,
- weekday=SU(+1)),
- relativedelta(hours=+1,
- month=10, day=31,
- weekday=SU(-1))))
- def testRangeCmp2(self):
- self.assertEqual(tzstr("EST5EDT"),
- tzrange("EST", -18000, "EDT"))
- def testFileStart1(self):
- tz = tzfile(StringIO(base64.decodestring(self.TZFILE_EST5EDT)))
- self.assertEqual(datetime(2003,4,6,1,59,tzinfo=tz).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,tzinfo=tz).tzname(), "EDT")
-
- def testFileEnd1(self):
- tz = tzfile(StringIO(base64.decodestring(self.TZFILE_EST5EDT)))
- self.assertEqual(datetime(2003,10,26,0,59,tzinfo=tz).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,tzinfo=tz).tzname(), "EST")
- def testZoneInfoFileStart1(self):
- tz = zoneinfo.gettz("EST5EDT")
- self.assertEqual(datetime(2003,4,6,1,59,tzinfo=tz).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,tzinfo=tz).tzname(), "EDT")
- def testZoneInfoFileEnd1(self):
- tz = zoneinfo.gettz("EST5EDT")
- self.assertEqual(datetime(2003,10,26,0,59,tzinfo=tz).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,tzinfo=tz).tzname(), "EST")
- def testZoneInfoOffsetSignal(self):
- utc = gettz("UTC")
- nyc = zoneinfo.gettz("America/New_York")
- t0 = datetime(2007,11,4,0,30, tzinfo=nyc)
- t1 = t0.astimezone(utc)
- t2 = t1.astimezone(nyc)
- self.assertEquals(t0, t2)
- self.assertEquals(nyc.dst(t0), timedelta(hours=1))
- def testICalStart1(self):
- tz = tzical(StringIO(self.TZICAL_EST5EDT)).get()
- self.assertEqual(datetime(2003,4,6,1,59,tzinfo=tz).tzname(), "EST")
- self.assertEqual(datetime(2003,4,6,2,00,tzinfo=tz).tzname(), "EDT")
- def testICalEnd1(self):
- tz = tzical(StringIO(self.TZICAL_EST5EDT)).get()
- self.assertEqual(datetime(2003,10,26,0,59,tzinfo=tz).tzname(), "EDT")
- self.assertEqual(datetime(2003,10,26,1,00,tzinfo=tz).tzname(), "EST")
- def testRoundNonFullMinutes(self):
- # This timezone has an offset of 5992 seconds in 1900-01-01.
- tz = tzfile(StringIO(base64.decodestring(self.EUROPE_HELSINKI)))
- self.assertEquals(str(datetime(1900,1,1,0,0, tzinfo=tz)),
- "1900-01-01 00:00:00+01:40")
- def testLeapCountDecodesProperly(self):
- # This timezone has leapcnt, and failed to decode until
- # Eugene Oden notified about the issue.
- tz = tzfile(StringIO(base64.decodestring(self.NEW_YORK)))
- self.assertEquals(datetime(2007,3,31,20,12).tzname(), None)
- def testBrokenIsDstHandling(self):
- # tzrange._isdst() was using a date() rather than a datetime().
- # Issue reported by Lennart Regebro.
- dt = datetime(2007,8,6,4,10, tzinfo=tzutc())
- self.assertEquals(dt.astimezone(tz=gettz("GMT+2")),
- datetime(2007,8,6,6,10, tzinfo=tzstr("GMT+2")))
- def testGMTHasNoDaylight(self):
- # tzstr("GMT+2") improperly considered daylight saving time.
- # Issue reported by Lennart Regebro.
- dt = datetime(2007,8,6,4,10)
- self.assertEquals(gettz("GMT+2").dst(dt), timedelta(0))
- def testGMTOffset(self):
- # GMT and UTC offsets have inverted signal when compared to the
- # usual TZ variable handling.
- dt = datetime(2007,8,6,4,10, tzinfo=tzutc())
- self.assertEquals(dt.astimezone(tz=tzstr("GMT+2")),
- datetime(2007,8,6,6,10, tzinfo=tzstr("GMT+2")))
- self.assertEquals(dt.astimezone(tz=gettz("UTC-2")),
- datetime(2007,8,6,2,10, tzinfo=tzstr("UTC-2")))
- if __name__ == "__main__":
- unittest.main()
- # vim:ts=4:sw=4
|