;ò 2°öBc@sdZdkZdkZdklZdklZlZlZlZye Wne j oeeƒZ nXeee ƒƒZ e djo$e eiieiddƒƒndkZdklZdklZdkZd klZd klZlZlZd klZd klZlZlZd kl Z dk!l"Z"dk!l#Z#dk$l%Z%dk!l&Z&dk!l'Z'l(Z(dei)fd„ƒYZ*dei)fd„ƒYZ+dei)fd„ƒYZ,dei)fd„ƒYZ-d„Z.e djoe/ddddƒndS(so Unit tests for the schooltool.calendar module. $Id: test_cal.py,v 1.2 2004/09/18 23:02:35 dreamcatcher Exp $ N(scurdir(sjoinsabspathsdirnamessplits__main__is framework.py(s DocTestSuite(s ZopeTestCase(spformat(sdates timedeltasdatetime(sStringIO(sdiffsdedentssorted(sEqualsSortedMixin(s DateRange(sPeriod(sparse_datetime(sVEvent(s ICalReadersICalParseErrors TestPeriodcBstZd„Zd„ZRS(NcCsetddddddƒ}tdddddd ƒ}||}t||ƒ}|i|i|ƒ|i|i |ƒ|i|i |ƒt||ƒ}|i|i|ƒ|i|i |ƒ|i|i |ƒ|i||ƒt|t d ƒƒ}|i|i|ƒ|i|i |ƒ|i|i t d ƒƒ|itt||ƒ|itt|| ƒdS( NiÑiiiiiii#ii(sdatetimesdt1sdt2stdsPeriodsp1sselfs assertEqualssstartsendsdurationsp2s timedeltasps assertRaisess ValueError(sselfsp2sp1spsdt2stdsdt1((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pystestOs$ cCsDttdƒtddƒƒ}ttdƒtddƒƒ}ttdƒtddƒƒ}ttdƒtddƒƒ}|i|i |ƒƒ|i|i |ƒƒ|i|i |ƒƒ|i|i |ƒƒ|i|i |ƒ ƒ|i|i |ƒ ƒ|i|i |ƒƒ|i|i |ƒƒ|i|i |ƒƒdS(Ns2004-01-01 12:00:00shoursis2004-01-01 11:30:00s2004-01-01 12:30:00s2004-01-01 11:00:00i( sPeriodsparse_datetimes timedeltasp1sp2sp3sp4sselfsassert_soverlaps(sselfsp2sp3sp1sp4((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pys test_overlapgs"    (s__name__s __module__stests test_overlap(((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pys TestPeriodMs s TestVEventcBsbtZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z RS( NcCs)tƒ}dhddd?hd d@<ƒ|i|id>ƒd?ƒdS(ANsfoosbarsFoosbazsquuxsdtstartsint-foos42sVALUEsINTEGERsint-badsxyzzyi*sInt-Foosdate-foos20030405sDATEs date-bad1s 20030405T1234s date-bad2s2003s date-bad3s200301XXsdate-FooiÓiis datetime-foo1s20030405T060708s DATE-TIMEs datetime-foo2s20030405T060708Zs datetime-bad1s20030405T010203444444s datetime-bad2iiis Datetime-Foo2sdur-foo1s+P11DsDURATIONsdur-foo2s-P2Wsdur-foo3s P1DT2H3M4Ssdur-foo4sPT2Hsdur-bad1sdaysi sDur-Foo2sweeksisDur-Foo3ishourssminutesissecondssDUR-FOO4sunknownsmagics UNKNOWN-TYPE( sVEventsveventsaddsselfs assertEqualssgetOnesNones assertRaisess ValueErrorsdatesdatetimes timedelta(sselfsvevent((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pys test_getOne¨sX % "#""cCsÏtƒ}t|_tdddƒ|_tdddƒ|_tddƒ|_g|_ g|_ |i t |iƒƒtdddƒtdddƒtdddƒgƒt|_|itt |iƒƒdS(NiÓiiisdaysii(sVEventsveventsTrues all_day_eventsdatesdtstartsdtends timedeltasdurationsrdatessexdatessselfs assertEqualsslists iterDatessFalses assertRaisess ValueError(sselfsvevent((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pystest_iterDatesÜs    4 cCs²tƒ}t|_tdddƒ|_tdddƒ|_tddƒ|_tdddƒtdddƒtdddƒg|_ g|_ tdddƒtdddƒtdddƒg}|i t|iƒƒ|ƒtdddƒg|_ tdddƒtdddƒtdddƒg}|i t|iƒƒ|ƒtdddƒtdddƒg|_ tdddƒtdddƒg}|i t|iƒƒ|ƒtdddƒg|_ tdddƒtdddƒg}|i t|iƒƒ|ƒtdddƒ|_tddƒ|_tdddƒtddd ƒg|_ tdddƒtddd ƒtdddƒtddd ƒg}|i t|iƒƒ|ƒdS( NiÓiiisdaysiiiii (sVEventsveventsTrues all_day_eventsdatesdtstartsdtends timedeltasdurationsrdatessexdatessexpectedsselfs assertEqualsslists iterDates(sselfsveventsexpected((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pys test_iterDates_with_rdate_exdateês.  6 33'$$'BcCsgtƒ}|it|iƒtƒ}|iddhdd<ƒ|it|iƒtƒ}|iddhdd<ƒ|iddhdd <ƒ|it|iƒtƒ}|iddhdd<ƒ|iddhdd<ƒ|id d hƒ|it|iƒtƒ}|iddhdd<ƒ|id d hdd<ƒ|it|iƒdS( NsdtstartsxyzzysVALUEsTEXTs20010203sDATEsdtends 20010203T0000s DATE-TIMEsdurationsP1Ds two years(sVEventsveventsselfs assertRaisessICalParseErrorsvalidatesadd(sselfsvevent((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pystest_validate_error_casess$     cCstƒ}|iddhƒ|iddhƒ|iddhdd<ƒ|iƒ|i|iƒ|i|idƒ|i|i t d d d ƒƒ|i|i t d d ƒƒtƒ}|iddhƒ|iddhƒ|iddhdd<ƒ|iddhdd<ƒ|iƒ|i|idƒ|i|iƒ|i|i t d d dƒƒ|i|i t d d dƒƒ|i|i t d d ƒƒtƒ}|iddhƒ|iddhdd<ƒ|iddƒ|iƒ|i|itƒ|i|iƒ|i|i t d d dƒƒ|i|i t d d dƒƒ|i|i t d d ƒƒtƒ}|iddhdd<ƒ|iddhdd<ƒ|it|iƒtƒ}|iddhdd<ƒ|iddhdd<ƒ|it|iƒdS(Nsuids98889898988888988898ssummarysAn eventsdtstarts20010203sVALUEsDATEiÑiisdaysisuid1sAn\nevent\; with backslashessdtends20010205sAn event; with backslashesiisuid2sdurationsP2Ds20010201(sVEventsveventsaddsvalidatesselfsassert_s all_day_events assertEqualsssummarysdtendsdatesdurations timedeltasdtstartsNones assertRaisessICalParseError(sselfsvevent((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pystest_validate_all_day_events sL        c Csotƒ}|iddhƒ|iddƒ|iƒ|i|i ƒ|i|it ddddd d ƒƒ|i|i t ddddd d ƒƒ|i|i t d d ƒƒ|i|i gƒtƒ}|idd hƒ|iddƒ|iddƒ|iƒ|i|i ƒ|i|it ddddd d ƒƒ|i|i t dddd ddƒƒ|i|i t d dddddddƒƒtƒ}|iddhƒ|iddƒ|iddƒ|iƒ|i|i ƒ|i|it ddddd d ƒƒ|i|i t dddd ddƒƒ|i|i t d dddddddƒƒtƒ}|iddhƒ|iddƒ|iddƒ|it|iƒtƒ}|iddhƒ|iddƒ|iddƒ|iddƒ|iƒ|i|i t ddd dd d ƒgƒ|i|it ddd dd d ƒgƒdS( Nsuidsuniq3sdtstarts20010203T040506iÑiiiiisdaysisuniq4s20010203T040000sdtends20010204T050102ishourssminutesssecondssuniq5sdurations P1DT1H1M2Ssuniq6s20010203T010203s20010203T010202suniq7srdates20010205T040506sexdates20010206T040506(sVEventsveventsaddsvalidatesselfsassert_s all_day_events assertEqualssdtstartsdatetimesdtendsdurations timedeltasrdatess assertRaisessICalParseErrorsexdates(sselfsvevent((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pys test_validate_not_all_day_eventsLsT  ((  ((  ((   +c Cs°tƒ}|iddƒ|iddƒ|iddhdd<ƒ|iddhdd<ƒ|id |itƒ}td d d d d dƒtd d dd d dƒtd d ddddƒtd d dƒt td d dƒtd d dƒƒg}|i ||t t|ƒt|ƒƒƒtƒ}|iddhdd<ƒ|it|id |itƒtƒ}|iddhdd<ƒ|it|id|itƒtƒ}|iddhdd<ƒ|id |itƒ}td d dƒg}|i ||t t|ƒt|ƒƒƒtƒ}|iddhdd<ƒ|it|id |itƒtƒ}|iddhdd<ƒ|it|id |itƒdS(Nsrdates20010205T040506s 20010206T040506,20010207T000000Zs20010208sVALUEsDATEs20010209T000000/20010210T000000sPERIODsRDATEiÑiiiiiiii i sTEXTsexdates20010205T040506/P1DsEXDATEs DATE-TIME(sVEventsveventsadds_extractListOfDatess rdate_typessFalsesrdatessdatetimesdatesPeriodsexpectedsselfs assertEqualsdiffspformats assertRaisessICalParseErrors exdate_typessTrue(sselfsveventsrdatessexpected((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pystest_extractListOfDates|sB             ( s__name__s __module__stest_adds test_hasProps test__getTypes test_getOnestest_iterDatess test_iterDates_with_rdate_exdatestest_validate_error_casesstest_validate_all_day_eventss test_validate_not_all_day_eventsstest_extractListOfDates(((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pys TestVEvent€s   4    , 0sTestICalReadercBs/tZedƒZd„Zd„Zd„ZRS(NsÊ BEGIN:VCALENDAR VERSION :2.0 PRODID :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN METHOD :PUBLISH BEGIN:VEVENT UID :956630271 SUMMARY :Christmas Day CLASS :PUBLIC X-MOZILLA-ALARM-DEFAULT-UNITS :minutes X-MOZILLA-ALARM-DEFAULT-LENGTH :15 X-MOZILLA-RECUR-DEFAULT-UNITS :weeks X-MOZILLA-RECUR-DEFAULT-INTERVAL :1 DTSTART ;VALUE=DATE :20031225 DTEND ;VALUE=DATE :20031226 DTSTAMP :20020430T114937Z END:VEVENT END:VCALENDAR BEGIN:VCALENDAR VERSION :2.0 PRODID :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN METHOD :PUBLISH BEGIN:VEVENT UID :911737808 SUMMARY :Boxing Day CLASS :PUBLIC X-MOZILLA-ALARM-DEFAULT-UNITS :minutes X-MOZILLA-ALARM-DEFAULT-LENGTH :15 X-MOZILLA-RECUR-DEFAULT-UNITS :weeks X-MOZILLA-RECUR-DEFAULT-INTERVAL :1 DTSTART ;VALUE=DATE :20030501 DTSTAMP :20020430T114937Z END:VEVENT BEGIN:VEVENT UID :9566302733 DTSTART;VALUE=DATE:20031225 SUMMARY:Christmas again! END:VEVENT END:VCALENDAR cCs³t|iƒ}t|ƒ}t|iƒƒ}|i t |ƒdƒ|d}|i |i dƒdƒ|i |i dƒt dddƒƒ|i |it dddƒƒ|i |i d ƒt ddd ƒƒ|i |it ddd ƒƒ|i |i d ƒd ƒ|d }|i |i dƒt ddd ƒƒ|i |it ddd ƒƒ|i |i d ƒdƒ|d}|i |i dƒt dddƒƒ|i |it dddƒƒ|i |i d ƒdƒtttddƒdƒ}t|ƒ}t|iƒƒ}|iƒ|i t |ƒdƒ|d}|i |i dƒtdddddƒƒ|i |itdddddƒƒ|i |itdd ƒƒ|i |i d ƒtdddddƒƒ|i |itdddddƒƒ|i |i d ƒdƒ|d }|i |i d ƒdƒ|i |i dƒtdddddƒƒ|i |itdddddƒƒ|i |i dƒtdd ƒƒ|i |i d ƒtƒ|i |itdddd dƒƒ|d}|i |i d ƒd!ƒ|i |i dƒtddd"d#dƒƒ|i |itddd"d#dƒƒ|i |i dƒtdd ƒƒ|i |i d ƒtƒ|i |itddd"d$dƒƒtttd%ƒƒƒ}t|iƒƒ}|it |ƒd ƒ|d}|i|idƒƒ|i|id&ƒ ƒtttd'ƒƒƒ}|itt|iƒƒtttd(ƒƒƒ}|itt|iƒƒtttd)ƒƒƒ}|itt|iƒƒtttd*ƒƒƒ}|itt|iƒƒtttd+ƒƒƒ}|itt|iƒƒtttd,ƒƒƒ}|itt|iƒƒtttd-ƒƒƒ}|itt|iƒƒttd.ƒƒ}|it|iƒƒgƒdS(/Niisx-mozilla-recur-default-unitssweekssdtstartiÓi isdtendissummarys Christmas Dayiis Boxing DayisChristmas again!sdatas example.icssriÒi iishoursisCoffee with Jasons Code Reviewi isdurationi s Dinner with Tiiisb BEGIN:VCALENDAR BEGIN:VEVENT UID :956630271 DTSTART;VALUE=DATE:20010203 BEGIN:VALARM X-PROP:foo END:VALARM END:VEVENT END:VCALENDAR sx-propsŠ BEGIN:VCALENDAR BEGIN:VEVENT DTSTART;VALUE=DATE:20010203 s BEGIN:VCALENDAR BEGIN:VEVENT UID :956630271 DTSTART;VALUE=DATE:20010203 END:VCALENDAR END:VEVENT sz BEGIN:VCALENDAR END:VCALENDAR X-PROP:foo s› BEGIN:VCALENDAR END:VCALENDAR BEGIN:VEVENT END:VEVENT sì BEGIN:VCALENDAR BEGIN:VEVENT DTSTART;VALUE=DATE:20010203 END:VEVENT END:VCALENDAR END:UNIVERSE sE DTSTART;VALUE=DATE:20010203 sA This is just plain text s(sStringIOsselfs example_icalsfiles ICalReadersreaderslists iterEventssresults assertEqualslensveventsgetOnesdatesdtstartsdtendsopensjoins_prefixsclosesdatetimesdurations timedeltasNonesdedents assertEqualssassert_shasProps assertRaisessICalParseError(sselfsveventsresultsfilesreader((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pystest_iterEventsósœ  %% % %   %%         c CsRtdƒ}t|ƒ}|it|iƒƒddhfddhddkey1 :value1 key2 ;VALUE=foo :value2 key3;VALUE=bar:value3 sKEY1svalue1sKEY2svalue2sVALUEsFOOsKEY3svalue3sBARs8key1:value1 key2;VALUE=foo:value2 key3;VALUE=bar:value3 skey1:value:with:colons:in:it svalue:with:colons:in:itske y1 :value 1 .s value 1 .(sStringIOsfiles ICalReadersreadersselfs assertEqualslists_iterRow(sselfsfilesreader((s\/mnt/gmirror/ports/www/zope-calendaring/work/Calendaring-0.3.0/Calendaring/tests/test_cal.pys test_iterRowys  =  =  c Cs>ti}|i|dƒddhfƒ|i|dƒddhfƒ|i|dƒddhfƒ|it|dƒ|it|d ƒ|it|d ƒ|i|d ƒddhd d