]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / duration / PeriodBuilderFactoryTest.java
1 /*\r
2 ******************************************************************************\r
3 * Copyright (C) 2007-2010, International Business Machines Corporation and   *\r
4 * others. All Rights Reserved.                                               *\r
5 ******************************************************************************\r
6 */\r
7 \r
8 // Copyright 2007 Google Inc.  All Rights Reserved.\r
9 \r
10 package com.ibm.icu.dev.test.duration;\r
11 \r
12 import com.ibm.icu.dev.test.TestFmwk;\r
13 import com.ibm.icu.impl.duration.BasicPeriodFormatterService;\r
14 import com.ibm.icu.impl.duration.Period;\r
15 import com.ibm.icu.impl.duration.PeriodBuilder;\r
16 import com.ibm.icu.impl.duration.PeriodBuilderFactory;\r
17 import com.ibm.icu.impl.duration.TimeUnit;\r
18 import com.ibm.icu.impl.duration.TimeUnitConstants;\r
19 \r
20 public class PeriodBuilderFactoryTest extends TestFmwk implements TimeUnitConstants {\r
21     private PeriodBuilderFactory pbf;\r
22 \r
23     private static final long[] approxDurations = {\r
24       36525L*24*60*60*10, 3045*24*60*60*10L, 7*24*60*60*1000L, 24*60*60*1000L, \r
25       60*60*1000L, 60*1000L, 1000L, 1L\r
26     };\r
27     \r
28     /**\r
29      * Invoke the tests.\r
30      */\r
31     public static void main(String[] args) {\r
32         new PeriodBuilderFactoryTest().run(args);\r
33     }\r
34 \r
35     public void testSetAvailableUnitRange() {\r
36         // sanity check, make sure by default all units are set\r
37         pbf = BasicPeriodFormatterService.getInstance().newPeriodBuilderFactory();\r
38         pbf.setLocale("en"); // in en locale, all units always available\r
39         PeriodBuilder b = pbf.getSingleUnitBuilder();\r
40         for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {\r
41             Period p = b.create((long)(approxDurations[unit.ordinal()]*2.5));\r
42             assertTrue(null, p.isSet(unit));\r
43         }\r
44 \r
45         pbf.setAvailableUnitRange(MINUTE, MONTH);\r
46         // units that are not available are never set\r
47         b = pbf.getSingleUnitBuilder();\r
48         for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {\r
49             Period p = b.create((long)(approxDurations[unit.ordinal()]*2.5));\r
50             assertEquals(null, p.isSet(unit), unit.ordinal() >= MONTH.ordinal() && unit.ordinal() <= MINUTE.ordinal());\r
51         }\r
52 \r
53         // fixed unit builder returns null when unit is not available\r
54         for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {\r
55             b = pbf.getFixedUnitBuilder(unit);\r
56             if (unit.ordinal() >= MONTH.ordinal() && unit.ordinal() <= MINUTE.ordinal()) {\r
57                 assertNotNull(null, b);\r
58             } else {\r
59                 assertNull(null, b);\r
60             }\r
61         }\r
62 \r
63         // can't set empty range\r
64         try {\r
65             pbf.setAvailableUnitRange(MONTH, MINUTE);\r
66             fail("set empty range");\r
67         } catch (IllegalArgumentException e) {\r
68             // pass\r
69         }\r
70     }\r
71 \r
72     public void testSetUnitIsAvailable() {\r
73         pbf = BasicPeriodFormatterService.getInstance().newPeriodBuilderFactory();\r
74         pbf.setAvailableUnitRange(MONTH, MONTH);\r
75         assertNotNull(null, pbf.getSingleUnitBuilder());\r
76         assertNotNull(null, pbf.getOneOrTwoUnitBuilder());\r
77         assertNotNull(null, pbf.getMultiUnitBuilder(2));\r
78 \r
79         // now no units are available, make sure we can't generate a builder\r
80         pbf.setUnitIsAvailable(MONTH, false);\r
81         assertNull(null, pbf.getSingleUnitBuilder());\r
82         assertNull(null, pbf.getOneOrTwoUnitBuilder());\r
83         assertNull(null, pbf.getMultiUnitBuilder(2));\r
84 \r
85         pbf.setUnitIsAvailable(DAY, true);\r
86         assertNotNull(null, pbf.getSingleUnitBuilder());\r
87         assertNotNull(null, pbf.getOneOrTwoUnitBuilder());\r
88         assertNotNull(null, pbf.getMultiUnitBuilder(2));\r
89     }\r
90 }\r