10d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden/* 20d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * Copyright (C) 2006 The Android Open Source Project 30d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * 40d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * Licensed under the Apache License, Version 2.0 (the "License"); 50d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * you may not use this file except in compliance with the License. 60d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * You may obtain a copy of the License at 70d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * 80d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * http://www.apache.org/licenses/LICENSE-2.0 90d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * 100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * Unless required by applicable law or agreed to in writing, software 110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * distributed under the License is distributed on an "AS IS" BASIS, 120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * See the License for the specific language governing permissions and 140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * limitations under the License. 150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden */ 160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 1706b3293d5af3454a39681cfd659271551354b8a0Michael Chanpackage com.android.calendarcommon2; 180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 1906b3293d5af3454a39681cfd659271551354b8a0Michael Chanimport com.android.calendarcommon2.EventRecurrence.InvalidFormatException; 200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFaddenimport android.test.suitebuilder.annotation.SmallTest; 220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFaddenimport android.test.suitebuilder.annotation.Suppress; 230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFaddenimport junit.framework.TestCase; 250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFaddenimport java.util.Arrays; 270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden/** 290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * Test android.pim.EventRecurrence. 300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * 3106b3293d5af3454a39681cfd659271551354b8a0Michael Chan * adb shell am instrument -w -e class com.android.calendarcommon2.EventRecurrenceTest \ 3206b3293d5af3454a39681cfd659271551354b8a0Michael Chan * com.android.calendarcommon2.tests/android.test.InstrumentationTestRunner 330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden */ 340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFaddenpublic class EventRecurrenceTest extends TestCase { 350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test0() throws Exception { 380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=SECONDLY", 390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.SECONDLY, 400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test1() throws Exception { 590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=MINUTELY", 600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.MINUTELY, 610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test2() throws Exception { 800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=HOURLY", 810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.HOURLY, 820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 1000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test3() throws Exception { 1010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY", 1020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 1030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 1040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 1050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 1060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 1070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 1080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 1090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 1100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 1110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 1120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 1130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 1140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 1150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 1160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 1170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 1180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 1190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 1200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 1210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test4() throws Exception { 1220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=WEEKLY", 1230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.WEEKLY, 1240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 1250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 1260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 1270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 1280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 1290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 1300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 1310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 1320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 1330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 1340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 1350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 1360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 1370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 1380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 1390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 1400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 1410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 1420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test5() throws Exception { 1430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=MONTHLY", 1440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.MONTHLY, 1450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 1460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 1470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 1480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 1490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 1500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 1510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 1520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 1530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 1540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 1550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 1560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 1570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 1580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 1590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 1600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 1610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 1620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 1630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test6() throws Exception { 1640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=YEARLY", 1650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.YEARLY, 1660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 1670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 1680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 1690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 1700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 1710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 1720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 1730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 1740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 1750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 1760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 1770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 1780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 1790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 1800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 1810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 1820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 1830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 1840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test7() throws Exception { 1850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // with an until 1860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY;UNTIL=112233T223344Z", 1870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 1880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ "112233T223344Z", 1890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 1900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 1910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 1920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 1930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 1940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 1950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 1960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 1970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 1980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 1990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 2000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 2010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 2020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 2030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 2040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 2050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 2060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test8() throws Exception { 2070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // with a count 2080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY;COUNT=334", 2090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 2100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 2110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 334, 2120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 2130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 2140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 2150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 2160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 2170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 2180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 2190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 2200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 2210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 2220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 2230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 2240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 2250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 2260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 2270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 2280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test9() throws Exception { 2290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // with a count 2300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY;INTERVAL=5000", 2310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 2320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 2330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 2340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 5000, 2350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 2360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 2370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 2380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 2390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 2400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 2410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 2420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 2430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 2440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 2450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 2460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 2470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 2480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 2490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 2500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test10() throws Exception { 2510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // verifyRecurType all of the BY* ones with one element 2520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY" 2530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYSECOND=0" 2540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYMINUTE=1" 2550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYHOUR=2" 2560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYMONTHDAY=30" 2570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYYEARDAY=300" 2580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYWEEKNO=53" 2590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYMONTH=12" 2600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYSETPOS=-15" 2610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";WKST=SU", 2620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 2630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 2640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 2650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 2660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ new int[]{0}, 2670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ new int[]{1}, 2680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ new int[]{2}, 2690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 2700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 2710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ new int[]{30}, 2720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ new int[]{300}, 2730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ new int[]{53}, 2740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ new int[]{12}, 2750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ new int[]{-15}, 2760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.SU 2770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 2780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 2790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 2800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 2810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test11() throws Exception { 2820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // verifyRecurType all of the BY* ones with one element 2830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY" 2840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYSECOND=0,30,59" 2850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYMINUTE=0,41,59" 2860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYHOUR=0,4,23" 2870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYMONTHDAY=-31,-1,1,31" 2880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYYEARDAY=-366,-1,1,366" 2890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYWEEKNO=-53,-1,1,53" 2900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYMONTH=1,12" 2910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";BYSETPOS=1,2,3,4,500,10000" 2920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ";WKST=SU", 2930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 2940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 2950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 2960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 2970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ new int[]{0, 30, 59}, 2980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ new int[]{0, 41, 59}, 2990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ new int[]{0, 4, 23}, 3000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 3010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 3020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ new int[]{-31, -1, 1, 31}, 3030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ new int[]{-366, -1, 1, 366}, 3040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ new int[]{-53, -1, 1, 53}, 3050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ new int[]{1, 12}, 3060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ new int[]{1, 2, 3, 4, 500, 10000}, 3070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.SU 3080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 3090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 3100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 3110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static class Check { 3120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden Check(String k, int... v) { 3130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden key = k; 3140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden values = v; 3150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 3160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 3170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden String key; 3180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] values; 3190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 3200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 3210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // this is a negative verifyRecurType case to verifyRecurType the range of the numbers accepted 3220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 3230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test12() throws Exception { 3240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden Check[] checks = new Check[]{ 3250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden new Check("BYSECOND", -100, -1, 60, 100), 3260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden new Check("BYMINUTE", -100, -1, 60, 100), 3270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden new Check("BYHOUR", -100, -1, 24, 100), 3280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden new Check("BYMONTHDAY", -100, -32, 0, 32, 100), 3290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden new Check("BYYEARDAY", -400, -367, 0, 367, 400), 3300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden new Check("BYWEEKNO", -100, -54, 0, 54, 100), 3310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden new Check("BYMONTH", -100, -5, 0, 13, 100) 3320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }; 3330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 3340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden for (Check ck : checks) { 3350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden for (int n : ck.values) { 3360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden String recur = "FREQ=DAILY;" + ck.key + "=" + n; 3370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden try { 3380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence er = new EventRecurrence(); 3390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden er.parse(recur); 3400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden fail("Negative verifyRecurType failed. " 3410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " parse failed to throw an exception for '" 3420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + recur + "'"); 3430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } catch (EventRecurrence.InvalidFormatException e) { 3440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // expected 3450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 3460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 3470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 3480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 3490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 3500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // verifyRecurType BYDAY 3510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 3520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test13() throws Exception { 3530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY;BYDAY=1SU,-2MO,+33TU,WE,TH,FR,SA", 3540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 3550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 3560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 3570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 3580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 3590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 3600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 3610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ new int[] { 3620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.SU, 3630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.MO, 3640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.TU, 3650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.WE, 3660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.TH, 3670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.FR, 3680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.SA 3690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }, 3700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ new int[]{1, -2, 33, 0, 0, 0, 0}, 3710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 3720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 3730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 3740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 3750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 3760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 3770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 3780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 3790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 3800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @Suppress 3810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // Repro bug #2331761 - this should fail because of the last comma into BYDAY 3820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test14() throws Exception { 3830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=WEEKLY;WKST=MO;UNTIL=20100129T130000Z;INTERVAL=1;BYDAY=MO,TU,WE,", 3840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.WEEKLY, 3850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ "20100129T130000Z", 3860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 3870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 1, 3880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 3890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 3900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 3910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ new int[] { 3920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.MO, 3930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.TU, 3940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.WE, 3950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }, 3960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ new int[]{0, 0, 0}, 3970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 3980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 3990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 4000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 4010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 4020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 4030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 4040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 4050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 4060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // This test should pass 4070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test15() throws Exception { 4080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=WEEKLY;WKST=MO;UNTIL=20100129T130000Z;INTERVAL=1;" 4090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + "BYDAY=MO,TU,WE,TH,FR,SA,SU", 4100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.WEEKLY, 4110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ "20100129T130000Z", 4120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 4130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 1, 4140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 4150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 4160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 4170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ new int[] { 4180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.MO, 4190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.TU, 4200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.WE, 4210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.TH, 4220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.FR, 4230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.SA, 4240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.SU 4250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }, 4260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ new int[]{0, 0, 0, 0, 0, 0, 0}, 4270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 4280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 4290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 4300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 4310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 4320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 4330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 4340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 4350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 4360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // Sample coming from RFC2445 4370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test16() throws Exception { 4380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1", 4390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.MONTHLY, 4400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 4410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 4420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 4430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 4440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 4450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 4460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ new int[] { 4470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.MO, 4480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.TU, 4490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.WE, 4500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.TH, 4510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.FR 4520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }, 4530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ new int[] {0, 0, 0, 0, 0}, 4540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 4550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 4560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 4570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 4580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ new int[] { -1 }, 4590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 4600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 4610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 4620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 4630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // Sample coming from RFC2445 4640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test17() throws Exception { 4650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY;COUNT=10;INTERVAL=2", 4660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 4670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 4680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 10, 4690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 2, 4700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 4710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 4720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 4730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 4740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 4750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 4760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 4770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 4780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 4790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 4800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 4810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 4820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 4830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 4840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // Sample coming from RFC2445 4850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test18() throws Exception { 4860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10", 4870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.YEARLY, 4880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 4890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 4900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 4910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 4920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 4930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 4940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ new int[] { 4950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.SU 4960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }, 4970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ new int[] { -1 }, 4980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 4990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 5000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 5010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ new int[] { 10 }, 5020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 5030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 5040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 5050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 5070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // Sample coming from bug #1640517 5080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void test19() throws Exception { 5090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=YEARLY;BYMONTH=3;BYDAY=TH", 5100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.YEARLY, 5110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 5120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 5130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 5140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 5150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 5160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 5170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ new int[] { 5180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence.TH 5190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }, 5200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ new int[] { 0 }, 5210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 5220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 5230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 5240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ new int[] { 3 }, 5250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 5260335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int wkst */ EventRecurrence.MO 5270335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan ); 5280335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan } 5290335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan 5300335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan // INTERVAL = 0 -> Interval = 1 bug #5676414 5310335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan public void test20() throws Exception { 5320335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan verifyRecurType("FREQ=YEARLY;BYMONTHDAY=18;BYMONTH=10;INTERVAL=0;", 5330335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int freq */ EventRecurrence.YEARLY, 5340335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* String until */ null, 5350335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int count */ 0, 5360335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int interval */ 1, 5370335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysecond */ null, 5380335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byminute */ null, 5390335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byhour */ null, 5400335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byday */ null, 5410335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bydayNum */ null, 5420335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonthday */ new int[]{18}, 5430335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byyearday */ null, 5440335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byweekno */ null, 5450335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonth */ new int[]{10}, 5460335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysetpos */ null, 5470335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int wkst */ EventRecurrence.MO 5480335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan ); 5490335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan } 5500335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan 5510335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan // Working case: INTERVAL=1 -> Interval = 1 bug #5676414 5520335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan public void test21() throws Exception { 5530335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan verifyRecurType("FREQ=WEEKLY;WKST=SU;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR", 5540335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int freq */ EventRecurrence.WEEKLY, 5550335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* String until */ null, 5560335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int count */ 0, 5570335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int interval */ 1, 5580335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysecond */ null, 5590335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byminute */ null, 5600335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byhour */ null, 5610335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byday */ new int[] { 5620335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.MO, 5630335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.TU, 5640335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.WE, 5650335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.TH, 5660335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.FR, 5670335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan }, 5680335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bydayNum */ new int[]{0, 0, 0, 0, 0}, 5690335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonthday */ null, 5700335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byyearday */ null, 5710335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byweekno */ null, 5720335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonth */ null, 5730335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysetpos */ null, 5740335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int wkst */ EventRecurrence.SU 5750335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan ); 5760335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan } 5770335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan 5780335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan // Working case: INTERVAL=2 -> Interval = 2 bug #5676414 5790335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan public void test22() throws Exception { 5800335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan verifyRecurType("FREQ=WEEKLY;WKST=SU;INTERVAL=2;BYDAY=MO,TU,WE,TH,FR", 5810335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int freq */ EventRecurrence.WEEKLY, 5820335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* String until */ null, 5830335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int count */ 0, 5840335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int interval */ 2, 5850335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysecond */ null, 5860335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byminute */ null, 5870335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byhour */ null, 5880335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byday */ new int[] { 5890335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.MO, 5900335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.TU, 5910335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.WE, 5920335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.TH, 5930335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.FR, 5940335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan }, 5950335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bydayNum */ new int[]{0, 0, 0, 0, 0}, 5960335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonthday */ null, 5970335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byyearday */ null, 5980335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byweekno */ null, 5990335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonth */ null, 6000335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysetpos */ null, 6010335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int wkst */ EventRecurrence.SU 6020335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan ); 6030335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan } 6040335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan 6050335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan // COUNT < 0 -> Count = 1 bug #5676414 6060335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan public void test23() throws Exception { 6070335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan verifyRecurType("FREQ=WEEKLY;COUNT=-20;BYDAY=MO,TU,WE,TH,FR;", 6080335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int freq */ EventRecurrence.WEEKLY, 6090335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* String until */ null, 6100335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int count */ 1, 6110335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int interval */ 0, 6120335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysecond */ null, 6130335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byminute */ null, 6140335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byhour */ null, 6150335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byday */ new int[] { 6160335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.MO, 6170335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.TU, 6180335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.WE, 6190335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.TH, 6200335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.FR, 6210335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan }, 6220335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bydayNum */ new int[]{0, 0, 0, 0, 0}, 6230335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonthday */ null, 6240335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byyearday */ null, 6250335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byweekno */ null, 6260335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonth */ null, 6270335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysetpos */ null, 6280335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int wkst */ EventRecurrence.MO 6290335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan ); 6300335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan } 6310335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan 6320335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan // Working case: COUNT=2 -> Count=2 bug #5676414 6330335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan public void test24() throws Exception { 6340335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan verifyRecurType("FREQ=WEEKLY;COUNT=2;BYDAY=MO,TU,WE,TH,FR;", 6350335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int freq */ EventRecurrence.WEEKLY, 6360335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* String until */ null, 6370335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int count */ 2, 6380335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int interval */ 0, 6390335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysecond */ null, 6400335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byminute */ null, 6410335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byhour */ null, 6420335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byday */ new int[] { 6430335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.MO, 6440335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.TU, 6450335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.WE, 6460335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.TH, 6470335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan EventRecurrence.FR, 6480335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan }, 6490335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bydayNum */ new int[]{0, 0, 0, 0, 0}, 6500335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonthday */ null, 6510335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byyearday */ null, 6520335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] byweekno */ null, 6530335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bymonth */ null, 6540335d9f524da1da1f4d15bba37a1576a9480a36dMichael Chan /* int[] bysetpos */ null, 6550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 6560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 6570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 6580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 6590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // for your copying pleasure 6600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void fakeTestXX() throws Exception { 6610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY;", 6620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 6630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 6640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 6650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 6660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 6670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 6680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 6690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 6700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 6710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 6720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 6730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 6740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 6750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 6760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 6770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 6780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 6790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 6800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static void cmp(int vlen, int[] v, int[] correct, String name) { 6810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if ((correct == null && v != null) 6820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || (correct != null && v == null)) { 6830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("One is null, one isn't for " + name 6840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ": correct=" + Arrays.toString(correct) 6850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " actual=" + Arrays.toString(v)); 6860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 6870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if ((correct == null && vlen != 0) 6880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || (vlen != (correct == null ? 0 : correct.length))) { 6890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("Reported length mismatch for " + name 6900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ": correct=" + ((correct == null) ? "null" : correct.length) 6910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " actual=" + vlen); 6920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 6930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if (correct == null) { 6940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden return; 6950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 6960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if (v.length < correct.length) { 6970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("Array length mismatch for " + name 6980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ": correct=" + Arrays.toString(correct) 6990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " actual=" + Arrays.toString(v)); 7000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden for (int i = 0; i < correct.length; i++) { 7020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if (v[i] != correct[i]) { 7030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("Array value mismatch for " + name 7040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ": correct=" + Arrays.toString(correct) 7050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " actual=" + Arrays.toString(v)); 7060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static boolean eq(String a, String b) { 7110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if ((a == null && b != null) || (a != null && b == null)) { 7120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden return false; 7130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } else { 7140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden return a == b || a.equals(b); 7150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static void verifyRecurType(String recur, 7190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int freq, String until, int count, int interval, 7200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] bysecond, int[] byminute, int[] byhour, 7210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] byday, int[] bydayNum, int[] bymonthday, 7220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] byyearday, int[] byweekno, int[] bymonth, 7230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] bysetpos, int wkst) { 7240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence eventRecurrence = new EventRecurrence(); 7250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden eventRecurrence.parse(recur); 7260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if (eventRecurrence.freq != freq 7270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || !eq(eventRecurrence.until, until) 7280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || eventRecurrence.count != count 7290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || eventRecurrence.interval != interval 7300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || eventRecurrence.wkst != wkst) { 7310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("Error... got:"); 7320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden print(eventRecurrence); 7330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("expected:"); 7340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("{"); 7350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" freq=" + freq); 7360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" until=" + until); 7370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" count=" + count); 7380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" interval=" + interval); 7390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" wkst=" + wkst); 7400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysecond=" + Arrays.toString(bysecond)); 7410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byminute=" + Arrays.toString(byminute)); 7420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byhour=" + Arrays.toString(byhour)); 7430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byday=" + Arrays.toString(byday)); 7440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bydayNum=" + Arrays.toString(bydayNum)); 7450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonthday=" + Arrays.toString(bymonthday)); 7460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byyearday=" + Arrays.toString(byyearday)); 7470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byweekno=" + Arrays.toString(byweekno)); 7480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonth=" + Arrays.toString(bymonth)); 7490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysetpos=" + Arrays.toString(bysetpos)); 7500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("}"); 7510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("Mismatch in fields"); 7520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bysecondCount, eventRecurrence.bysecond, bysecond, "bysecond"); 7540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.byminuteCount, eventRecurrence.byminute, byminute, "byminute"); 7550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.byhourCount, eventRecurrence.byhour, byhour, "byhour"); 7560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bydayCount, eventRecurrence.byday, byday, "byday"); 7570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bydayCount, eventRecurrence.bydayNum, bydayNum, "bydayNum"); 7580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bymonthdayCount, eventRecurrence.bymonthday, bymonthday, "bymonthday"); 7590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.byyeardayCount, eventRecurrence.byyearday, byyearday, "byyearday"); 7600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.byweeknoCount, eventRecurrence.byweekno, byweekno, "byweekno"); 7610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bymonthCount, eventRecurrence.bymonth, bymonth, "bymonth"); 7620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bysetposCount, eventRecurrence.bysetpos, bysetpos, "bysetpos"); 7630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static void print(EventRecurrence er) { 7660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("{"); 7670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" freq=" + er.freq); 7680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" until=" + er.until); 7690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" count=" + er.count); 7700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" interval=" + er.interval); 7710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" wkst=" + er.wkst); 7720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysecond=" + Arrays.toString(er.bysecond)); 7730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysecondCount=" + er.bysecondCount); 7740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byminute=" + Arrays.toString(er.byminute)); 7750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byminuteCount=" + er.byminuteCount); 7760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byhour=" + Arrays.toString(er.byhour)); 7770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byhourCount=" + er.byhourCount); 7780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byday=" + Arrays.toString(er.byday)); 7790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bydayNum=" + Arrays.toString(er.bydayNum)); 7800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bydayCount=" + er.bydayCount); 7810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonthday=" + Arrays.toString(er.bymonthday)); 7820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonthdayCount=" + er.bymonthdayCount); 7830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byyearday=" + Arrays.toString(er.byyearday)); 7840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byyeardayCount=" + er.byyeardayCount); 7850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byweekno=" + Arrays.toString(er.byweekno)); 7860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byweeknoCount=" + er.byweeknoCount); 7870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonth=" + Arrays.toString(er.bymonth)); 7880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonthCount=" + er.bymonthCount); 7890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysetpos=" + Arrays.toString(er.bysetpos)); 7900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysetposCount=" + er.bysetposCount); 7910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("}"); 7920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /** A list of valid rules. The parser must accept these. */ 7960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static final String[] GOOD_RRULES = { 7970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* extracted wholesale from from RFC 2445 section 4.8.5.4 */ 7980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;COUNT=10", 7990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;UNTIL=19971224T000000Z", 8000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;INTERVAL=2", 8010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;INTERVAL=10;COUNT=5", 8020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;UNTIL=20000131T090000Z;BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA", 8030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;UNTIL=20000131T090000Z;BYMONTH=1", 8040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;COUNT=10", 8050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;UNTIL=19971224T000000Z", 8060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;WKST=SU", 8070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH", 8080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH", 8090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR", 8100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH", 8110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=10;BYDAY=1FR", 8120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR", 8130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU", 8140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=6;BYDAY=-2MO", 8150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;BYMONTHDAY=-3", 8160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15", 8170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1", 8180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15", 8190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;INTERVAL=2;BYDAY=TU", 8200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;COUNT=10;BYMONTH=6,7", 8210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3", 8220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200", 8230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYDAY=20MO", 8240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO", 8250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYMONTH=3;BYDAY=TH", 8260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8", 8270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13", 8280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13", 8290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8", 8300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3", 8310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2", 8320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z", 8330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;INTERVAL=15;COUNT=6", 8340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;INTERVAL=90;COUNT=4", 8350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40", 8360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16", 8370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO", 8380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU", 8390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* a few more */ 8400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=SECONDLY;BYSECOND=0,15,59", 8410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;BYMINUTE=0,15,59", 8420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=HOURLY;BYHOUR=+0,+15,+23", 8436d5684cdf6886a46ee993c8ec986d306472cd5b0Andy McFadden "INTERVAL=4;FREQ=YEARLY", 8446d5684cdf6886a46ee993c8ec986d306472cd5b0Andy McFadden "FREQ=DAILY;X-WHATEVER=blah", 8456d5684cdf6886a46ee993c8ec986d306472cd5b0Andy McFadden //"freq=daily;wkst=su", // mixed case currently not allowed 846a991358d94947cc0dbd6a8d75dd77b5fd377734bAlice Yang "FREQ=WEEKLY;INTERVAL=2;BYDAY=Mo;;UNTIL=20120327T000000Z", // double simicolon should be allowed 847a991358d94947cc0dbd6a8d75dd77b5fd377734bAlice Yang "FREQ=MONTHLY;BYDAY=1Mo", 848a991358d94947cc0dbd6a8d75dd77b5fd377734bAlice Yang "FREQ=MONTHLY;BYDAY=2Mo,2We,4Mo,4We", 849a991358d94947cc0dbd6a8d75dd77b5fd377734bAlice Yang "FREQ=MONTHLY;WKST=SU;BYMONTHDAY=25;UNTIL=20110524", 850a991358d94947cc0dbd6a8d75dd77b5fd377734bAlice Yang "FREQ=WEEKLY;BYDAY=MO;WKST=SU;UNTIL=20111218T010000Z" 8510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }; 8520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 8530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /** The parser must reject these. */ 8540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static final String[] BAD_RRULES = { 8550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;FREQ=MONTHLY", // can't specify twice 8560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=1;COUNT=1", // can't specify twice 8570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=SECONDLY;BYSECOND=60", // range 8580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;BYMINUTE=-1", // range 8590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=HOURLY;BYHOUR=24", // range 8600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYMONTHDAY=0", // zero not valid 8616d5684cdf6886a46ee993c8ec986d306472cd5b0Andy McFadden "BYMONTHDAY=1", // must specify FREQ 8620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden //"FREQ=YEARLY;COUNT=1;UNTIL=12345", // can't have both COUNT and UNTIL 8630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden //"FREQ=DAILY;UNTIL=19970829T021400e", // invalid date 8640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }; 8650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 8660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /** 8670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * Simple test of good/bad rules. 8680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden */ 8690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 8700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void testBasicParse() { 8710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden for (String rule : GOOD_RRULES) { 8720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence recur = new EventRecurrence(); 8730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden recur.parse(rule); 8740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 8750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 8760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden for (String rule : BAD_RRULES) { 8770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence recur = new EventRecurrence(); 8780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden boolean didThrow = false; 8790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 8800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden try { 8810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden recur.parse(rule); 8820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } catch (InvalidFormatException ife) { 8830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden didThrow = true; 8840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 8850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 8860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden assertTrue("Expected throw on " + rule, didThrow); 8870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 8880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 8890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden} 890