001 /*
002 * Copyright 2001-2005 Stephen Colebourne
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.joda.time;
017
018 import java.util.Date;
019 import java.util.Locale;
020
021 import junit.framework.TestCase;
022 import junit.framework.TestSuite;
023
024 import org.joda.time.chrono.ISOChronology;
025 import org.joda.time.convert.ConverterManager;
026 import org.joda.time.convert.MockZeroNullIntegerConverter;
027 import org.joda.time.format.DateTimeFormat;
028 import org.joda.time.format.DateTimeFormatter;
029
030 /**
031 * This class is a Junit unit test for Instant.
032 *
033 * @author Stephen Colebourne
034 */
035 public class TestInstant_Constructors extends TestCase {
036
037 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
038 private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
039
040 // 1970-06-09
041 private long TEST_TIME_NOW =
042 (31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY;
043
044 // 1970-04-05
045 private long TEST_TIME1 =
046 (31L + 28L + 31L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY
047 + 12L * DateTimeConstants.MILLIS_PER_HOUR
048 + 24L * DateTimeConstants.MILLIS_PER_MINUTE;
049
050 // 1971-05-06
051 private long TEST_TIME2 =
052 (365L + 31L + 28L + 31L + 30L + 7L -1L) * DateTimeConstants.MILLIS_PER_DAY
053 + 14L * DateTimeConstants.MILLIS_PER_HOUR
054 + 28L * DateTimeConstants.MILLIS_PER_MINUTE;
055
056 private DateTimeZone zone = null;
057 private Locale locale = null;
058
059 public static void main(String[] args) {
060 junit.textui.TestRunner.run(suite());
061 }
062
063 public static TestSuite suite() {
064 return new TestSuite(TestInstant_Constructors.class);
065 }
066
067 public TestInstant_Constructors(String name) {
068 super(name);
069 }
070
071 protected void setUp() throws Exception {
072 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
073 zone = DateTimeZone.getDefault();
074 locale = Locale.getDefault();
075 DateTimeZone.setDefault(LONDON);
076 java.util.TimeZone.setDefault(LONDON.toTimeZone());
077 Locale.setDefault(Locale.UK);
078 }
079
080 protected void tearDown() throws Exception {
081 DateTimeUtils.setCurrentMillisSystem();
082 DateTimeZone.setDefault(zone);
083 java.util.TimeZone.setDefault(zone.toTimeZone());
084 Locale.setDefault(locale);
085 zone = null;
086 }
087
088 //-----------------------------------------------------------------------
089 /**
090 * Test now ()
091 */
092 public void test_now() throws Throwable {
093 Instant test = Instant.now();
094 assertEquals(ISOChronology.getInstanceUTC(), test.getChronology());
095 assertEquals(TEST_TIME_NOW, test.getMillis());
096 }
097
098 //-----------------------------------------------------------------------
099 public void testParse_noFormatter() throws Throwable {
100 assertEquals(new DateTime(2010, 6, 30, 0, 20, ISOChronology.getInstance(LONDON)).toInstant(), Instant.parse("2010-06-30T01:20+02:00"));
101 assertEquals(new DateTime(2010, 1, 2, 14, 50, ISOChronology.getInstance(LONDON)).toInstant(), Instant.parse("2010-002T14:50"));
102 }
103
104 public void testParse_formatter() throws Throwable {
105 DateTimeFormatter f = DateTimeFormat.forPattern("yyyy--dd MM HH").withChronology(ISOChronology.getInstance(PARIS));
106 assertEquals(new DateTime(2010, 6, 30, 13, 0, ISOChronology.getInstance(PARIS)).toInstant(), Instant.parse("2010--30 06 13", f));
107 }
108
109 //-----------------------------------------------------------------------
110 /**
111 * Test constructor ()
112 */
113 public void testConstructor() throws Throwable {
114 Instant test = new Instant();
115 assertEquals(ISOChronology.getInstanceUTC(), test.getChronology());
116 assertEquals(TEST_TIME_NOW, test.getMillis());
117 }
118
119 //-----------------------------------------------------------------------
120 /**
121 * Test constructor (long)
122 */
123 public void testConstructor_long1() throws Throwable {
124 Instant test = new Instant(TEST_TIME1);
125 assertEquals(ISOChronology.getInstanceUTC(), test.getChronology());
126 assertEquals(TEST_TIME1, test.getMillis());
127 }
128
129 /**
130 * Test constructor (long)
131 */
132 public void testConstructor_long2() throws Throwable {
133 Instant test = new Instant(TEST_TIME2);
134 assertEquals(ISOChronology.getInstanceUTC(), test.getChronology());
135 assertEquals(TEST_TIME2, test.getMillis());
136 }
137
138 //-----------------------------------------------------------------------
139 /**
140 * Test constructor (Object)
141 */
142 public void testConstructor_Object() throws Throwable {
143 Date date = new Date(TEST_TIME1);
144 Instant test = new Instant(date);
145 assertEquals(ISOChronology.getInstanceUTC(), test.getChronology());
146 assertEquals(TEST_TIME1, test.getMillis());
147 }
148
149 /**
150 * Test constructor (Object)
151 */
152 public void testConstructor_invalidObject() throws Throwable {
153 try {
154 new Instant(new Object());
155 fail();
156 } catch (IllegalArgumentException ex) {}
157 }
158
159 /**
160 * Test constructor (Object=null)
161 */
162 public void testConstructor_nullObject() throws Throwable {
163 Instant test = new Instant((Object) null);
164 assertEquals(ISOChronology.getInstanceUTC(), test.getChronology());
165 assertEquals(TEST_TIME_NOW, test.getMillis());
166 }
167
168 /**
169 * Test constructor (Object=null)
170 */
171 public void testConstructor_badconverterObject() throws Throwable {
172 try {
173 ConverterManager.getInstance().addInstantConverter(MockZeroNullIntegerConverter.INSTANCE);
174 Instant test = new Instant(new Integer(0));
175 assertEquals(ISOChronology.getInstanceUTC(), test.getChronology());
176 assertEquals(0L, test.getMillis());
177 } finally {
178 ConverterManager.getInstance().removeInstantConverter(MockZeroNullIntegerConverter.INSTANCE);
179 }
180 }
181
182 }