[CalendarServer-changes] [15130] CalDAVTester/trunk

source_changes at macosforge.org source_changes at macosforge.org
Thu Sep 17 11:04:16 PDT 2015


Revision: 15130
          http://trac.calendarserver.org//changeset/15130
Author:   cdaboo at apple.com
Date:     2015-09-17 11:04:16 -0700 (Thu, 17 Sep 2015)
Log Message:
-----------
New RSCALE tests.

Modified Paths:
--------------
    CalDAVTester/trunk/README.txt
    CalDAVTester/trunk/scripts/tests/CalDAV/rscale.xml
    CalDAVTester/trunk/verifiers/freeBusy.py

Added Paths:
-----------
    CalDAVTester/trunk/Resource/CalDAV/rscale/bad/
    CalDAVTester/trunk/Resource/CalDAV/rscale/bad/1.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/bad/2.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/1.xml
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/2.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/3.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/4.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/5.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/1.xml
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/2.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/3.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/4.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/5.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/
    CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/1.xml
    CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/2.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/1.xml
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/2.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/3.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/4.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/5.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/1.xml
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/2.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/3.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/4.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/5.ics
    CalDAVTester/trunk/Resource/CalDAV/rscale/supported/
    CalDAVTester/trunk/Resource/CalDAV/rscale/supported/1.xml

Removed Paths:
-------------
    CalDAVTester/trunk/Resource/CalDAV/rscale/1.ics

Modified: CalDAVTester/trunk/README.txt
===================================================================
--- CalDAVTester/trunk/README.txt	2015-09-17 17:55:04 UTC (rev 15129)
+++ CalDAVTester/trunk/README.txt	2015-09-17 18:04:16 UTC (rev 15130)
@@ -535,6 +535,10 @@
 		A set of iCalendar PERIOD values for FBTYPE=BUSY-UNAVAILABLE
 		periods expected in the response.
 	
+	Argument: 'duration'
+		If present the period values being checked use duration rather then
+		end time.
+	
 	Example:
 	
 	<verify>

Deleted: CalDAVTester/trunk/Resource/CalDAV/rscale/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/1.ics	2015-09-17 17:55:04 UTC (rev 15129)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/1.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -1,12 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//PYVOBJECT//NONSGML Version 1//EN
-BEGIN:VEVENT
-UID:$uid1:
-DTSTART;VALUE=DATE:$now.year.1:0427
-DURATION:P1DT
-DTSTAMP:20051222T205953Z
-SUMMARY:event 1
-RRULE:RSCALE=CHINESE;FREQ=YEARLY
-END:VEVENT
-END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/bad/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/bad/1.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/bad/1.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:$now.year.1:0427
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=FOOBAR;FREQ=YEARLY
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/bad/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/bad/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/bad/2.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:$now.year.1:0427
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FOOBAR
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/1.xml	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<C:free-busy-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+<C:time-range start="20160101T000000Z" end="20170101T000000Z"/>
+</C:free-busy-query>

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/2.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160308
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=CHINESE;FREQ=MONTHLY;BYMONTHDAY=30;SKIP=OMIT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/3.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160308
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=CHINESE;FREQ=MONTHLY;BYMONTHDAY=30;SKIP=FORWARD
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/4.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160308
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=CHINESE;FREQ=MONTHLY;BYMONTHDAY=30;SKIP=BACKWARD
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/5.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthday/5.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160308
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=CHINESE;FREQ=MONTHLY;BYMONTHDAY=30
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/1.xml	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<C:free-busy-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+<C:time-range start="20160101T000000Z" end="20170101T000000Z"/>
+</C:free-busy-query>

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/2.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160109
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=CHINESE;FREQ=MONTHLY;SKIP=OMIT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/3.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160109
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=CHINESE;FREQ=MONTHLY;SKIP=FORWARD
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/4.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160109
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=CHINESE;FREQ=MONTHLY;SKIP=BACKWARD
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/5.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/chinese/monthly/5.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160109
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=CHINESE;FREQ=MONTHLY
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/1.xml	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<C:free-busy-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+<C:time-range start="20150101T000000Z" end="20170101T000000Z"/>
+</C:free-busy-query>

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/ethiopic/2.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20140910
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=ETHIOPIC;FREQ=YEARLY;BYMONTH=13;BYMONTHDAY=-1;COUNT=6
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/1.xml	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<C:free-busy-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+<C:time-range start="20160101T000000Z" end="20170101T000000Z"/>
+</C:free-busy-query>

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/2.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160131
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=MONTHLY;SKIP=OMIT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/3.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160131
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=MONTHLY;SKIP=FORWARD
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/4.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160131
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=MONTHLY;SKIP=BACKWARD
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/5.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/monthly/5.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160131
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=MONTHLY
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/1.xml	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<C:free-busy-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+<C:time-range start="20160101T000000Z" end="20200601T000000Z"/>
+</C:free-busy-query>

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/2.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160229
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=OMIT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/3.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160229
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/4.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160229
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=BACKWARD
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/5.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/gregorian/yearly/5.ics	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,12 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;VALUE=DATE:20160229
+DURATION:P1DT
+DTSTAMP:20051222T205953Z
+SUMMARY:event 1
+RRULE:RSCALE=GREGORIAN;FREQ=YEARLY
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/rscale/supported/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/rscale/supported/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/rscale/supported/1.xml	2015-09-17 18:04:16 UTC (rev 15130)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+<D:prop>
+<C:supported-rscale-set/>
+</D:prop>
+</D:propfind>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/rscale.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/rscale.xml	2015-09-17 17:55:04 UTC (rev 15129)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/rscale.xml	2015-09-17 18:04:16 UTC (rev 15130)
@@ -23,24 +23,109 @@
 
 	<require-feature>
 		<feature>caldav</feature>
