EventRecurrenceTest.java revision 0d3524562e330e74f150a17c4dc4dd66a0faae46
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 170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFaddenpackage com.android.calendarcommon; 180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFaddenimport com.android.calendarcommon.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 * 310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * adb shell am instrument -w -e class android.pim.EventRecurrenceTest \ 320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * com.android.frameworks.coretests/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, 5260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 5270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 5280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 5300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden // for your copying pleasure 5310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void fakeTestXX() throws Exception { 5320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden verifyRecurType("FREQ=DAILY;", 5330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int freq */ EventRecurrence.DAILY, 5340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* String until */ null, 5350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int count */ 0, 5360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int interval */ 0, 5370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysecond */ null, 5380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byminute */ null, 5390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byhour */ null, 5400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byday */ null, 5410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bydayNum */ null, 5420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonthday */ null, 5430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byyearday */ null, 5440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] byweekno */ null, 5450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bymonth */ null, 5460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int[] bysetpos */ null, 5470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* int wkst */ EventRecurrence.MO 5480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden ); 5490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 5510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static void cmp(int vlen, int[] v, int[] correct, String name) { 5520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if ((correct == null && v != null) 5530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || (correct != null && v == null)) { 5540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("One is null, one isn't for " + name 5550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ": correct=" + Arrays.toString(correct) 5560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " actual=" + Arrays.toString(v)); 5570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if ((correct == null && vlen != 0) 5590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || (vlen != (correct == null ? 0 : correct.length))) { 5600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("Reported length mismatch for " + name 5610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ": correct=" + ((correct == null) ? "null" : correct.length) 5620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " actual=" + vlen); 5630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if (correct == null) { 5650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden return; 5660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if (v.length < correct.length) { 5680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("Array length mismatch for " + name 5690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ": correct=" + Arrays.toString(correct) 5700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " actual=" + Arrays.toString(v)); 5710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden for (int i = 0; i < correct.length; i++) { 5730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if (v[i] != correct[i]) { 5740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("Array value mismatch for " + name 5750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + ": correct=" + Arrays.toString(correct) 5760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden + " actual=" + Arrays.toString(v)); 5770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 5810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static boolean eq(String a, String b) { 5820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if ((a == null && b != null) || (a != null && b == null)) { 5830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden return false; 5840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } else { 5850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden return a == b || a.equals(b); 5860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 5880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 5890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static void verifyRecurType(String recur, 5900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int freq, String until, int count, int interval, 5910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] bysecond, int[] byminute, int[] byhour, 5920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] byday, int[] bydayNum, int[] bymonthday, 5930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] byyearday, int[] byweekno, int[] bymonth, 5940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden int[] bysetpos, int wkst) { 5950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence eventRecurrence = new EventRecurrence(); 5960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden eventRecurrence.parse(recur); 5970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden if (eventRecurrence.freq != freq 5980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || !eq(eventRecurrence.until, until) 5990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || eventRecurrence.count != count 6000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || eventRecurrence.interval != interval 6010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden || eventRecurrence.wkst != wkst) { 6020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("Error... got:"); 6030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden print(eventRecurrence); 6040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("expected:"); 6050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("{"); 6060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" freq=" + freq); 6070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" until=" + until); 6080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" count=" + count); 6090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" interval=" + interval); 6100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" wkst=" + wkst); 6110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysecond=" + Arrays.toString(bysecond)); 6120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byminute=" + Arrays.toString(byminute)); 6130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byhour=" + Arrays.toString(byhour)); 6140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byday=" + Arrays.toString(byday)); 6150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bydayNum=" + Arrays.toString(bydayNum)); 6160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonthday=" + Arrays.toString(bymonthday)); 6170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byyearday=" + Arrays.toString(byyearday)); 6180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byweekno=" + Arrays.toString(byweekno)); 6190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonth=" + Arrays.toString(bymonth)); 6200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysetpos=" + Arrays.toString(bysetpos)); 6210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("}"); 6220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden throw new RuntimeException("Mismatch in fields"); 6230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 6240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bysecondCount, eventRecurrence.bysecond, bysecond, "bysecond"); 6250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.byminuteCount, eventRecurrence.byminute, byminute, "byminute"); 6260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.byhourCount, eventRecurrence.byhour, byhour, "byhour"); 6270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bydayCount, eventRecurrence.byday, byday, "byday"); 6280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bydayCount, eventRecurrence.bydayNum, bydayNum, "bydayNum"); 6290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bymonthdayCount, eventRecurrence.bymonthday, bymonthday, "bymonthday"); 6300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.byyeardayCount, eventRecurrence.byyearday, byyearday, "byyearday"); 6310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.byweeknoCount, eventRecurrence.byweekno, byweekno, "byweekno"); 6320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bymonthCount, eventRecurrence.bymonth, bymonth, "bymonth"); 6330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden cmp(eventRecurrence.bysetposCount, eventRecurrence.bysetpos, bysetpos, "bysetpos"); 6340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 6350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 6360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static void print(EventRecurrence er) { 6370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("{"); 6380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" freq=" + er.freq); 6390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" until=" + er.until); 6400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" count=" + er.count); 6410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" interval=" + er.interval); 6420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" wkst=" + er.wkst); 6430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysecond=" + Arrays.toString(er.bysecond)); 6440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysecondCount=" + er.bysecondCount); 6450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byminute=" + Arrays.toString(er.byminute)); 6460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byminuteCount=" + er.byminuteCount); 6470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byhour=" + Arrays.toString(er.byhour)); 6480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byhourCount=" + er.byhourCount); 6490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byday=" + Arrays.toString(er.byday)); 6500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bydayNum=" + Arrays.toString(er.bydayNum)); 6510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bydayCount=" + er.bydayCount); 6520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonthday=" + Arrays.toString(er.bymonthday)); 6530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonthdayCount=" + er.bymonthdayCount); 6540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byyearday=" + Arrays.toString(er.byyearday)); 6550d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byyeardayCount=" + er.byyeardayCount); 6560d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byweekno=" + Arrays.toString(er.byweekno)); 6570d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" byweeknoCount=" + er.byweeknoCount); 6580d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonth=" + Arrays.toString(er.bymonth)); 6590d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bymonthCount=" + er.bymonthCount); 6600d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysetpos=" + Arrays.toString(er.bysetpos)); 6610d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println(" bysetposCount=" + er.bysetposCount); 6620d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden System.out.println("}"); 6630d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 6640d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 6650d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 6660d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /** A list of valid rules. The parser must accept these. */ 6670d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static final String[] GOOD_RRULES = { 6680d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* extracted wholesale from from RFC 2445 section 4.8.5.4 */ 6690d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;COUNT=10", 6700d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;UNTIL=19971224T000000Z", 6710d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;INTERVAL=2", 6720d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;INTERVAL=10;COUNT=5", 6730d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;UNTIL=20000131T090000Z;BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA", 6740d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;UNTIL=20000131T090000Z;BYMONTH=1", 6750d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;COUNT=10", 6760d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;UNTIL=19971224T000000Z", 6770d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;WKST=SU", 6780d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH", 6790d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH", 6800d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR", 6810d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH", 6820d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=10;BYDAY=1FR", 6830d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR", 6840d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU", 6850d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=6;BYDAY=-2MO", 6860d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;BYMONTHDAY=-3", 6870d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15", 6880d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1", 6890d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15", 6900d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;INTERVAL=2;BYDAY=TU", 6910d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;COUNT=10;BYMONTH=6,7", 6920d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3", 6930d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200", 6940d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYDAY=20MO", 6950d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO", 6960d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYMONTH=3;BYDAY=TH", 6970d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8", 6980d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13", 6990d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13", 7000d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8", 7010d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3", 7020d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2", 7030d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z", 7040d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;INTERVAL=15;COUNT=6", 7050d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;INTERVAL=90;COUNT=4", 7060d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40", 7070d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16", 7080d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO", 7090d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU", 7100d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /* a few more */ 7110d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=SECONDLY;BYSECOND=0,15,59", 7120d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;BYMINUTE=0,15,59", 7130d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=HOURLY;BYHOUR=+0,+15,+23", 7140d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=DAILY;X-WHATEVER=blah", // fails on old parser 7150d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden //"freq=daily;wkst=su", // fails on old parser 7160d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }; 7170d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7180d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /** The parser must reject these. */ 7190d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden private static final String[] BAD_RRULES = { 7200d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "INTERVAL=4;FREQ=YEARLY", // FREQ must come first 7210d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;FREQ=MONTHLY", // can't specify twice 7220d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MONTHLY;COUNT=1;COUNT=1", // can't specify twice 7230d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=SECONDLY;BYSECOND=60", // range 7240d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=MINUTELY;BYMINUTE=-1", // range 7250d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=HOURLY;BYHOUR=24", // range 7260d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden "FREQ=YEARLY;BYMONTHDAY=0", // zero not valid 7270d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden //"FREQ=YEARLY;COUNT=1;UNTIL=12345", // can't have both COUNT and UNTIL 7280d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden //"FREQ=DAILY;UNTIL=19970829T021400e", // invalid date 7290d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden }; 7300d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7310d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden /** 7320d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden * Simple test of good/bad rules. 7330d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden */ 7340d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden @SmallTest 7350d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden public void testBasicParse() { 7360d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden for (String rule : GOOD_RRULES) { 7370d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence recur = new EventRecurrence(); 7380d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden recur.parse(rule); 7390d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7400d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7410d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden for (String rule : BAD_RRULES) { 7420d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden EventRecurrence recur = new EventRecurrence(); 7430d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden boolean didThrow = false; 7440d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7450d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden try { 7460d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden recur.parse(rule); 7470d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } catch (InvalidFormatException ife) { 7480d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden didThrow = true; 7490d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7500d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden 7510d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden assertTrue("Expected throw on " + rule, didThrow); 7520d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7530d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden } 7540d3524562e330e74f150a17c4dc4dd66a0faae46Andy McFadden} 755