// // Copyright (C) 2007 United States Government as represented by the // Administrator of the National Aeronautics and Space Administration // (NASA). All Rights Reserved. // // This software is distributed under the NASA Open Source Agreement // (NOSA), version 1.3. The NOSA has been approved by the Open Source // Initiative. See the file NOSA-1.3-JPF at the top of the distribution // directory tree for the complete NOSA document. // // THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY // KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT // LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO // SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR // A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT // THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT // DOCUMENTATION, IF PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. // package gov.nasa.jpf.test.java.text; import java.text.DateFormat; import java.text.ParseException; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import org.junit.Test; import gov.nasa.jpf.util.test.TestJPF; public class DateFormatTest extends TestJPF { @Test public void testConversionCycle() { if (verifyNoPropertyViolation()) { DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); df.setLenient(true); Date d1 = new Date(); System.out.print("current date is: "); System.out.println(d1); String s = df.format(d1); System.out.print("formatted date is: "); System.out.println(s); try { Date d2 = df.parse(s); System.out.print("re-parsed date is: "); System.out.println(d2); long t1 = d1.getTime(); // in ms long t2 = d2.getTime(); // in ms long delta = Math.abs(t2 - t1); // since we loose the ms in String conversion, d2.after(d1) does not necessarily hold // some locales don't format the seconds, to we might loose them in the re-conversion assert delta <= 60000 : "difference > 1min"; } catch (ParseException x) { assert false : "output did not parse: " + x; } } } @Test public void testSetAndGetTimeZone() { if (verifyNoPropertyViolation()) { DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); TimeZone timeZone = TimeZone.getTimeZone("GMT"); df.setTimeZone(timeZone); assertEquals(timeZone, df.getTimeZone()); timeZone = TimeZone.getTimeZone("PDT"); df.setTimeZone(timeZone); assertEquals(timeZone, df.getTimeZone()); } } @Test public void testFormatWithTimeZone() { if (verifyNoPropertyViolation()) { DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); TimeZone timeZone = TimeZone.getTimeZone("GMT"); df.setTimeZone(timeZone); Calendar calendar = new GregorianCalendar(timeZone); calendar.set(2010, 10, 10, 10, 10, 10); String time = "10:10"; // some Locales don't include the seconds String dft = df.format(calendar.getTime()); assertTrue(dft.contains(time)); df.setTimeZone(TimeZone.getTimeZone("EST")); time = "5:10"; // some Locales don't include the seconds dft = df.format(calendar.getTime()); assertTrue(dft.contains(time)); } } }