+		<feature>rscale</feature>
 	</require-feature>
 
 	<start/>
 	
-	<test-suite name='PUT VEVENT'>
+	<test-suite name='PROPFIND supported-rscale-set'>
 		<test name='1'>
-			<description>PUT event with RSCALE</description>
+			<description>PROPFIND on home resource</description>
+			<request>
+				<method>PROPFIND</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/supported/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{$CALDAV:}supported-rscale-set/{$CALDAV:}supported-rscale[=GREGORIAN]</value>
+						<value>$verify-property-prefix:/{$CALDAV:}supported-rscale-set/{$CALDAV:}supported-rscale[=CHINESE]</value>
+					</arg>
+				</verify>
+			</request>
+			<request>
+				<method>PROPFIND</method>
+				<ruri>$calendarpath1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/supported/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{$CALDAV:}supported-rscale-set/{$CALDAV:}supported-rscale[=GREGORIAN]</value>
+						<value>$verify-property-prefix:/{$CALDAV:}supported-rscale-set/{$CALDAV:}supported-rscale[=CHINESE]</value>
+					</arg>
+				</verify>
+			</request>
+			<request>
+				<method>PROPFIND</method>
+				<ruri>$inboxpath1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/supported/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{$CALDAV:}supported-rscale-set/{$CALDAV:}supported-rscale[=GREGORIAN]</value>
+						<value>$verify-property-prefix:/{$CALDAV:}supported-rscale-set/{$CALDAV:}supported-rscale[=CHINESE]</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Bad data'>
+		<test name='1'>
+			<description>PUT event with invalid RSCALE value</description>
 			<request end-delete='yes'>
 				<method>PUT</method>
 				<ruri>$calendarpath1:/1.ics</ruri>
 				<data>
 					<content-type>text/calendar; charset=utf-8</content-type>
-					<filepath>Resource/CalDAV/rscale/1.ics</filepath>
+					<filepath>Resource/CalDAV/rscale/bad/1.ics</filepath>
 				</data>
 				<verify>
 					<callback>prepostcondition</callback>
 					<arg>
 						<name>error</name>
+						<value>{urn:ietf:params:xml:ns:caldav}supported-rscale</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>PUT event with invalid SKIP value</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/bad/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>prepostcondition</callback>
+					<arg>
+						<name>error</name>
 						<value>{urn:ietf:params:xml:ns:caldav}valid-calendar-data</value>
 					</arg>
 				</verify>
@@ -48,6 +133,676 @@
 		</test>
 	</test-suite>
 
