001: /*
002: * $Id: DurationTest.java 458489 2006-01-04 09:28:14Z ivaynberg $
003: * $Revision: 458489 $
004: * $Date: 2006-01-04 10:28:14 +0100 (Wed, 04 Jan 2006) $
005: *
006: * ====================================================================
007: * Licensed under the Apache License, Version 2.0 (the "License");
008: * you may not use this file except in compliance with the License.
009: * You may obtain a copy of the License at
010: *
011: * http://www.apache.org/licenses/LICENSE-2.0
012: *
013: * Unless required by applicable law or agreed to in writing, software
014: * distributed under the License is distributed on an "AS IS" BASIS,
015: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016: * See the License for the specific language governing permissions and
017: * limitations under the License.
018: */
019: package wicket.util.time;
020:
021: import java.text.NumberFormat;
022: import java.util.Locale;
023:
024: import junit.framework.Assert;
025: import junit.framework.TestCase;
026: import wicket.util.string.StringValueConversionException;
027:
028: /**
029: * Test cases for this object
030: * @author Jonathan Locke
031: */
032: public final class DurationTest extends TestCase {
033: /**
034: *
035: * @throws StringValueConversionException
036: */
037: public void testValues() throws StringValueConversionException {
038: Assert.assertEquals(Duration.milliseconds(3000), Duration
039: .seconds(3));
040: Assert.assertEquals(Duration.seconds(120), Duration.minutes(2));
041: Assert.assertEquals(Duration.minutes(1440), Duration.hours(24));
042: Assert.assertEquals(Duration.hours(48), Duration.days(2));
043: Assert.assertEquals(Duration.minutes(90), Duration
044: .valueOf("90 minutes"));
045: Assert.assertEquals(Duration.days(9), Duration
046: .valueOf("9 days"));
047: Assert.assertEquals(Duration.hours(1), Duration
048: .valueOf("1 hour"));
049: Assert.assertTrue(9 == Duration.days(9).days());
050: Assert.assertTrue(11 == Duration.hours(11).hours());
051: Assert.assertTrue(21 == Duration.minutes(21).minutes());
052: Assert.assertTrue(51 == Duration.seconds(51).seconds());
053: }
054:
055: /**
056: *
057: *
058: */
059: public void testOperations() {
060: Assert.assertTrue(Duration.milliseconds(3001).greaterThan(
061: Duration.seconds(3)));
062: Assert.assertTrue(Duration.milliseconds(2999).lessThan(
063: Duration.seconds(3)));
064: Assert.assertEquals(-1, Duration.milliseconds(2999).compareTo(
065: Duration.seconds(3)));
066: Assert.assertEquals(1, Duration.milliseconds(3001).compareTo(
067: Duration.seconds(3)));
068: Assert.assertEquals(0, Duration.milliseconds(3000).compareTo(
069: Duration.seconds(3)));
070: Assert.assertEquals(Duration.minutes(10), Duration.minutes(4)
071: .add(Duration.minutes(6)));
072: Assert.assertEquals(Duration.ONE_HOUR, Duration.minutes(90)
073: .subtract(Duration.minutes(30)));
074:
075: String value = NumberFormat.getNumberInstance().format(1.5);
076:
077: Assert.assertEquals(value + " minutes", Duration.seconds(90)
078: .toString());
079: Assert.assertEquals("12 hours", Duration.days(0.5).toString());
080: }
081:
082: /**
083: *
084: *
085: */
086: public void testSleep() {
087: Assert.assertTrue(Duration.seconds(0.5).lessThan(
088: Duration.benchmark(new Runnable() {
089: public void run() {
090: Duration.seconds(1.5).sleep();
091: }
092: })));
093:
094: Assert.assertTrue(Duration.seconds(1).greaterThan(
095: Duration.benchmark(new Runnable() {
096: public void run() {
097: Duration.hours(-1).sleep();
098: }
099: })));
100: }
101:
102: /**
103: *
104: * @throws StringValueConversionException
105: */
106: public void testLocale() throws StringValueConversionException {
107: Assert.assertEquals(Duration.minutes(90), Duration
108: .valueOf("90 minutes"));
109: Assert.assertEquals(Duration.hours(1.5), Duration.valueOf(
110: "1.5 hour", Locale.US));
111: Assert.assertEquals(Duration.hours(1.5), Duration.valueOf(
112: "1,5 hour", Locale.GERMAN));
113: Assert.assertEquals("1.5 hours", Duration.hours(1.5).toString(
114: Locale.US));
115: Assert.assertEquals("1,5 hours", Duration.hours(1.5).toString(
116: Locale.GERMAN));
117: }
118: }
|