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