+	<test-suite name='Gregorian Monthly Skip'>
+		<test name='1'>
+			<description>PUT event Gregorian;Monthly;SKIP=OMIT</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/monthly/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/monthly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160131T000000Z/P1D</value>
+						<value>20160331T000000Z/P1D</value>
+						<value>20160531T000000Z/P1D</value>
+						<value>20160731T000000Z/P1D</value>
+						<value>20160831T000000Z/P1D</value>
+						<value>20161031T000000Z/P1D</value>
+						<value>20161231T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>PUT event Gregorian;Monthly;SKIP=FORWARD</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/monthly/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/monthly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160131T000000Z/P1D</value>
+						<value>20160301T000000Z/P1D</value>
+						<value>20160331T000000Z/P1D</value>
+						<value>20160501T000000Z/P1D</value>
+						<value>20160531T000000Z/P1D</value>
+						<value>20160701T000000Z/P1D</value>
+						<value>20160731T000000Z/P1D</value>
+						<value>20160831T000000Z/P1D</value>
+						<value>20161001T000000Z/P1D</value>
+						<value>20161031T000000Z/P1D</value>
+						<value>20161201T000000Z/P1D</value>
+						<value>20161231T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>PUT event Gregorian;Monthly;SKIP=BACKWARD</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/monthly/4.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/monthly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160131T000000Z/P1D</value>
+						<value>20160229T000000Z/P1D</value>
+						<value>20160331T000000Z/P1D</value>
+						<value>20160430T000000Z/P1D</value>
+						<value>20160531T000000Z/P1D</value>
+						<value>20160630T000000Z/P1D</value>
+						<value>20160731T000000Z/P1D</value>
+						<value>20160831T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161031T000000Z/P1D</value>
+						<value>20161130T000000Z/P1D</value>
+						<value>20161231T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>PUT event Gregorian;Monthly;SKIP default</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/monthly/5.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/monthly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160131T000000Z/P1D</value>
+						<value>20160331T000000Z/P1D</value>
+						<value>20160531T000000Z/P1D</value>
+						<value>20160731T000000Z/P1D</value>
+						<value>20160831T000000Z/P1D</value>
+						<value>20161031T000000Z/P1D</value>
+						<value>20161231T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Gregorian Yearly Skip'>
+		<test name='1'>
+			<description>PUT event Gregorian;Yearly;SKIP=OMIT</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/yearly/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/yearly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160229T000000Z/P1D</value>
+						<value>20200229T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>PUT event Gregorian;Yearly;SKIP=FORWARD</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/yearly/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/yearly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160229T000000Z/P1D</value>
+						<value>20170301T000000Z/P1D</value>
+						<value>20180301T000000Z/P1D</value>
+						<value>20190301T000000Z/P1D</value>
+						<value>20200229T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>PUT event Gregorian;Yearly;SKIP=BACKWARD</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/yearly/4.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/yearly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160229T000000Z/P1D</value>
+						<value>20170228T000000Z/P1D</value>
+						<value>20180228T000000Z/P1D</value>
+						<value>20190228T000000Z/P1D</value>
+						<value>20200229T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>PUT event Gregorian;Yearly;SKIP default</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/yearly/5.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/gregorian/yearly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160229T000000Z/P1D</value>
+						<value>20200229T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Chinese Monthly Skip'>
+		<test name='1'>
+			<description>PUT event Chinese;Monthly;SKIP=OMIT</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthly/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160109T000000Z/P1D</value>
+						<value>20160308T000000Z/P1D</value>
+						<value>20160506T000000Z/P1D</value>
+						<value>20160802T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161030T000000Z/P1D</value>
+						<value>20161228T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>PUT event Chinese;Monthly;SKIP=FORWARD</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthly/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160109T000000Z/P1D</value>
+						<value>20160208T000000Z/P1D</value>
+						<value>20160308T000000Z/P1D</value>
+						<value>20160407T000000Z/P1D</value>
+						<value>20160506T000000Z/P1D</value>
+						<value>20160605T000000Z/P1D</value>
+						<value>20160704T000000Z/P1D</value>
+						<value>20160802T000000Z/P1D</value>
+						<value>20160901T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161030T000000Z/P1D</value>
+						<value>20161129T000000Z/P1D</value>
+						<value>20161228T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>PUT event Chinese;Monthly;SKIP=BACKWARD</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthly/4.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160109T000000Z/P1D</value>
+						<value>20160207T000000Z/P1D</value>
+						<value>20160308T000000Z/P1D</value>
+						<value>20160406T000000Z/P1D</value>
+						<value>20160506T000000Z/P1D</value>
+						<value>20160604T000000Z/P1D</value>
+						<value>20160703T000000Z/P1D</value>
+						<value>20160802T000000Z/P1D</value>
+						<value>20160831T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161030T000000Z/P1D</value>
+						<value>20161128T000000Z/P1D</value>
+						<value>20161228T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>PUT event Chinese;Monthly;SKIP default</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthly/5.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthly/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160109T000000Z/P1D</value>
+						<value>20160308T000000Z/P1D</value>
+						<value>20160506T000000Z/P1D</value>
+						<value>20160802T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161030T000000Z/P1D</value>
+						<value>20161228T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Chinese MonthDay Skip'>
+		<test name='1'>
+			<description>PUT event Chinese;MonthDay;SKIP=OMIT</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthday/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthday/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160308T000000Z/P1D</value>
+						<value>20160506T000000Z/P1D</value>
+						<value>20160802T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161030T000000Z/P1D</value>
+						<value>20161228T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>PUT event Chinese;MonthDay;SKIP=FORWARD</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthday/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthday/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160308T000000Z/P1D</value>
+						<value>20160407T000000Z/P1D</value>
+						<value>20160506T000000Z/P1D</value>
+						<value>20160605T000000Z/P1D</value>
+						<value>20160704T000000Z/P1D</value>
+						<value>20160802T000000Z/P1D</value>
+						<value>20160901T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161030T000000Z/P1D</value>
+						<value>20161129T000000Z/P1D</value>
+						<value>20161228T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>PUT event Chinese;MonthDay;SKIP=BACKWARD</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthday/4.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthday/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160308T000000Z/P1D</value>
+						<value>20160406T000000Z/P1D</value>
+						<value>20160506T000000Z/P1D</value>
+						<value>20160604T000000Z/P1D</value>
+						<value>20160703T000000Z/P1D</value>
+						<value>20160802T000000Z/P1D</value>
+						<value>20160831T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161030T000000Z/P1D</value>
+						<value>20161128T000000Z/P1D</value>
+						<value>20161228T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>PUT event Chinese;MonthDay;SKIP default</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthday/5.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/chinese/monthday/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20160308T000000Z/P1D</value>
+						<value>20160506T000000Z/P1D</value>
+						<value>20160802T000000Z/P1D</value>
+						<value>20160930T000000Z/P1D</value>
+						<value>20161030T000000Z/P1D</value>
+						<value>20161228T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Ethiopic, Last Day Of Year'>
+		<test name='1'>
+			<description>PUT event Ethipoic;Yearly;Month=13</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/ethiopic/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>REPORT</method>
+				<ruri>$calendarpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/rscale/ethiopic/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>freeBusy</callback>
+					<arg>
+						<name>duration</name>
+					</arg>
+					<arg>
+						<name>busy</name>
+						<value>20150911T000000Z/P1D</value>
+						<value>20160910T000000Z/P1D</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
 	<end/>
 	
 </caldavtest>

