/* * Copyright 2001-2005 Stephen Colebourne * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.joda.time.format; import java.util.Locale; import junit.framework.TestCase; import junit.framework.TestSuite; import org.joda.time.Period; /** * This class is a Junit unit test for PeriodFormat. * * @author Stephen Colebourne */ public class TestPeriodFormat extends TestCase { private static final Locale FR = new Locale("fr"); private static final Locale PT = new Locale("pt"); private static final Locale ES = new Locale("es"); private static final Locale DE = new Locale("de"); private static final Locale NL = new Locale("nl"); private Locale originalLocale = null; public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static TestSuite suite() { return new TestSuite(TestPeriodFormat.class); } public TestPeriodFormat(String name) { super(name); } protected void setUp() throws Exception { originalLocale = Locale.getDefault(); Locale.setDefault(Locale.UK); } protected void tearDown() throws Exception { Locale.setDefault(originalLocale); originalLocale = null; } //----------------------------------------------------------------------- public void testSubclassableConstructor() { PeriodFormat f = new PeriodFormat() { // test constructor is protected }; assertNotNull(f); } //----------------------------------------------------------------------- // getDefault() //----------------------------------------------------------------------- public void test_getDefault_formatStandard() { Period p = new Period(0, 0, 0, 1, 5, 6 ,7, 8); assertEquals("1 day, 5 hours, 6 minutes, 7 seconds and 8 milliseconds", PeriodFormat.getDefault().print(p)); } //----------------------------------------------------------------------- public void test_getDefault_FormatOneField() { Period p = Period.days(2); assertEquals("2 days", PeriodFormat.getDefault().print(p)); } //----------------------------------------------------------------------- public void test_getDefault_formatTwoFields() { Period p = Period.days(2).withHours(5); assertEquals("2 days and 5 hours", PeriodFormat.getDefault().print(p)); } //----------------------------------------------------------------------- public void test_getDefault_parseOneField() { Period p = Period.days(2); assertEquals(p, PeriodFormat.getDefault().parsePeriod("2 days")); } //----------------------------------------------------------------------- public void test_getDefault_parseTwoFields() { Period p = Period.days(2).withHours(5); assertEquals(p, PeriodFormat.getDefault().parsePeriod("2 days and 5 hours")); } //----------------------------------------------------------------------- public void test_getDefault_cached() { assertSame(PeriodFormat.getDefault(), PeriodFormat.getDefault()); } //----------------------------------------------------------------------- // wordBased(Locale.FRENCH) //----------------------------------------------------------------------- public void test_wordBased_fr_formatStandard() { Period p = new Period(0, 0, 0, 1, 5, 6 ,7, 8); assertEquals("1 jour, 5 heures, 6 minutes, 7 secondes et 8 millisecondes", PeriodFormat.wordBased(FR).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_fr_FormatOneField() { Period p = Period.days(2); assertEquals("2 jours", PeriodFormat.wordBased(FR).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_fr_formatTwoFields() { Period p = Period.days(2).withHours(5); assertEquals("2 jours et 5 heures", PeriodFormat.wordBased(FR).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_fr_parseOneField() { Period p = Period.days(2); assertEquals(p, PeriodFormat.wordBased(FR).parsePeriod("2 jours")); } //----------------------------------------------------------------------- public void test_wordBased_fr_parseTwoFields() { Period p = Period.days(2).withHours(5); assertEquals(p, PeriodFormat.wordBased(FR).parsePeriod("2 jours et 5 heures")); } //----------------------------------------------------------------------- public void test_wordBased_fr_cached() { assertSame(PeriodFormat.wordBased(FR), PeriodFormat.wordBased(FR)); } //----------------------------------------------------------------------- // wordBased(Locale pt) //----------------------------------------------------------------------- public void test_wordBased_pt_formatStandard() { Period p = new Period(0, 0, 0, 1, 5, 6 ,7, 8); assertEquals("1 dia, 5 horas, 6 minutos, 7 segundos e 8 milissegundos", PeriodFormat.wordBased(PT).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_pt_FormatOneField() { Period p = Period.days(2); assertEquals("2 dias", PeriodFormat.wordBased(PT).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_pt_formatTwoFields() { Period p = Period.days(2).withHours(5); assertEquals("2 dias e 5 horas", PeriodFormat.wordBased(PT).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_pt_parseOneField() { Period p = Period.days(2); assertEquals(p, PeriodFormat.wordBased(PT).parsePeriod("2 dias")); } //----------------------------------------------------------------------- public void test_wordBased_pt_parseTwoFields() { Period p = Period.days(2).withHours(5); assertEquals(p, PeriodFormat.wordBased(PT).parsePeriod("2 dias e 5 horas")); } //----------------------------------------------------------------------- public void test_wordBased_pt_cached() { assertSame(PeriodFormat.wordBased(PT), PeriodFormat.wordBased(PT)); } //----------------------------------------------------------------------- // wordBased(Locale es) //----------------------------------------------------------------------- public void test_wordBased_es_formatStandard() { Period p = new Period(0, 0, 0, 1, 5, 6 ,7, 8); assertEquals("1 dia, 5 horas, 6 minutos, 7 segundos y 8 milisegundos", PeriodFormat.wordBased(ES).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_es_FormatOneField() { Period p = Period.days(2); assertEquals("2 dias", PeriodFormat.wordBased(ES).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_es_formatTwoFields() { Period p = Period.days(2).withHours(5); assertEquals("2 dias y 5 horas", PeriodFormat.wordBased(ES).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_es_parseOneField() { Period p = Period.days(2); assertEquals(p, PeriodFormat.wordBased(ES).parsePeriod("2 dias")); } //----------------------------------------------------------------------- public void test_wordBased_es_parseTwoFields() { Period p = Period.days(2).withHours(5); assertEquals(p, PeriodFormat.wordBased(ES).parsePeriod("2 dias y 5 horas")); } //----------------------------------------------------------------------- public void test_wordBased_es_cached() { assertSame(PeriodFormat.wordBased(ES), PeriodFormat.wordBased(ES)); } //----------------------------------------------------------------------- // wordBased(Locale de) //----------------------------------------------------------------------- public void test_wordBased_de_formatStandard() { Period p = new Period(0, 0, 0, 1, 5, 6 ,7, 8); assertEquals("1 Tag, 5 Stunden, 6 Minuten, 7 Sekunden und 8 Millisekunden", PeriodFormat.wordBased(DE).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_de_FormatOneField() { Period p = Period.days(2); assertEquals("2 Tage", PeriodFormat.wordBased(DE).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_de_formatTwoFields() { Period p = Period.days(2).withHours(5); assertEquals("2 Tage und 5 Stunden", PeriodFormat.wordBased(DE).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_de_parseOneField() { Period p = Period.days(2); assertEquals(p, PeriodFormat.wordBased(DE).parsePeriod("2 Tage")); } //----------------------------------------------------------------------- public void test_wordBased_de_parseTwoFields() { Period p = Period.days(2).withHours(5); assertEquals(p, PeriodFormat.wordBased(DE).parsePeriod("2 Tage und 5 Stunden")); } //----------------------------------------------------------------------- public void test_wordBased_de_cached() { assertSame(PeriodFormat.wordBased(DE), PeriodFormat.wordBased(DE)); } //----------------------------------------------------------------------- // wordBased(Locale nl) //----------------------------------------------------------------------- public void test_wordBased_nl_formatStandard() { Period p = new Period(0, 0, 0, 1, 5, 6 ,7, 8); assertEquals("1 dag, 5 uur, 6 minuten, 7 seconden en 8 milliseconden", PeriodFormat.wordBased(NL).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_nl_FormatOneField() { Period p = Period.days(2); assertEquals("2 dagen", PeriodFormat.wordBased(NL).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_nl_formatTwoFields() { Period p = Period.days(2).withHours(5); assertEquals("2 dagen en 5 uur", PeriodFormat.wordBased(NL).print(p)); } //----------------------------------------------------------------------- public void test_wordBased_nl_parseOneField() { Period p = Period.days(2); assertEquals(p, PeriodFormat.wordBased(NL).parsePeriod("2 dagen")); } //----------------------------------------------------------------------- public void test_wordBased_nl_parseTwoFields() { Period p = Period.days(2).withHours(5); assertEquals(p, PeriodFormat.wordBased(NL).parsePeriod("2 dagen en 5 uur")); } //----------------------------------------------------------------------- public void test_wordBased_nl_cached() { assertSame(PeriodFormat.wordBased(NL), PeriodFormat.wordBased(NL)); } }