1747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden/* //device/content/providers/pim/RecurrenceProcessorTest.java
2747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden**
3747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** Copyright 2006, The Android Open Source Project
4747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden**
5747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** Licensed under the Apache License, Version 2.0 (the "License");
6747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** you may not use this file except in compliance with the License.
7747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** You may obtain a copy of the License at
8747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden**
9747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden**     http://www.apache.org/licenses/LICENSE-2.0
10747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden**
11747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** Unless required by applicable law or agreed to in writing, software
12747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** distributed under the License is distributed on an "AS IS" BASIS,
13747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** See the License for the specific language governing permissions and
15747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden** limitations under the License.
16747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden*/
17747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
1806b3293d5af3454a39681cfd659271551354b8a0Michael Chanpackage com.android.calendarcommon2;
19747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
20747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport android.os.Debug;
21747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport android.test.suitebuilder.annotation.LargeTest;
22747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport android.test.suitebuilder.annotation.MediumTest;
23747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport android.test.suitebuilder.annotation.SmallTest;
24747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport android.text.TextUtils;
25747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport android.text.format.Time;
26747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport android.util.Log;
27747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport android.util.TimeFormatException;
28747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport junit.framework.TestCase;
29747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
30747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenimport java.util.TreeSet;
31747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
32747abc3833aec07827fa6b831e58f78e72c139d1Andy McFaddenpublic class RecurrenceProcessorTest extends TestCase {
33747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    private static final String TAG = "RecurrenceProcessorTest";
34747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    private static final boolean SPEW = true;
35747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    private static final boolean METHOD_TRACE = false;
36747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
37747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    private static String[] getFormattedDates(long[] dates, Time time) {
38747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        String[] out = new String[dates.length];
39747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        int i = 0;
40747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        for (long date : dates) {
41747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            time.set(date);
42747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            out[i] = time.format2445();
43747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            ++i;
44747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
45747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        return out;
46747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
47747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
48747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    private static void printLists(String[] expected, String[] out) {
49747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Log.i(TAG, "        expected        out");
50747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        int i;
51747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        for (i = 0; i < expected.length && i < out.length; i++) {
52747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            Log.i(TAG, "  [" + i + "] " + expected[i]
53747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + "  " + out[i]);
54747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
55747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        for (; i < expected.length; i++) {
56747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            Log.i(TAG, "  [" + i + "] " + expected[i]);
57747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
58747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        for (; i < out.length; i++) {
59747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            Log.i(TAG, "  [" + i + "]                   " + out[i]);
60747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
61747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
62747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
63747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void verifyRecurrence(String dtstartStr, String rrule, String rdate, String exrule,
64747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            String exdate, String rangeStartStr, String rangeEndStr, String[] expected)
65747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            throws Exception {
66747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence(dtstartStr, rrule, rdate, exrule, exdate, rangeStartStr,
67747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                rangeEndStr, expected, expected[expected.length - 1]);
68747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
69747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
70747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void verifyRecurrence(String dtstartStr, String rrule, String rdate, String exrule,
71747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            String exdate, String rangeStartStr, String rangeEndStr, String[] expected,
72747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            String last) throws Exception {
73747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
74747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // note that the zulu of all parameters here must be the same, expand
75747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // doesn't work otherwise
76747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
77747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        if (SPEW) {
78747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            Log.i(TAG, "DTSTART:" + dtstartStr
79747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + " RRULE:" + rrule
80747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + " RDATE:" + rdate
81747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + " EXRULE:" + exrule
82747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + " EXDATE:" + exdate);
83747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
84747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
85747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // we could use any timezone, incl. UTC, but we use a non-UTC
86747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // timezone to make sure there are no UTC assumptions in the
87747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // recurrence processing code.
88747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        String tz = "America/Los_Angeles";
89747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Time dtstart = new Time(tz);
90747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Time rangeStart = new Time(tz);
91747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Time rangeEnd = new Time(tz);
92747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Time outCal = new Time(tz);
93747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
94747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        dtstart.parse(dtstartStr);
95747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
96747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        rangeStart.parse(rangeStartStr);
97747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        rangeEnd.parse(rangeEndStr);
98747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
99747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        if (METHOD_TRACE) {
100747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            String fn = "/tmp/trace/" + this.getClass().getName().replace('$', '_');
101747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            String df = fn + ".data";
102747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            String kf = fn + ".key";
103747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            Debug.startMethodTracing(fn, 8 * 1024 * 1024);
104747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
105747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
106747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        RecurrenceProcessor rp = new RecurrenceProcessor();
107747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        RecurrenceSet recur = new RecurrenceSet(rrule, rdate, exrule, exdate);
108747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
109747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long[] out = rp.expand(dtstart, recur, rangeStart.toMillis(false /* use isDst */),
110747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                rangeEnd.toMillis(false /* use isDst */));
111747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
112747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        if (METHOD_TRACE) {
113747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            Debug.stopMethodTracing();
114747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
115747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
116747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        int count = out.length;
117747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        String[] actual = getFormattedDates(out, outCal);
118747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
119747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        if (count != expected.length) {
120747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            if (SPEW) {
121747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                Log.i(TAG, "DTSTART:" + dtstartStr + " RRULE:" + rrule);
122747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                printLists(expected, actual);
123747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            }
124747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            throw new RuntimeException("result lengths don't match.  "
125747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + " expected=" + expected.length
126747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + " actual=" + count);
127747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
128747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
129747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        for (int i = 0; i < count; i++) {
130747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            String s = actual[i];
131747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            if (!s.equals(expected[i])) {
132747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                if (SPEW) {
133747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    Log.i(TAG, "DTSTART:" + dtstartStr + " RRULE:" + rrule);
134747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    printLists(expected, actual);
135747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    Log.i(TAG, "i=" + i);
136747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }
137747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                throw new RuntimeException("expected[" + i + "]="
138747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        + expected[i] + " actual=" + actual[i]);
139747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            }
140747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
141747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
142747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long lastOccur = rp.getLastOccurence(dtstart, rangeEnd, recur);
143747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        if (lastOccur == 0 && out.length == 0) {
144747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            // No occurrence found and 0 returned for lastOccur, this is ok.
145747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            return;
146747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
147747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long lastMillis = -1;
148747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long expectedMillis = -1;
149747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        String lastStr = "";
150747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        if (lastOccur != -1) {
151747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            outCal.set(lastOccur);
152747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            lastStr = outCal.format2445();
153747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            lastMillis = outCal.toMillis(true /* ignore isDst */);
154747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
155747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        if (last != null && last.length() > 0) {
156747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            Time expectedLast = new Time(tz);
157747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            expectedLast.parse(last);
158747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            expectedMillis = expectedLast.toMillis(true /* ignore isDst */);
159747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
160747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        if (lastMillis != expectedMillis) {
161747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            if (SPEW) {
162747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                Log.i(TAG, "DTSTART:" + dtstartStr + " RRULE:" + rrule);
163747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                Log.i(TAG, "Expected: " + last + "; Actual: " + lastStr);
164747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                printLists(expected, actual);
165747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            }
166747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
167747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            throw new RuntimeException("expected last occurrence date does not match."
168747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + " expected=" + last
169747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    + " actual=" + lastStr);
170747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
171747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
172747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
173747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
174747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly0() throws Exception {
175747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060205T100000", "FREQ=MONTHLY;COUNT=3",
176747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
177747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
178747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
179747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060205T100000",
180747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060305T100000",
181747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060405T100000"
182747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
183747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
184747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
185747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
186747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly1() throws Exception {
187747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060205T100000", "FREQ=MONTHLY;INTERVAL=2;COUNT=3",
188747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
189747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
190747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
191747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060205T100000",
192747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060405T100000",
193747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060605T100000"
194747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
195747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
196747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
197747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
198747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly2() throws Exception {
199747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // this tests wrapping the year when the interval isn't divisible
200747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // by 12
201747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060205T100000", "FREQ=MONTHLY;INTERVAL=5;COUNT=5",
202747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
203747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
204747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
205747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060205T100000",
206747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060705T100000",
207747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061205T100000",
208747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070505T100000",
209747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071005T100000"
210747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
211747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
212747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
213747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
214747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly3() throws Exception {
215747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // with a simple BYDAY, spanning two months
216747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060104T123456",
217747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;UNTIL=20060201T200000Z;BYDAY=TU,WE",
218747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
219747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
220747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
221747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060104T123456",
222747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060110T123456",
223747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060111T123456",
224747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060117T123456",
225747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060118T123456",
226747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060124T123456",
227747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060125T123456",
228747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060131T123456"
229747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                },
230747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060201T120000");
231747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
232747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
233747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
234747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly4() throws Exception {
235747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // with a BYDAY with +1 / etc., spanning two months and
236747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // one day which isn't in the result
237747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060101T123456",
238747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;UNTIL=20060301T200000Z;BYDAY=+1SU,+2MO,+3TU,+4WE,+5MO,+5TU,+5WE,+6TH",
239747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
240747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
241747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
242747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060101T123456",
243747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060109T123456",
244747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060117T123456",
245747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060125T123456",
246747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060130T123456",
247747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060131T123456",
248747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060205T123456",
249747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060213T123456",
250747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060221T123456",
251747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060222T123456"
252747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                },
253747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060301T120000");
254747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
255747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
256747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
257747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly5() throws Exception {
258747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // with a BYDAY with -1 / etc.
259747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060201T123456",
260747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;UNTIL=20060301T200000Z;BYDAY=-1SU,-2MO,-3TU,-4TU,-4WE,-5MO,-5TU,-5WE,-6TH",
261747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
262747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
263747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
264747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060201T123456",
265747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060207T123456",
266747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060214T123456",
267747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T123456",
268747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060226T123456"
269747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                },
270747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060301T120000");
271747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
272747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
273747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
274747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly6() throws Exception {
275747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // With positive BYMONTHDAYs
276747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060201T123456",
277747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;UNTIL=20060301T200000Z;BYMONTHDAY=1,2,5,28,31",
278747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
279747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
280747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
281747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060201T123456",
282747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060202T123456",
283747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060205T123456",
284747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060228T123456"
285747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                },
286747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060301T120000");
287747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
288747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
289747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
290747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly7() throws Exception {
291747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // With negative BYMONTHDAYs
292747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060201T123456",
293747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;UNTIL=20060301T200000Z;BYMONTHDAY=-1,-5,-27,-28,-31",
294747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
295747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
296747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
297747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060201T123456",
298747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060202T123456",
299747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060224T123456",
300747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060228T123456"
301747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                },
302747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060301T120000");
303747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
304747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
305747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
306747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly8() throws Exception {
307747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060205T100000", "FREQ=MONTHLY;COUNT=3",
308747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "America/Los_Angeles;20060207T140000,20060307T160000,20060407T180000",
309747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* exrule */, null /* exdate */,
310747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
311747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
312747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060205T100000",
313747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060207T140000",
314747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060305T100000",
315747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060307T160000",
316747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060405T100000",
317747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060407T180000",
318747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
319747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
320747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
321747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
322747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly9() throws Exception {
323747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060205T100000", null /* rrule */,
324747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "America/Los_Angeles;20060207T140000,20060307T160000,20060407T180000",
325747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* exrule */, null /* exdate */,
326747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
327747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
328747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060207T140000",
329747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060307T160000",
330747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060407T180000",
331747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
332747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
333747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
334747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
335747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly10() throws Exception {
336747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060205T100000", "FREQ=MONTHLY;COUNT=3\nFREQ=WEEKLY;COUNT=2",
337747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "America/Los_Angeles;20060207T140000,20060307T160000,20060407T180000",
338747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* exrule */, null /* exdate */,
339747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
340747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
341747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060205T100000",
342747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060207T140000",
343747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060212T100000",
344747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060305T100000",
345747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060307T160000",
346747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060405T100000",
347747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060407T180000",
348747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
349747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
350747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
351747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
352747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly11() throws Exception {
353747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060205T100000", "FREQ=MONTHLY;COUNT=3\nFREQ=WEEKLY;COUNT=2",
354747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */,
355747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;COUNT=2", null /* exdate */,
356747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
357747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
358747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060212T100000",
359747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060405T100000",
360747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
361747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
362747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
363747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
364747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly12() throws Exception {
365747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060205T100000", "FREQ=MONTHLY;COUNT=3\nFREQ=WEEKLY;COUNT=2",
366747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */,
367747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060212T180000Z,20060405T170000Z" /* exdate */,
368747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
369747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
370747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060205T100000",
371747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060305T100000",
372747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
373747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
374747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
375747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
376747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testMonthly13() throws Exception {
377747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060101T100000", "FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13;COUNT=10",
378747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
379747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20101231T000000",
380747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
3810304a16e191a2e2af8289c6e7e1ad9734a0dc06dAndy McFadden                        "20060101T100000",
382747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060113T100000",
383747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061013T100000",
384747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070413T100000",
385747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070713T100000",
386747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080613T100000",
387747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20090213T100000",
388747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20090313T100000",
389747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20091113T100000",
390747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100813T100000",
391747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
392747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
393747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
394747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
395dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden    public void testMonthly14() throws Exception {
396dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden        verifyRecurrence("20110103T100000", "FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=1,-1",
397dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
398dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110101T000000", "20110331T235959",
399dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                new String[]{
400dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110103T100000",
401dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110131T100000",
402dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110201T100000",
403dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110228T100000",
404dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110301T100000",
405dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110331T100000",
406dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                });
407dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden    }
408dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden
409dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden    @SmallTest
410dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden    public void testMonthly15() throws Exception {
411dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden        verifyRecurrence("20110703T100000", "FREQ=MONTHLY;BYDAY=SA,SU;BYSETPOS=2,-2",
412dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
413dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110701T000000", "20110931T235959",
414dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                new String[]{
415dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110703T100000",
416dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110730T100000",
417dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110807T100000",
418dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110827T100000",
419dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110904T100000",
420dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                "20110924T100000",
421dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden                });
422dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden    }
423dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden
424dce6a0a89883ab3e76212a11a5a889407887718fAndy McFadden    @SmallTest
425747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly0() throws Exception {
426747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;COUNT=3",
427747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
428747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
429747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
430747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
431747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060222T100000",
432747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060301T100000"
433747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
434747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
435747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
436747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
437747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly1() throws Exception {
438747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060301T100000Z",
439747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
440747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
441747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
442747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
443747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060222T100000"
444747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060301T020000");
445747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
446747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
447747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
448747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly2() throws Exception {
449747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060301T100001Z",
450747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
451747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
452747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
453747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
454747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060222T100000"
455747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060301T020001");
456747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
457747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
458747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
459747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly3() throws Exception {
460747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060301T090000Z",
461747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
462747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
463747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
464747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
465747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060222T100000"
466747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060301T010000");
467747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
468747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
469747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
470747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly4() throws Exception {
471747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060311T100001Z;BYDAY=TU",
472747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
473747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
474747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
475747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
476747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060221T100000",
477747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060228T100000",
478747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060307T100000"
479747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060311T020001");
480747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
481747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
482747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    // until without "Z"
483747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
484747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly4a() throws Exception {
485747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060311T100001;BYDAY=TU",
486747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
487747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
488747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
489747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
490747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060221T100000",
491747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060228T100000",
492747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060307T100000"
493747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060311T100001");
494747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
495747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
496747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
497747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly5() throws Exception {
498747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060311T100001Z;BYDAY=TH",
499747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
500747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
501747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
502747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
503747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060216T100000",
504747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060223T100000",
505747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060302T100000",
506747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060309T100000"
507747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060311T020001");
508747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
509747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
510747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
511747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly6() throws Exception {
512747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060309T100001Z;BYDAY=WE,TH",
513747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
514747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
515747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
516747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
517747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060216T100000",
518747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060222T100000",
519747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060223T100000",
520747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060301T100000",
521747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060302T100000",
522747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060308T100000"
523747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060309T020001");
524747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
525747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
526747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
527747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly7() throws Exception {
528747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060220T100001Z;BYDAY=SU",
529747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
530747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
531747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
532747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
533747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T100000"
534747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060220T020001");
535747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
536747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
537747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
538747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly8() throws Exception {
539747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;COUNT=4;WKST=SU;BYDAY=TU,TH",
540747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
541747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
542747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
543747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
544747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060216T100000",
545747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060221T100000",
546747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060223T100000"
547747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
548747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
549747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
550747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
5519a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden    public void testWeekly9() throws Exception {
552747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("19970805T100000",
5539a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU",   // uses default WKST=MO
554747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
555747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "19970101T000000", "19980101T000000",
556747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
557747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "19970805T100000",
558747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "19970810T100000",
559747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "19970819T100000",
560747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "19970824T100000",
561747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
562747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
563747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
564747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
565747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly10() throws Exception {
566747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("19970805T100000",
567747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",
568747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
569747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "19970101T000000", "19980101T000000",
570747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
571747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "19970805T100000",
572747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "19970817T100000",
573747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "19970819T100000",
574747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "19970831T100000",
575747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
576747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
577747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
578747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    // BUG 1658567: UNTIL=date
579747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
580747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly11() throws Exception {
581747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=20060220;BYDAY=SU",
582747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
583747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
584747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
585747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
586747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T100000"
587747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060220T000000");
588747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
589747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
590747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
591747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testWeekly12() throws Exception {
592747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        try {
593747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            verifyRecurrence("20060215T100000", "FREQ=WEEKLY;UNTIL=junk;BYDAY=SU",
594747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    null /* rdate */, null /* exrule */, null /* exdate */,
595747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20060101T000000", "20080101T000000",
596747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    new String[]{
597747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                            "20060215T100000",
598747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                            "20060219T100000"
599747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    }, "20060220T020001");
600747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            fail("Bad UNTIL string failed to throw exception");
601747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        } catch (TimeFormatException e) {
602747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            // expected
603747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
604747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
605747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
6069a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden    /**
6079a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden     * Test repeating weekly event with dtstart and dtend (only one occurrence)
6089a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden     * See bug #3267616
6099a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden     * @throws Exception
6109a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden     */
6119a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden    @SmallTest
6129a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden    public void testWeekly13() throws Exception {
6139a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden        verifyRecurrence("20101117T150000",
6149a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                "FREQ=WEEKLY;BYDAY=WE",
6159a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
6169a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                "20101117T150000", "20101117T160000",
6179a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                new String[]{ "20101117T150000" });
6189a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden    }
6199a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden
6209a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden    @SmallTest
6219a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden    public void testWeekly14() throws Exception {
6229a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden        verifyRecurrence("19970805T100000",
6239a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=TH",
6249a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
6259a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                "19970101T000000", "19980101T000000",
6269a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                new String[]{
6279a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                        "19970805T100000",
6289a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                        "19970817T100000",
6299a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                        "19970819T100000",
6309a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                        "19970831T100000",
6319a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden                });
6329a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden    }
6339a91eb9d6c3c28b54223dae453c9d456b0c87355Andy McFadden
634747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
635747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testDaily0() throws Exception {
636747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=DAILY;COUNT=3",
637747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
638747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
639747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
640747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
641747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060216T100000",
642747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060217T100000"
643747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
644747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
645747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
646747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
647747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testDaily1() throws Exception {
648747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=DAILY;UNTIL=20060302T100001Z",
649747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
650747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
651747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
652747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
653747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060216T100000",
654747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060217T100000",
655747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060218T100000",
656747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T100000",
657747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T100000",
658747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060221T100000",
659747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060222T100000",
660747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060223T100000",
661747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060224T100000",
662747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060225T100000",
663747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060226T100000",
664747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060227T100000",
665747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060228T100000",
666747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060301T100000"
667747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060302T100001Z");
668747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
669747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
670747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
671747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testDaily2() throws Exception {
672747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060215T100000", "FREQ=DAILY;UNTIL=20060220T100001Z;BYDAY=SU",
673747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
674747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
675747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
676747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060215T100000",
677747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T100000"
678747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060220T020001");
679747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
680747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
681747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
682747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testDaily3() throws Exception {
683747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060219T100000",
684747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=DAILY;UNTIL=20060225T180304Z;BYDAY=SU,MO,SA;BYHOUR=5,10,22;BYMINUTE=3,59;BYSECOND=2,5",
685747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
686747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20080101T000000",
687747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
688747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T100000",
689747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T100302",
690747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T100305",
691747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T105902",
692747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T105905",
693747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T220302",
694747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T220305",
695747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T225902",
696747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060219T225905",
697747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T050302",
698747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T050305",
699747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T055902",
700747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T055905",
701747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T100302",
702747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T100305",
703747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T105902",
704747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T105905",
705747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T220302",
706747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T220305",
707747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T225902",
708747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060220T225905",
709747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060225T050302",
710747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060225T050305",
711747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060225T055902",
712747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060225T055905",
713747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20060225T100302"
714747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20060225T100304");
715747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
716747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
717747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @MediumTest
718747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar0() throws Exception {
719747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Tuesday, Thursday (10/2)
720747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061002T050000",
721747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;UNTIL=20071031T200000Z;INTERVAL=1;BYDAY=TU,TH;WKST=SU",
722747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
723747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
724747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
725747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061002T050000",
726747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061003T050000",
727747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061005T050000",
728747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061010T050000",
729747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061012T050000",
730747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061017T050000",
731747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061019T050000",
732747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061024T050000",
733747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061026T050000",
734747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061031T050000",
735747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061102T050000",
736747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061107T050000",
737747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061109T050000",
738747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061114T050000",
739747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061116T050000",
740747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061121T050000",
741747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061123T050000",
742747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061128T050000",
743747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061130T050000",
744747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061205T050000",
745747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061207T050000",
746747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061212T050000",
747747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061214T050000",
748747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061219T050000",
749747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061221T050000",
750747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061226T050000",
751747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061228T050000",
752747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070102T050000",
753747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070104T050000",
754747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070109T050000",
755747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070111T050000",
756747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070116T050000",
757747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070118T050000",
758747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070123T050000",
759747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070125T050000",
760747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070130T050000",
761747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070201T050000",
762747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070206T050000",
763747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070208T050000",
764747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070213T050000",
765747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070215T050000",
766747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070220T050000",
767747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070222T050000",
768747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070227T050000",
769747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070301T050000",
770747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070306T050000",
771747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070308T050000",
772747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070313T050000",
773747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070315T050000",
774747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070320T050000",
775747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070322T050000",
776747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070327T050000",
777747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070329T050000",
778747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070403T050000",
779747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070405T050000",
780747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070410T050000",
781747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070412T050000",
782747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070417T050000",
783747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070419T050000",
784747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070424T050000",
785747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070426T050000",
786747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070501T050000",
787747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070503T050000",
788747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070508T050000",
789747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070510T050000",
790747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070515T050000",
791747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070517T050000",
792747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070522T050000",
793747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070524T050000",
794747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070529T050000",
795747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070531T050000",
796747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070605T050000",
797747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070607T050000",
798747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070612T050000",
799747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070614T050000",
800747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070619T050000",
801747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070621T050000",
802747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070626T050000",
803747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070628T050000",
804747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070703T050000",
805747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070705T050000",
806747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070710T050000",
807747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070712T050000",
808747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070717T050000",
809747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070719T050000",
810747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070724T050000",
811747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070726T050000",
812747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070731T050000",
813747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070802T050000",
814747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070807T050000",
815747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070809T050000",
816747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070814T050000",
817747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070816T050000",
818747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070821T050000",
819747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070823T050000",
820747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070828T050000",
821747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070830T050000",
822747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070904T050000",
823747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070906T050000",
824747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070911T050000",
825747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070913T050000",
826747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070918T050000",
827747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070920T050000",
828747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070925T050000",
829747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070927T050000",
830747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071002T050000",
831747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071004T050000",
832747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071009T050000",
833747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071011T050000",
834747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071016T050000",
835747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071018T050000",
836747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071023T050000",
837747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071025T050000",
838747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071030T050000",
839747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20071031T130000");
840747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
841747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
842747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @MediumTest
843747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar1() throws Exception {
844747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Mon Wed Fri
845747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061002T030000",
846747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;UNTIL=20071025T180000Z;INTERVAL=1;BYDAY=MO,WE,FR;",
847747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
848747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
849747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
850747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061002T030000",
851747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061004T030000",
852747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061006T030000",
853747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061009T030000",
854747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061011T030000",
855747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061013T030000",
856747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061016T030000",
857747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061018T030000",
858747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061020T030000",
859747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061023T030000",
860747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061025T030000",
861747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061027T030000",
862747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061030T030000",
863747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061101T030000",
864747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061103T030000",
865747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061106T030000",
866747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061108T030000",
867747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061110T030000",
868747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061113T030000",
869747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061115T030000",
870747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061117T030000",
871747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061120T030000",
872747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061122T030000",
873747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061124T030000",
874747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061127T030000",
875747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061129T030000",
876747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061201T030000",
877747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061204T030000",
878747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061206T030000",
879747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061208T030000",
880747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061211T030000",
881747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061213T030000",
882747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061215T030000",
883747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061218T030000",
884747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061220T030000",
885747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061222T030000",
886747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061225T030000",
887747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061227T030000",
888747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061229T030000",
889747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070101T030000",
890747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070103T030000",
891747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070105T030000",
892747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070108T030000",
893747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070110T030000",
894747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070112T030000",
895747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070115T030000",
896747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070117T030000",
897747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070119T030000",
898747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070122T030000",
899747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070124T030000",
900747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070126T030000",
901747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070129T030000",
902747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070131T030000",
903747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070202T030000",
904747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070205T030000",
905747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070207T030000",
906747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070209T030000",
907747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070212T030000",
908747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070214T030000",
909747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070216T030000",
910747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070219T030000",
911747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070221T030000",
912747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070223T030000",
913747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070226T030000",
914747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070228T030000",
915747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070302T030000",
916747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070305T030000",
917747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070307T030000",
918747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070309T030000",
919747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070312T030000",
920747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070314T030000",
921747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070316T030000",
922747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070319T030000",
923747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070321T030000",
924747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070323T030000",
925747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070326T030000",
926747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070328T030000",
927747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070330T030000",
928747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070402T030000",
929747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070404T030000",
930747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070406T030000",
931747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070409T030000",
932747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070411T030000",
933747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070413T030000",
934747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070416T030000",
935747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070418T030000",
936747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070420T030000",
937747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070423T030000",
938747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070425T030000",
939747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070427T030000",
940747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070430T030000",
941747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070502T030000",
942747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070504T030000",
943747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070507T030000",
944747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070509T030000",
945747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070511T030000",
946747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070514T030000",
947747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070516T030000",
948747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070518T030000",
949747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070521T030000",
950747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070523T030000",
951747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070525T030000",
952747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070528T030000",
953747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070530T030000",
954747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070601T030000",
955747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070604T030000",
956747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070606T030000",
957747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070608T030000",
958747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070611T030000",
959747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070613T030000",
960747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070615T030000",
961747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070618T030000",
962747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070620T030000",
963747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070622T030000",
964747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070625T030000",
965747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070627T030000",
966747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070629T030000",
967747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070702T030000",
968747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070704T030000",
969747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070706T030000",
970747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070709T030000",
971747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070711T030000",
972747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070713T030000",
973747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070716T030000",
974747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070718T030000",
975747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070720T030000",
976747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070723T030000",
977747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070725T030000",
978747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070727T030000",
979747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070730T030000",
980747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070801T030000",
981747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070803T030000",
982747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070806T030000",
983747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070808T030000",
984747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070810T030000",
985747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070813T030000",
986747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070815T030000",
987747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070817T030000",
988747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070820T030000",
989747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070822T030000",
990747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070824T030000",
991747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070827T030000",
992747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070829T030000",
993747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070831T030000",
994747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070903T030000",
995747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070905T030000",
996747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070907T030000",
997747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070910T030000",
998747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070912T030000",
999747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070914T030000",
1000747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070917T030000",
1001747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070919T030000",
1002747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070921T030000",
1003747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070924T030000",
1004747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070926T030000",
1005747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070928T030000",
1006747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071001T030000",
1007747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071003T030000",
1008747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071005T030000",
1009747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071008T030000",
1010747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071010T030000",
1011747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071012T030000",
1012747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071015T030000",
1013747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071017T030000",
1014747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071019T030000",
1015747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071022T030000",
1016747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071024T030000",
1017747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20071025T110000");
1018747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
1019747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
1020747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
1021747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar2() throws Exception {
1022747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Monthly on day 2
1023747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061002T070000",
1024747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;INTERVAL=1;WKST=SU",
1025747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
1026747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
1027747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
1028747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061002T070000",
1029747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061102T070000",
1030747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061202T070000",
1031747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070102T070000",
1032747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070202T070000",
1033747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070302T070000",
1034747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070402T070000",
1035747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070502T070000",
1036747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070602T070000",
1037747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070702T070000",
1038747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070802T070000",
1039747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070902T070000",
1040747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071002T070000",
1041747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071102T070000",
1042747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071202T070000",
1043747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080102T070000",
1044747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080202T070000",
1045747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080302T070000",
1046747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080402T070000",
1047747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080502T070000",
1048747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080602T070000",
1049747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080702T070000",
1050747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080802T070000",
1051747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080902T070000",
1052747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081002T070000",
1053747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081102T070000",
1054747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081202T070000",
1055747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20081202T070000");
1056747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
1057747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
1058747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @MediumTest
1059747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar3() throws Exception {
1060747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Every Weekday
1061747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061002T100000",
1062747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;UNTIL=20070215T100000Z;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR;",
1063747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
1064747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
1065747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
1066747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061002T100000",
1067747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061003T100000",
1068747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061004T100000",
1069747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061005T100000",
1070747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061006T100000",
1071747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061009T100000",
1072747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061010T100000",
1073747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061011T100000",
1074747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061012T100000",
1075747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061013T100000",
1076747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061016T100000",
1077747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061017T100000",
1078747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061018T100000",
1079747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061019T100000",
1080747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061020T100000",
1081747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061023T100000",
1082747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061024T100000",
1083747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061025T100000",
1084747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061026T100000",
1085747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061027T100000",
1086747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061030T100000",
1087747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061031T100000",
1088747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061101T100000",
1089747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061102T100000",
1090747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061103T100000",
1091747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061106T100000",
1092747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061107T100000",
1093747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061108T100000",
1094747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061109T100000",
1095747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061110T100000",
1096747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061113T100000",
1097747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061114T100000",
1098747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061115T100000",
1099747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061116T100000",
1100747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061117T100000",
1101747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061120T100000",
1102747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061121T100000",
1103747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061122T100000",
1104747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061123T100000",
1105747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061124T100000",
1106747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061127T100000",
1107747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061128T100000",
1108747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061129T100000",
1109747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061130T100000",
1110747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061201T100000",
1111747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061204T100000",
1112747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061205T100000",
1113747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061206T100000",
1114747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061207T100000",
1115747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061208T100000",
1116747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061211T100000",
1117747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061212T100000",
1118747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061213T100000",
1119747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061214T100000",
1120747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061215T100000",
1121747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061218T100000",
1122747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061219T100000",
1123747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061220T100000",
1124747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061221T100000",
1125747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061222T100000",
1126747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061225T100000",
1127747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061226T100000",
1128747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061227T100000",
1129747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061228T100000",
1130747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061229T100000",
1131747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070101T100000",
1132747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070102T100000",
1133747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070103T100000",
1134747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070104T100000",
1135747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070105T100000",
1136747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070108T100000",
1137747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070109T100000",
1138747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070110T100000",
1139747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070111T100000",
1140747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070112T100000",
1141747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070115T100000",
1142747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070116T100000",
1143747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070117T100000",
1144747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070118T100000",
1145747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070119T100000",
1146747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070122T100000",
1147747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070123T100000",
1148747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070124T100000",
1149747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070125T100000",
1150747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070126T100000",
1151747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070129T100000",
1152747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070130T100000",
1153747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070131T100000",
1154747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070201T100000",
1155747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070202T100000",
1156747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070205T100000",
1157747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070206T100000",
1158747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070207T100000",
1159747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070208T100000",
1160747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070209T100000",
1161747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070212T100000",
1162747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070213T100000",
1163747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070214T100000",
1164747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20070215T020000");
1165747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
1166747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
1167747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
1168747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar4() throws Exception {
1169747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Every 5 months on day 2
1170747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061003T100000",
1171747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;INTERVAL=5;WKST=SU",
1172747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
1173747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
1174747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
1175747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061003T100000",
1176747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070303T100000",
1177747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070803T100000",
1178747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080103T100000",
1179747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080603T100000",
1180747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081103T100000",
1181747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20081103T100000");
1182747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
1183747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
1184747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @MediumTest
1185747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar5() throws Exception {
1186747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Tuesday, Thursday (10/3)
1187747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061003T040000",
1188747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;INTERVAL=1;BYDAY=TU,TH;WKST=SU",
1189747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
1190747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
1191747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
1192747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061003T040000",
1193747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061005T040000",
1194747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061010T040000",
1195747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061012T040000",
1196747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061017T040000",
1197747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061019T040000",
1198747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061024T040000",
1199747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061026T040000",
1200747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061031T040000",
1201747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061102T040000",
1202747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061107T040000",
1203747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061109T040000",
1204747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061114T040000",
1205747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061116T040000",
1206747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061121T040000",
1207747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061123T040000",
1208747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061128T040000",
1209747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061130T040000",
1210747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061205T040000",
1211747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061207T040000",
1212747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061212T040000",
1213747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061214T040000",
1214747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061219T040000",
1215747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061221T040000",
1216747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061226T040000",
1217747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061228T040000",
1218747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070102T040000",
1219747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070104T040000",
1220747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070109T040000",
1221747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070111T040000",
1222747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070116T040000",
1223747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070118T040000",
1224747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070123T040000",
1225747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070125T040000",
1226747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070130T040000",
1227747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070201T040000",
1228747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070206T040000",
1229747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070208T040000",
1230747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070213T040000",
1231747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070215T040000",
1232747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070220T040000",
1233747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070222T040000",
1234747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070227T040000",
1235747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070301T040000",
1236747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070306T040000",
1237747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070308T040000",
1238747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070313T040000",
1239747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070315T040000",
1240747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070320T040000",
1241747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070322T040000",
1242747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070327T040000",
1243747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070329T040000",
1244747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070403T040000",
1245747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070405T040000",
1246747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070410T040000",
1247747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070412T040000",
1248747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070417T040000",
1249747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070419T040000",
1250747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070424T040000",
1251747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070426T040000",
1252747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070501T040000",
1253747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070503T040000",
1254747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070508T040000",
1255747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070510T040000",
1256747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070515T040000",
1257747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070517T040000",
1258747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070522T040000",
1259747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070524T040000",
1260747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070529T040000",
1261747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070531T040000",
1262747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070605T040000",
1263747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070607T040000",
1264747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070612T040000",
1265747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070614T040000",
1266747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070619T040000",
1267747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070621T040000",
1268747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070626T040000",
1269747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070628T040000",
1270747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070703T040000",
1271747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070705T040000",
1272747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070710T040000",
1273747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070712T040000",
1274747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070717T040000",
1275747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070719T040000",
1276747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070724T040000",
1277747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070726T040000",
1278747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070731T040000",
1279747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070802T040000",
1280747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070807T040000",
1281747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070809T040000",
1282747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070814T040000",
1283747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070816T040000",
1284747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070821T040000",
1285747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070823T040000",
1286747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070828T040000",
1287747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070830T040000",
1288747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070904T040000",
1289747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070906T040000",
1290747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070911T040000",
1291747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070913T040000",
1292747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070918T040000",
1293747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070920T040000",
1294747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070925T040000",
1295747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070927T040000",
1296747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071002T040000",
1297747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071004T040000",
1298747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071009T040000",
1299747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071011T040000",
1300747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071016T040000",
1301747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071018T040000",
1302747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071023T040000",
1303747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071025T040000",
1304747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071030T040000",
1305747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071101T040000",
1306747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071106T040000",
1307747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071108T040000",
1308747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071113T040000",
1309747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071115T040000",
1310747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071120T040000",
1311747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071122T040000",
1312747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071127T040000",
1313747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071129T040000",
1314747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071204T040000",
1315747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071206T040000",
1316747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071211T040000",
1317747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071213T040000",
1318747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071218T040000",
1319747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071220T040000",
1320747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071225T040000",
1321747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071227T040000",
1322747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080101T040000",
1323747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080103T040000",
1324747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080108T040000",
1325747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080110T040000",
1326747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080115T040000",
1327747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080117T040000",
1328747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080122T040000",
1329747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080124T040000",
1330747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080129T040000",
1331747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080131T040000",
1332747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080205T040000",
1333747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080207T040000",
1334747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080212T040000",
1335747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080214T040000",
1336747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080219T040000",
1337747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080221T040000",
1338747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080226T040000",
1339747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080228T040000",
1340747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080304T040000",
1341747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080306T040000",
1342747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080311T040000",
1343747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080313T040000",
1344747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080318T040000",
1345747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080320T040000",
1346747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080325T040000",
1347747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080327T040000",
1348747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080401T040000",
1349747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080403T040000",
1350747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080408T040000",
1351747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080410T040000",
1352747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080415T040000",
1353747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080417T040000",
1354747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080422T040000",
1355747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080424T040000",
1356747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080429T040000",
1357747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080501T040000",
1358747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080506T040000",
1359747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080508T040000",
1360747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080513T040000",
1361747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080515T040000",
1362747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080520T040000",
1363747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080522T040000",
1364747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080527T040000",
1365747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080529T040000",
1366747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080603T040000",
1367747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080605T040000",
1368747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080610T040000",
1369747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080612T040000",
1370747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080617T040000",
1371747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080619T040000",
1372747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080624T040000",
1373747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080626T040000",
1374747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080701T040000",
1375747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080703T040000",
1376747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080708T040000",
1377747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080710T040000",
1378747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080715T040000",
1379747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080717T040000",
1380747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080722T040000",
1381747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080724T040000",
1382747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080729T040000",
1383747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080731T040000",
1384747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080805T040000",
1385747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080807T040000",
1386747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080812T040000",
1387747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080814T040000",
1388747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080819T040000",
1389747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080821T040000",
1390747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080826T040000",
1391747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080828T040000",
1392747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080902T040000",
1393747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080904T040000",
1394747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080909T040000",
1395747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080911T040000",
1396747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080916T040000",
1397747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080918T040000",
1398747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080923T040000",
1399747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080925T040000",
1400747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080930T040000",
1401747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081002T040000",
1402747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081007T040000",
1403747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081009T040000",
1404747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081014T040000",
1405747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081016T040000",
1406747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081021T040000",
1407747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081023T040000",
1408747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081028T040000",
1409747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081030T040000",
1410747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081104T040000",
1411747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081106T040000",
1412747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081111T040000",
1413747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081113T040000",
1414747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081118T040000",
1415747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081120T040000",
1416747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081125T040000",
1417747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081127T040000",
1418747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081202T040000",
1419747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081204T040000",
1420747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081209T040000",
1421747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081211T040000",
1422747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081216T040000",
1423747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081218T040000",
1424747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081223T040000",
1425747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081225T040000",
1426747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081230T040000",
1427747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20081230T040000");
1428747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
1429747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
1430747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @MediumTest
1431747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar6() throws Exception {
1432747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Weekly on all days
1433747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061003T060000",
1434747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA;WKST=SU",
1435747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
1436747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20071003T060000",
1437747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
1438747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061003T060000",
1439747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061004T060000",
1440747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061005T060000",
1441747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061006T060000",
1442747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061007T060000",
1443747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061008T060000",
1444747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061009T060000",
1445747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061010T060000",
1446747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061011T060000",
1447747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061012T060000",
1448747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061013T060000",
1449747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061014T060000",
1450747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061015T060000",
1451747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061016T060000",
1452747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061017T060000",
1453747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061018T060000",
1454747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061019T060000",
1455747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061020T060000",
1456747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061021T060000",
1457747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061022T060000",
1458747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061023T060000",
1459747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061024T060000",
1460747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061025T060000",
1461747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061026T060000",
1462747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061027T060000",
1463747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061028T060000",
1464747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061029T060000",
1465747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061030T060000",
1466747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061031T060000",
1467747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061101T060000",
1468747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061102T060000",
1469747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061103T060000",
1470747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061104T060000",
1471747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061105T060000",
1472747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061106T060000",
1473747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061107T060000",
1474747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061108T060000",
1475747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061109T060000",
1476747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061110T060000",
1477747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061111T060000",
1478747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061112T060000",
1479747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061113T060000",
1480747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061114T060000",
1481747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061115T060000",
1482747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061116T060000",
1483747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061117T060000",
1484747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061118T060000",
1485747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061119T060000",
1486747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061120T060000",
1487747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061121T060000",
1488747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061122T060000",
1489747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061123T060000",
1490747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061124T060000",
1491747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061125T060000",
1492747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061126T060000",
1493747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061127T060000",
1494747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061128T060000",
1495747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061129T060000",
1496747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061130T060000",
1497747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061201T060000",
1498747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061202T060000",
1499747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061203T060000",
1500747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061204T060000",
1501747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061205T060000",
1502747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061206T060000",
1503747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061207T060000",
1504747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061208T060000",
1505747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061209T060000",
1506747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061210T060000",
1507747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061211T060000",
1508747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061212T060000",
1509747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061213T060000",
1510747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061214T060000",
1511747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061215T060000",
1512747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061216T060000",
1513747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061217T060000",
1514747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061218T060000",
1515747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061219T060000",
1516747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061220T060000",
1517747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061221T060000",
1518747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061222T060000",
1519747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061223T060000",
1520747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061224T060000",
1521747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061225T060000",
1522747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061226T060000",
1523747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061227T060000",
1524747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061228T060000",
1525747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061229T060000",
1526747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061230T060000",
1527747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061231T060000",
1528747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070101T060000",
1529747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070102T060000",
1530747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070103T060000",
1531747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070104T060000",
1532747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070105T060000",
1533747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070106T060000",
1534747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070107T060000",
1535747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070108T060000",
1536747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070109T060000",
1537747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070110T060000",
1538747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070111T060000",
1539747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070112T060000",
1540747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070113T060000",
1541747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070114T060000",
1542747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070115T060000",
1543747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070116T060000",
1544747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070117T060000",
1545747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070118T060000",
1546747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070119T060000",
1547747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070120T060000",
1548747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070121T060000",
1549747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070122T060000",
1550747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070123T060000",
1551747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070124T060000",
1552747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070125T060000",
1553747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070126T060000",
1554747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070127T060000",
1555747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070128T060000",
1556747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070129T060000",
1557747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070130T060000",
1558747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070131T060000",
1559747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070201T060000",
1560747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070202T060000",
1561747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070203T060000",
1562747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070204T060000",
1563747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070205T060000",
1564747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070206T060000",
1565747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070207T060000",
1566747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070208T060000",
1567747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070209T060000",
1568747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070210T060000",
1569747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070211T060000",
1570747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070212T060000",
1571747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070213T060000",
1572747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070214T060000",
1573747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070215T060000",
1574747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070216T060000",
1575747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070217T060000",
1576747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070218T060000",
1577747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070219T060000",
1578747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070220T060000",
1579747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070221T060000",
1580747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070222T060000",
1581747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070223T060000",
1582747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070224T060000",
1583747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070225T060000",
1584747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070226T060000",
1585747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070227T060000",
1586747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070228T060000",
1587747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070301T060000",
1588747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070302T060000",
1589747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070303T060000",
1590747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070304T060000",
1591747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070305T060000",
1592747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070306T060000",
1593747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070307T060000",
1594747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070308T060000",
1595747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070309T060000",
1596747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070310T060000",
1597747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070311T060000",
1598747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070312T060000",
1599747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070313T060000",
1600747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070314T060000",
1601747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070315T060000",
1602747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070316T060000",
1603747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070317T060000",
1604747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070318T060000",
1605747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070319T060000",
1606747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070320T060000",
1607747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070321T060000",
1608747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070322T060000",
1609747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070323T060000",
1610747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070324T060000",
1611747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070325T060000",
1612747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070326T060000",
1613747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070327T060000",
1614747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070328T060000",
1615747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070329T060000",
1616747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070330T060000",
1617747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070331T060000",
1618747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070401T060000",
1619747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070402T060000",
1620747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070403T060000",
1621747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070404T060000",
1622747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070405T060000",
1623747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070406T060000",
1624747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070407T060000",
1625747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070408T060000",
1626747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070409T060000",
1627747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070410T060000",
1628747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070411T060000",
1629747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070412T060000",
1630747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070413T060000",
1631747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070414T060000",
1632747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070415T060000",
1633747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070416T060000",
1634747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070417T060000",
1635747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070418T060000",
1636747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070419T060000",
1637747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070420T060000",
1638747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070421T060000",
1639747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070422T060000",
1640747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070423T060000",
1641747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070424T060000",
1642747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070425T060000",
1643747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070426T060000",
1644747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070427T060000",
1645747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070428T060000",
1646747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070429T060000",
1647747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070430T060000",
1648747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070501T060000",
1649747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070502T060000",
1650747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070503T060000",
1651747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070504T060000",
1652747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070505T060000",
1653747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070506T060000",
1654747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070507T060000",
1655747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070508T060000",
1656747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070509T060000",
1657747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070510T060000",
1658747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070511T060000",
1659747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070512T060000",
1660747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070513T060000",
1661747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070514T060000",
1662747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070515T060000",
1663747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070516T060000",
1664747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070517T060000",
1665747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070518T060000",
1666747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070519T060000",
1667747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070520T060000",
1668747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070521T060000",
1669747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070522T060000",
1670747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070523T060000",
1671747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070524T060000",
1672747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070525T060000",
1673747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070526T060000",
1674747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070527T060000",
1675747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070528T060000",
1676747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070529T060000",
1677747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070530T060000",
1678747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070531T060000",
1679747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070601T060000",
1680747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070602T060000",
1681747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070603T060000",
1682747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070604T060000",
1683747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070605T060000",
1684747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070606T060000",
1685747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070607T060000",
1686747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070608T060000",
1687747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070609T060000",
1688747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070610T060000",
1689747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070611T060000",
1690747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070612T060000",
1691747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070613T060000",
1692747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070614T060000",
1693747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070615T060000",
1694747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070616T060000",
1695747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070617T060000",
1696747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070618T060000",
1697747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070619T060000",
1698747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070620T060000",
1699747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070621T060000",
1700747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070622T060000",
1701747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070623T060000",
1702747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070624T060000",
1703747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070625T060000",
1704747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070626T060000",
1705747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070627T060000",
1706747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070628T060000",
1707747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070629T060000",
1708747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070630T060000",
1709747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070701T060000",
1710747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070702T060000",
1711747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070703T060000",
1712747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070704T060000",
1713747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070705T060000",
1714747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070706T060000",
1715747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070707T060000",
1716747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070708T060000",
1717747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070709T060000",
1718747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070710T060000",
1719747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070711T060000",
1720747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070712T060000",
1721747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070713T060000",
1722747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070714T060000",
1723747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070715T060000",
1724747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070716T060000",
1725747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070717T060000",
1726747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070718T060000",
1727747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070719T060000",
1728747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070720T060000",
1729747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070721T060000",
1730747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070722T060000",
1731747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070723T060000",
1732747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070724T060000",
1733747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070725T060000",
1734747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070726T060000",
1735747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070727T060000",
1736747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070728T060000",
1737747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070729T060000",
1738747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070730T060000",
1739747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070731T060000",
1740747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070801T060000",
1741747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070802T060000",
1742747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070803T060000",
1743747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070804T060000",
1744747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070805T060000",
1745747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070806T060000",
1746747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070807T060000",
1747747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070808T060000",
1748747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070809T060000",
1749747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070810T060000",
1750747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070811T060000",
1751747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070812T060000",
1752747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070813T060000",
1753747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070814T060000",
1754747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070815T060000",
1755747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070816T060000",
1756747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070817T060000",
1757747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070818T060000",
1758747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070819T060000",
1759747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070820T060000",
1760747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070821T060000",
1761747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070822T060000",
1762747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070823T060000",
1763747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070824T060000",
1764747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070825T060000",
1765747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070826T060000",
1766747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070827T060000",
1767747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070828T060000",
1768747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070829T060000",
1769747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070830T060000",
1770747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070831T060000",
1771747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070901T060000",
1772747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070902T060000",
1773747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070903T060000",
1774747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070904T060000",
1775747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070905T060000",
1776747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070906T060000",
1777747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070907T060000",
1778747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070908T060000",
1779747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070909T060000",
1780747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070910T060000",
1781747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070911T060000",
1782747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070912T060000",
1783747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070913T060000",
1784747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070914T060000",
1785747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070915T060000",
1786747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070916T060000",
1787747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070917T060000",
1788747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070918T060000",
1789747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070919T060000",
1790747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070920T060000",
1791747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070921T060000",
1792747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070922T060000",
1793747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070923T060000",
1794747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070924T060000",
1795747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070925T060000",
1796747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070926T060000",
1797747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070927T060000",
1798747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070928T060000",
1799747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070929T060000",
1800747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070930T060000",
1801747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071001T060000",
1802747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071002T060000",
1803747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20071002T060000");
1804747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
1805747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
1806747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @MediumTest
1807747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar7() throws Exception {
1808747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Every 3 days
1809747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061003T080000",
1810747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=DAILY;INTERVAL=3;WKST=SU",
1811747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
1812747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
1813747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
1814747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061003T080000",
1815747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061006T080000",
1816747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061009T080000",
1817747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061012T080000",
1818747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061015T080000",
1819747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061018T080000",
1820747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061021T080000",
1821747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061024T080000",
1822747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061027T080000",
1823747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061030T080000",
1824747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061102T080000",
1825747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061105T080000",
1826747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061108T080000",
1827747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061111T080000",
1828747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061114T080000",
1829747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061117T080000",
1830747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061120T080000",
1831747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061123T080000",
1832747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061126T080000",
1833747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061129T080000",
1834747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061202T080000",
1835747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061205T080000",
1836747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061208T080000",
1837747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061211T080000",
1838747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061214T080000",
1839747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061217T080000",
1840747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061220T080000",
1841747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061223T080000",
1842747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061226T080000",
1843747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061229T080000",
1844747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070101T080000",
1845747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070104T080000",
1846747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070107T080000",
1847747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070110T080000",
1848747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070113T080000",
1849747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070116T080000",
1850747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070119T080000",
1851747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070122T080000",
1852747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070125T080000",
1853747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070128T080000",
1854747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070131T080000",
1855747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070203T080000",
1856747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070206T080000",
1857747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070209T080000",
1858747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070212T080000",
1859747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070215T080000",
1860747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070218T080000",
1861747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070221T080000",
1862747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070224T080000",
1863747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070227T080000",
1864747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070302T080000",
1865747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070305T080000",
1866747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070308T080000",
1867747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070311T080000",
1868747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070314T080000",
1869747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070317T080000",
1870747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070320T080000",
1871747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070323T080000",
1872747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070326T080000",
1873747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070329T080000",
1874747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070401T080000",
1875747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070404T080000",
1876747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070407T080000",
1877747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070410T080000",
1878747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070413T080000",
1879747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070416T080000",
1880747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070419T080000",
1881747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070422T080000",
1882747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070425T080000",
1883747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070428T080000",
1884747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070501T080000",
1885747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070504T080000",
1886747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070507T080000",
1887747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070510T080000",
1888747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070513T080000",
1889747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070516T080000",
1890747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070519T080000",
1891747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070522T080000",
1892747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070525T080000",
1893747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070528T080000",
1894747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070531T080000",
1895747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070603T080000",
1896747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070606T080000",
1897747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070609T080000",
1898747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070612T080000",
1899747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070615T080000",
1900747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070618T080000",
1901747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070621T080000",
1902747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070624T080000",
1903747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070627T080000",
1904747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070630T080000",
1905747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070703T080000",
1906747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070706T080000",
1907747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070709T080000",
1908747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070712T080000",
1909747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070715T080000",
1910747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070718T080000",
1911747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070721T080000",
1912747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070724T080000",
1913747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070727T080000",
1914747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070730T080000",
1915747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070802T080000",
1916747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070805T080000",
1917747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070808T080000",
1918747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070811T080000",
1919747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070814T080000",
1920747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070817T080000",
1921747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070820T080000",
1922747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070823T080000",
1923747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070826T080000",
1924747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070829T080000",
1925747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070901T080000",
1926747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070904T080000",
1927747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070907T080000",
1928747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070910T080000",
1929747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070913T080000",
1930747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070916T080000",
1931747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070919T080000",
1932747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070922T080000",
1933747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070925T080000",
1934747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070928T080000",
1935747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071001T080000",
1936747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071004T080000",
1937747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071007T080000",
1938747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071010T080000",
1939747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071013T080000",
1940747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071016T080000",
1941747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071019T080000",
1942747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071022T080000",
1943747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071025T080000",
1944747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071028T080000",
1945747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071031T080000",
1946747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071103T080000",
1947747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071106T080000",
1948747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071109T080000",
1949747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071112T080000",
1950747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071115T080000",
1951747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071118T080000",
1952747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071121T080000",
1953747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071124T080000",
1954747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071127T080000",
1955747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071130T080000",
1956747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071203T080000",
1957747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071206T080000",
1958747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071209T080000",
1959747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071212T080000",
1960747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071215T080000",
1961747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071218T080000",
1962747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071221T080000",
1963747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071224T080000",
1964747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071227T080000",
1965747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071230T080000",
1966747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080102T080000",
1967747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080105T080000",
1968747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080108T080000",
1969747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080111T080000",
1970747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080114T080000",
1971747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080117T080000",
1972747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080120T080000",
1973747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080123T080000",
1974747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080126T080000",
1975747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080129T080000",
1976747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080201T080000",
1977747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080204T080000",
1978747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080207T080000",
1979747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080210T080000",
1980747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080213T080000",
1981747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080216T080000",
1982747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080219T080000",
1983747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080222T080000",
1984747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080225T080000",
1985747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080228T080000",
1986747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080302T080000",
1987747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080305T080000",
1988747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080308T080000",
1989747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080311T080000",
1990747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080314T080000",
1991747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080317T080000",
1992747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080320T080000",
1993747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080323T080000",
1994747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080326T080000",
1995747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080329T080000",
1996747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080401T080000",
1997747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080404T080000",
1998747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080407T080000",
1999747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080410T080000",
2000747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080413T080000",
2001747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080416T080000",
2002747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080419T080000",
2003747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080422T080000",
2004747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080425T080000",
2005747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080428T080000",
2006747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080501T080000",
2007747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080504T080000",
2008747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080507T080000",
2009747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080510T080000",
2010747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080513T080000",
2011747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080516T080000",
2012747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080519T080000",
2013747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080522T080000",
2014747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080525T080000",
2015747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080528T080000",
2016747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080531T080000",
2017747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080603T080000",
2018747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080606T080000",
2019747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080609T080000",
2020747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080612T080000",
2021747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080615T080000",
2022747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080618T080000",
2023747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080621T080000",
2024747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080624T080000",
2025747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080627T080000",
2026747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080630T080000",
2027747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080703T080000",
2028747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080706T080000",
2029747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080709T080000",
2030747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080712T080000",
2031747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080715T080000",
2032747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080718T080000",
2033747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080721T080000",
2034747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080724T080000",
2035747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080727T080000",
2036747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080730T080000",
2037747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080802T080000",
2038747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080805T080000",
2039747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080808T080000",
2040747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080811T080000",
2041747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080814T080000",
2042747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080817T080000",
2043747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080820T080000",
2044747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080823T080000",
2045747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080826T080000",
2046747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080829T080000",
2047747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080901T080000",
2048747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080904T080000",
2049747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080907T080000",
2050747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080910T080000",
2051747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080913T080000",
2052747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080916T080000",
2053747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080919T080000",
2054747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080922T080000",
2055747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080925T080000",
2056747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080928T080000",
2057747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081001T080000",
2058747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081004T080000",
2059747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081007T080000",
2060747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081010T080000",
2061747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081013T080000",
2062747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081016T080000",
2063747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081019T080000",
2064747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081022T080000",
2065747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081025T080000",
2066747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081028T080000",
2067747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081031T080000",
2068747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081103T080000",
2069747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081106T080000",
2070747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081109T080000",
2071747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081112T080000",
2072747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081115T080000",
2073747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081118T080000",
2074747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081121T080000",
2075747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081124T080000",
2076747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081127T080000",
2077747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081130T080000",
2078747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081203T080000",
2079747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081206T080000",
2080747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081209T080000",
2081747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081212T080000",
2082747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081215T080000",
2083747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081218T080000",
2084747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081221T080000",
2085747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081224T080000",
2086747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081227T080000",
2087747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081230T080000",
2088747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20081230T080000");
2089747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2090747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2091747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2092747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar8() throws Exception {
2093747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Annually on October 4
2094747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061004T130000",
2095747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=YEARLY;INTERVAL=1;WKST=SU",
2096747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2097747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
2098747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2099747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061004T130000",
2100747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071004T130000",
2101747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081004T130000",
2102747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20081004T130000");
2103747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2104747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2105747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @MediumTest
2106747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar9() throws Exception {
2107747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Monthly on the last Monday
2108747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061030T170000",
2109747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;INTERVAL=1;BYDAY=-1MO;WKST=SU",
2110747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2111747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
2112747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2113747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061030T170000",
2114747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061127T170000",
2115747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061225T170000",
2116747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070129T170000",
2117747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070226T170000",
2118747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070326T170000",
2119747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070430T170000",
2120747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070528T170000",
2121747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070625T170000",
2122747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070730T170000",
2123747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070827T170000",
2124747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070924T170000",
2125747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071029T170000",
2126747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071126T170000",
2127747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071231T170000",
2128747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080128T170000",
2129747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080225T170000",
2130747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080331T170000",
2131747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080428T170000",
2132747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080526T170000",
2133747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080630T170000",
2134747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080728T170000",
2135747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080825T170000",
2136747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080929T170000",
2137747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081027T170000",
2138747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081124T170000",
2139747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081229T170000",
2140747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20081229T170000");
2141747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2142747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2143747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2144747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar10() throws Exception {
2145747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Every 7 weeks on Tuesday, Wednesday
2146747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061004T090000",
2147747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;UNTIL=20070223T010000Z;INTERVAL=7;BYDAY=TU,WE;WKST=SU",
2148747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2149747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
2150747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2151747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061004T090000",
2152747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061121T090000",
2153747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061122T090000",
2154747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070109T090000",
2155747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070110T090000",
2156747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20070222T170000");
2157747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2158747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2159747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2160747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar11() throws Exception {
2161747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Monthly on day 31
2162747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061031T160000",
2163747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;INTERVAL=1;WKST=SU",
2164747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2165747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
2166747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2167747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061031T160000",
2168747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061231T160000",
2169747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070131T160000",
2170747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070331T160000",
2171747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070531T160000",
2172747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070731T160000",
2173747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070831T160000",
2174747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071031T160000",
2175747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071231T160000",
2176747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080131T160000",
2177747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080331T160000",
2178747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080531T160000",
2179747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080731T160000",
2180747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080831T160000",
2181747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081031T160000",
2182747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081231T160000",
2183747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                },
2184747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20081231T160000");
2185747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2186747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2187747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2188747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testFromGoogleCalendar12() throws Exception {
2189747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Every 2 months on the first Tuesday
2190747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20061004T110000",
2191747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=MONTHLY;INTERVAL=2;BYDAY=1TU;WKST=SU",
2192747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2193747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090101T000000",
2194747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2195747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061004T110000",
2196747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20061205T110000",
2197747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070206T110000",
2198747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070403T110000",
2199747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070605T110000",
2200747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20070807T110000",
2201747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071002T110000",
2202747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20071204T110000",
2203747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080205T110000",
2204747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080401T110000",
2205747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080603T110000",
2206747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20080805T110000",
2207747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081007T110000",
2208747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20081202T110000",
2209747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                },
2210747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20081202T110000");
2211747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2212747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2213747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2214747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testYearly0() throws Exception {
2215747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20080101T100000",
2216747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=YEARLY;UNTIL=20090131T090000Z;BYMONTH=1;BYDAY=SU,MO",
2217747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2218747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080101T000000", "20090130T000000",
2219747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2220747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080101T100000",
2221747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080106T100000",
2222747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080107T100000",
2223747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080113T100000",
2224747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080114T100000",
2225747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080120T100000",
2226747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080121T100000",
2227747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080127T100000",
2228747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20080128T100000",
2229747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20090104T100000",
2230747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20090105T100000",
2231747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20090111T100000",
2232747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20090112T100000",
2233747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20090118T100000",
2234747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20090119T100000",
2235747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20090125T100000",
2236747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    "20090126T100000",
2237747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }, "20090131T010000");
2238747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2239747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2240747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2241747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * This test fails because of a bug in RecurrenceProcessor.expand(). We
2242747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * don't have time to fix the bug yet but we don't want to lose track of
2243747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * this test either. The "failing" prefix on the method name prevents this
2244747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * test from being run. Remove the "failing" prefix when the bug is fixed.
2245747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     *
2246747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2247747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2248747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2249747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void failingTestYearly1() throws Exception {
2250747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060101T100000",
2251747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=YEARLY;COUNT=10;BYYEARDAY=1,100,200",
2252747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2253747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090131T000000",
2254747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2255747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T100000",
2256747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060409T100000",
2257747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060718T100000",
2258747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070101T100000",
2259747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070409T100000",
2260747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070718T100000",
2261747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080101T100000",
2262747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080410T100000",
2263747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080719T100000",
2264747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20090101T100000",
2265747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
2266747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2267747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2268747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2269747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * This test fails because of a bug in RecurrenceProcessor.expand(). We
2270747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * don't have time to fix the bug yet but we don't want to lose track of
2271747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * this test either. The "failing" prefix on the method name prevents this
2272747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * test from being run. Remove the "failing" prefix when the bug is fixed.
2273747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     *
2274747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2275747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2276747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2277747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void failingTestYearly2() throws Exception {
2278747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060101T100000",
2279747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=YEARLY;COUNT=5;BYWEEKNO=6;BYDAY=MO;WKST=MO",
2280747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2281747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090131T000000",
2282747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2283747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T100000",
2284747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060206T100000",
2285747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070205T100000",
2286747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080204T100000",
2287747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20090209T100000",
2288747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
2289747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2290747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2291747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2292747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * This test fails because of a bug in RecurrenceProcessor.expand(). We
2293747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * don't have time to fix the bug yet but we don't want to lose track of
2294747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * this test either. The "failing" prefix on the method name prevents this
2295747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * test from being run. Remove the "failing" prefix when the bug is fixed.
2296747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     *
2297747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2298747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2299747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2300747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void failingTestYearly3() throws Exception {
2301747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20060101T100000",
2302747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=YEARLY;BYMONTH=3;BYDAY=TH",
2303747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2304747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T000000", "20090131T000000",
2305747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2306747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060101T100000",
2307747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060302T100000",
2308747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060309T100000",
2309747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060316T100000",
2310747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060323T100000",
2311747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20060330T100000",
2312747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070301T100000",
2313747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070308T100000",
2314747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070315T100000",
2315747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070322T100000",
2316747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20070329T100000",
2317747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080306T100000",
2318747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080313T100000",
2319747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080320T100000",
2320747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20080327T100000",
2321747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
2322747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2323747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2324747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2325747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * This test fails because of a bug in RecurrenceProcessor.expand(). We
2326747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * don't have time to fix the bug yet but we don't want to lose track of
2327747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * this test either. The "failing" prefix on the method name prevents this
2328747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * test from being run. Remove the "failing" prefix when the bug is fixed.
2329747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     *
2330747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2331747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2332747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @SmallTest
2333747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void failingTestYearly4() throws Exception {
2334747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("19920101T100000",
2335747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8",
2336747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2337747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "19920101T000000", "20121231T000000",
2338747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2339747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "19920101T100000",
2340747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "19921103T100000",
2341747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "19961105T100000",
2342747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20001107T100000",
2343747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20041102T100000",
2344747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20081104T100000",
2345747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20121106T100000",
2346747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
2347747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2348747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2349747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2350747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * Test repeating event from Exchange with count field.
2351747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * Time range covers the whole repetition.
2352747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     *
2353747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2354747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2355747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testCount1() throws Exception {
2356747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20100324T153000",
2357747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;INTERVAL=1;COUNT=10;BYDAY=WE",
2358747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2359747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20100301T000000", "20100630T000000",
2360747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2361747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100324T153000",
2362747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100331T153000",
2363747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100407T153000",
2364747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100414T153000",
2365747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100421T153000",
2366747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100428T153000",
2367747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100505T153000",
2368747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100512T153000",
2369747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100519T153000",
2370747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100526T153000",
2371747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
2372747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2373747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2374747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2375747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * Test repeating event from Exchange with count field.
2376747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * Time range covers the first part of the repetition.
2377747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2378747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2379747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testCount2() throws Exception {
2380747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20100324T153000",
2381747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;INTERVAL=1;COUNT=10;BYDAY=WE",
2382747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2383747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20100501T000000", "20100630T000000",
2384747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{
2385747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100505T153000",
2386747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100512T153000",
2387747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100519T153000",
2388747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        "20100526T153000",
2389747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                });
2390747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2391747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2392747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2393747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * Test repeating event from Exchange with count field.
2394747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * Time range is beyond the repetition.
2395747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2396747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2397747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testCount3() throws Exception {
2398747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20100324T153000",
2399747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;INTERVAL=1;COUNT=10;BYDAY=WE",
2400747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2401747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20100601T000000", "20100630T000000",
2402747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{},
2403747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20100526T153000" /* last */);
2404747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2405747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2406747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2407747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * Test repeating event from Exchange with count field.
2408747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * Time range is before the repetition
2409747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2410747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2411747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void testCount4() throws Exception {
2412747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        verifyRecurrence("20100324T153000",
2413747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "FREQ=WEEKLY;INTERVAL=1;COUNT=10;BYDAY=WE",
2414747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* rdate */, null /* exrule */, null /* exdate */,
2415747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                "20100101T000000", "20100301T000000",
2416747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                new String[]{},
2417747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                null /* last */);
2418747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2419747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2420747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2421747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    // These recurrence rules are used in the loop that measures the performance
2422747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    // of recurrence expansion.
2423747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    private static final String[] performanceRrules = new String[] {
2424747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=DAILY;COUNT=100",
2425747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=DAILY;INTERVAL=2;UNTIL=20080101T000000Z",
2426747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=YEARLY;UNTIL=20090131T090000Z;BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA",
2427747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=WEEKLY;INTERVAL=2;WKST=SU",
2428747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=WEEKLY;COUNT=100;WKST=SU;BYDAY=MO,TU,WE,TH,FR",
2429747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=MONTHLY;COUNT=100;BYDAY=1FR",
2430747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=MONTHLY;INTERVAL=2;COUNT=100;BYDAY=1SU,-1SU",
2431747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=MONTHLY;BYMONTHDAY=1,15",
2432747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=MONTHLY;INTERVAL=3;COUNT=100;BYMONTHDAY=10,11,12,13,14",
2433747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=YEARLY;COUNT=100;BYMONTH=6,7,8",
2434747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=YEARLY;INTERVAL=2;BYMONTH=1,2,3,6,7,8",
2435747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=YEARLY;COUNT=100;BYYEARDAY=1,100,200",
2436747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=YEARLY;BYDAY=2MO",
2437747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=YEARLY;BYWEEKNO=2,3,4;BYDAY=MO",
2438747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=YEARLY;BYMONTH=3,4,5;BYDAY=TH",
2439747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13",
2440747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13",
2441747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=YEARLY;INTERVAL=2;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8",
2442747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=WEEKLY;INTERVAL=2;COUNT=100;BYDAY=TU,SU;WKST=MO",
2443747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        "FREQ=WEEKLY;INTERVAL=2;COUNT=100;BYDAY=TU,SU;WKST=SU",
2444747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    };
2445747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2446747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    /**
2447747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * This test never fails.  It just runs for a while (about 10 seconds)
2448747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * in order to measure the performance of recurrence expansion.
2449747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     *
2450747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     * @throws Exception
2451747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden     */
2452747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @LargeTest
2453747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void performanceTextExpand() throws Exception {
2454747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        String tz = "America/Los_Angeles";
2455747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Time dtstart = new Time(tz);
2456747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Time rangeStart = new Time(tz);
2457747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Time rangeEnd = new Time(tz);
2458747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        TreeSet<Long> out = new TreeSet<Long>();
2459747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2460747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        dtstart.parse("20010101T000000");
2461747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        rangeStart.parse("20010101T000000");
2462747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        rangeEnd.parse("20090101T000000");
2463747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long rangeStartMillis = rangeStart.toMillis(false /* use isDst */);
2464747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long rangeEndMillis = rangeEnd.toMillis(false /* use isDst */);
2465747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2466747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long startTime = System.currentTimeMillis();
2467747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        for (int iterations = 0; iterations < 5; iterations++) {
2468747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            RecurrenceProcessor rp = new RecurrenceProcessor();
2469747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2470747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            int len = performanceRrules.length;
2471747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            for (int i = 0; i < len; i++) {
2472747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                String rrule = performanceRrules[i];
2473747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                //Log.i(TAG, "expanding rule: " + rrule);
2474747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                RecurrenceSet recur = new RecurrenceSet(rrule, null, null, null);
2475747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2476747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                long [] dates = rp.expand(dtstart, recur, rangeStartMillis, rangeEndMillis);
2477747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                //Log.i(TAG, "num instances: " + out.size());
2478747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2479747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                // Also include the time to iterate through the expanded values
2480747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                for (long date : dates) {
2481747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    // Use the date so that this loop is not optimized away.
2482747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    if (date == -1) {
2483747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        Log.e(TAG, "unexpected date");
2484747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                        break;
2485747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                    }
2486747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                }
2487747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden                out.clear();
2488747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            }
2489747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
2490747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2491747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long endTime = System.currentTimeMillis();
2492747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long elapsed = endTime - startTime;
2493747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Log.i(TAG, "testPerformanceExpand() expand() elapsed millis: " + elapsed);
2494747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2495747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2496747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    @LargeTest
2497747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    public void performanceTestNormalize() throws Exception {
2498747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        final int ITERATIONS = 50000;
2499747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2500747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        String tz = "America/Los_Angeles";
2501747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Time date = new Time(tz);
2502747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        date.parse("20090404T100000");
2503747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2504747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long startTime = System.currentTimeMillis();
2505747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2506747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        for (int i = 0; i < ITERATIONS; i++) {
2507747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.month += 1;
2508747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.monthDay += 100;
2509747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.normalize(true);
2510747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.month -= 1;
2511747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.monthDay -= 100;
2512747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.normalize(true);
2513747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
2514747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2515747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long endTime = System.currentTimeMillis();
2516747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        long elapsed = endTime - startTime;
2517747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Log.i(TAG, "date: " + date.format2445());
2518747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Log.i(TAG, "testPerformanceNormalize() normalize() elapsed millis: " + elapsed);
2519747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2520747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        // Time the unsafe version
2521747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        date.parse("20090404T100000");
2522747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        startTime = System.currentTimeMillis();
2523747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        for (int i = 0; i < ITERATIONS; i++) {
2524747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.month += 1;
2525747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.monthDay += 100;
2526747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            RecurrenceProcessor.unsafeNormalize(date);
2527747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.month -= 1;
2528747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            date.monthDay -= 100;
2529747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden            RecurrenceProcessor.unsafeNormalize(date);
2530747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        }
2531747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden
2532747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        endTime = System.currentTimeMillis();
2533747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        elapsed = endTime - startTime;
2534747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Log.i(TAG, "date: " + date.format2445());
2535747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden        Log.i(TAG, "testPerformanceNormalize() unsafeNormalize() elapsed millis: " + elapsed);
2536747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden    }
2537747abc3833aec07827fa6b831e58f78e72c139d1Andy McFadden }
2538