Modified: CalDAVTester/trunk/verifiers/freeBusy.py
===================================================================
--- CalDAVTester/trunk/verifiers/freeBusy.py	2015-09-17 17:55:04 UTC (rev 15129)
+++ CalDAVTester/trunk/verifiers/freeBusy.py	2015-09-17 18:04:16 UTC (rev 15130)
@@ -33,6 +33,7 @@
         busy = args.get("busy", [])
         tentative = args.get("tentative", [])
         unavailable = args.get("unavailable", [])
+        duration = args.get("duration") is not None
 
         # Parse data as calendar object
         try:
@@ -58,7 +59,7 @@
                 periods = fp.getValue().getValues()
                 # Convert start/duration to start/end
                 for i in range(len(periods)):
-                    periods[i].getValue().setUseDuration(False)
+                    periods[i].getValue().setUseDuration(duration)
                 # Check param
                 fbtype = "BUSY"
                 if fp.hasParameter("FBTYPE"):
@@ -93,7 +94,7 @@
 
             # Compare all periods
             if len(busyp.symmetric_difference(busy)):
-                raise ValueError("Busy periods do not match")
+                raise ValueError("Busy periods do not match: {}".format(busyp.symmetric_difference(busy)))
             elif len(tentativep.symmetric_difference(tentative)):
                 raise ValueError("Busy-tentative periods do not match")
             elif len(unavailablep.symmetric_difference(unavailable)):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20150917/cc34f574/attachment-0001.html>


More information about the calendarserver-changes mailing list