1bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert/* //device/content/providers/pim/DurationTest.java 2bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** 3bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** Copyright 2006, The Android Open Source Project 4bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** 5bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** Licensed under the Apache License, Version 2.0 (the "License"); 6bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** you may not use this file except in compliance with the License. 7bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** You may obtain a copy of the License at 8bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** 9bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** http://www.apache.org/licenses/LICENSE-2.0 10bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** 11bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** Unless required by applicable law or agreed to in writing, software 12bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** distributed under the License is distributed on an "AS IS" BASIS, 13bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** See the License for the specific language governing permissions and 15bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert** limitations under the License. 16bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert*/ 17bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 1806b3293d5af3454a39681cfd659271551354b8a0Michael Chanpackage com.android.calendarcommon2; 19bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 20bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albertimport junit.framework.TestCase; 21bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 22bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albertimport android.test.suitebuilder.annotation.SmallTest; 23bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 24bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albertpublic class DurationTest extends TestCase { 25bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 26bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert private void verifyDuration(String str, 27bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert int sign, int weeks, int days, int hours, 28bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert int minutes, int seconds) throws DateException { 29bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 30bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert Duration duration = new Duration(); 31bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert duration.parse(str); 32bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 33bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert assertEquals("Duration sign is not equal for " + str, sign, duration.sign); 34bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert assertEquals("Duration weeks is not equal for " + str, weeks, duration.weeks); 35bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert assertEquals("Duration days is not equal for " + str, days, duration.days); 36bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert assertEquals("Duration hours is not equal for " + str, hours, duration.hours); 37bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert assertEquals("Duration minutes is not equal for " + str, minutes, duration.minutes); 38bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert assertEquals("Duration seconds is not equal for " + str, seconds, duration.seconds); 39bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert } 40bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 41bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert @SmallTest 42bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert public void testParse() throws Exception { 43bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("P7W", 1, 7, 0, 0, 0, 0); 44bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("PT7W", 1, 7, 0, 0, 0, 0); 45bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("-PT7W", -1, 7, 0, 0, 0, 0); 46bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("P15DT5H0M20S", 1, 0, 15, 5, 0, 20); 47bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("-P15DT5H0M20S", -1, 0, 15, 5, 0, 20); 48bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("PT1H2M3S", 1, 0, 0, 1, 2, 3); 49bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 50bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("", 1, 0, 0, 0, 0, 0); 51bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("P", 1, 0, 0, 0, 0, 0); 52bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("P0W", 1, 0, 0, 0, 0, 0); 53bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("P0D", 1, 0, 0, 0, 0, 0); 54bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("PT0H0M0S", 1, 0, 0, 0, 0, 0); 55bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration("P0DT0H0M0S", 1, 0, 0, 0, 0, 0); 56bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert } 57bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 58bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert @SmallTest 59bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert public void testParseInvalidStrings() throws Exception { 60bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert try { 61bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration(" -P15DT5H0M20S", 0, 0, 0, 0, 0, 0); 62bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert fail("test didn't throw an exception but we expected it to"); 63bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert } catch (DateException e) { 64bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert // expected 65bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert } 66bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 67bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert try { 68bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert verifyDuration(" not even close", 0, 0, 0, 0, 0, 0); 69bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert fail("test didn't throw an exception but we expected it to"); 70bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert } catch (DateException e) { 71bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert // expected 72bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert } 73bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert } 74bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert} 75bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 76bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 77bd003db9ed354cfd87df64d1ffd500e9a4bb8930Alon Albert 78