1 16 package org.joda.time; 17 18 import java.util.Locale ; 19 import java.util.TimeZone ; 20 21 import junit.framework.TestCase; 22 import junit.framework.TestSuite; 23 24 import org.joda.time.chrono.BuddhistChronology; 25 import org.joda.time.chrono.CopticChronology; 26 import org.joda.time.chrono.EthiopicChronology; 27 import org.joda.time.chrono.GJChronology; 28 import org.joda.time.chrono.GregorianChronology; 29 import org.joda.time.chrono.ISOChronology; 30 import org.joda.time.chrono.IslamicChronology; 31 import org.joda.time.chrono.JulianChronology; 32 import org.joda.time.chrono.LenientChronology; 33 import org.joda.time.chrono.LimitChronology; 34 import org.joda.time.chrono.StrictChronology; 35 import org.joda.time.chrono.ZonedChronology; 36 37 42 public class TestChronology extends TestCase { 43 46 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris"); 47 private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London"); 48 49 long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 50 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 51 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 52 366 + 365; 53 long y2003days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 54 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 55 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 56 366 + 365 + 365; 57 58 private long TEST_TIME_NOW = 60 (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY; 61 62 private long TEST_TIME1 = 64 (y2002days + 31L + 28L + 31L + 5L -1L) * DateTimeConstants.MILLIS_PER_DAY 65 + 12L * DateTimeConstants.MILLIS_PER_HOUR 66 + 24L * DateTimeConstants.MILLIS_PER_MINUTE; 67 68 private long TEST_TIME2 = 70 (y2003days + 31L + 28L + 31L + 30L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY 71 + 14L * DateTimeConstants.MILLIS_PER_HOUR 72 + 28L * DateTimeConstants.MILLIS_PER_MINUTE; 73 74 private DateTimeZone originalDateTimeZone = null; 75 private TimeZone originalTimeZone = null; 76 private Locale originalLocale = null; 77 78 public static void main(String [] args) { 79 junit.textui.TestRunner.run(suite()); 80 } 81 82 public static TestSuite suite() { 83 return new TestSuite(TestChronology.class); 84 } 85 86 public TestChronology(String name) { 87 super(name); 88 } 89 90 protected void setUp() throws Exception { 91 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW); 92 originalDateTimeZone = DateTimeZone.getDefault(); 93 originalTimeZone = TimeZone.getDefault(); 94 originalLocale = Locale.getDefault(); 95 DateTimeZone.setDefault(LONDON); 96 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 97 Locale.setDefault(Locale.UK); 98 } 99 100 protected void tearDown() throws Exception { 101 DateTimeUtils.setCurrentMillisSystem(); 102 DateTimeZone.setDefault(originalDateTimeZone); 103 TimeZone.setDefault(originalTimeZone); 104 Locale.setDefault(originalLocale); 105 originalDateTimeZone = null; 106 originalTimeZone = null; 107 originalLocale = null; 108 } 109 110 public void testTest() { 112 assertEquals("2002-06-09T00:00:00.000Z", new Instant(TEST_TIME_NOW).toString()); 113 assertEquals("2002-04-05T12:24:00.000Z", new Instant(TEST_TIME1).toString()); 114 assertEquals("2003-05-06T14:28:00.000Z", new Instant(TEST_TIME2).toString()); 115 } 116 117 public void testGetISO() { 119 assertEquals(ISOChronology.getInstance(), Chronology.getISO()); 120 } 121 122 public void testGetISOUTC() { 123 assertEquals(ISOChronology.getInstanceUTC(), Chronology.getISOUTC()); 124 } 125 126 public void testGetISO_Zone() { 127 assertEquals(ISOChronology.getInstance(PARIS), Chronology.getISO(PARIS)); 128 assertEquals(ISOChronology.getInstance(), Chronology.getISO(null)); 129 } 130 131 public void testGetGJ() { 133 assertEquals(GJChronology.getInstance(), Chronology.getGJ()); 134 } 135 136 public void testGetGJUTC() { 137 assertEquals(GJChronology.getInstanceUTC(), Chronology.getGJUTC()); 138 } 139 140 public void testGetGJ_Zone() { 141 assertEquals(GJChronology.getInstance(PARIS), Chronology.getGJ(PARIS)); 142 assertEquals(GJChronology.getInstance(), Chronology.getGJ(null)); 143 } 144 145 public void testGetGregorian() { 147 assertEquals(GregorianChronology.getInstance(), Chronology.getGregorian()); 148 } 149 150 public void testGetGregorianUTC() { 151 assertEquals(GregorianChronology.getInstanceUTC(), Chronology.getGregorianUTC()); 152 } 153 154 public void testGetGregorian_Zone() { 155 assertEquals(GregorianChronology.getInstance(PARIS), Chronology.getGregorian(PARIS)); 156 assertEquals(GregorianChronology.getInstance(), Chronology.getGregorian(null)); 157 } 158 159 public void testGetJulian() { 161 assertEquals(JulianChronology.getInstance(), Chronology.getJulian()); 162 } 163 164 public void testGetJulianUTC() { 165 assertEquals(JulianChronology.getInstanceUTC(), Chronology.getJulianUTC()); 166 } 167 168 public void testGetJulian_Zone() { 169 assertEquals(JulianChronology.getInstance(PARIS), Chronology.getJulian(PARIS)); 170 assertEquals(JulianChronology.getInstance(), Chronology.getJulian(null)); 171 } 172 173 public void testGetBuddhist() { 175 assertEquals(BuddhistChronology.getInstance(), Chronology.getBuddhist()); 176 } 177 178 public void testGetBuddhistUTC() { 179 assertEquals(BuddhistChronology.getInstanceUTC(), Chronology.getBuddhistUTC()); 180 } 181 182 public void testGetBuddhist_Zone() { 183 assertEquals(BuddhistChronology.getInstance(PARIS), Chronology.getBuddhist(PARIS)); 184 assertEquals(BuddhistChronology.getInstance(), Chronology.getBuddhist(null)); 185 } 186 187 public void testGetCoptic() { 189 assertEquals(CopticChronology.getInstance(), Chronology.getCoptic()); 190 } 191 192 public void testGetCopticUTC() { 193 assertEquals(CopticChronology.getInstanceUTC(), Chronology.getCopticUTC()); 194 } 195 196 public void testGetCoptic_Zone() { 197 assertEquals(CopticChronology.getInstance(PARIS), Chronology.getCoptic(PARIS)); 198 assertEquals(CopticChronology.getInstance(), Chronology.getCoptic(null)); 199 } 200 201 public void testEqualsHashCode_ISO() { 203 Chronology chrono1 = ISOChronology.getInstanceUTC(); 204 Chronology chrono2 = ISOChronology.getInstanceUTC(); 205 Chronology chrono3 = ISOChronology.getInstance(); 206 207 assertEquals(true, chrono1.equals(chrono2)); 208 assertEquals(false, chrono1.equals(chrono3)); 209 210 DateTime dt1 = new DateTime(0L, chrono1); 211 DateTime dt2 = new DateTime(0L, chrono2); 212 DateTime dt3 = new DateTime(0L, chrono3); 213 214 assertEquals(true, dt1.equals(dt2)); 215 assertEquals(false, dt1.equals(dt3)); 216 217 assertEquals(true, chrono1.hashCode() == chrono2.hashCode()); 218 assertEquals(false, chrono1.hashCode() == chrono3.hashCode()); 219 } 220 221 public void testEqualsHashCode_Lenient() { 223 Chronology chrono1 = LenientChronology.getInstance(ISOChronology.getInstanceUTC()); 224 Chronology chrono2 = LenientChronology.getInstance(ISOChronology.getInstanceUTC()); 225 Chronology chrono3 = LenientChronology.getInstance(ISOChronology.getInstance()); 226 227 assertEquals(true, chrono1.equals(chrono2)); 228 assertEquals(false, chrono1.equals(chrono3)); 229 230 DateTime dt1 = new DateTime(0L, chrono1); 231 DateTime dt2 = new DateTime(0L, chrono2); 232 DateTime dt3 = new DateTime(0L, chrono3); 233 234 assertEquals(true, dt1.equals(dt2)); 235 assertEquals(false, dt1.equals(dt3)); 236 237 assertEquals(true, chrono1.hashCode() == chrono2.hashCode()); 238 assertEquals(false, chrono1.hashCode() == chrono3.hashCode()); 239 } 240 241 public void testEqualsHashCode_Strict() { 243 Chronology chrono1 = StrictChronology.getInstance(ISOChronology.getInstanceUTC()); 244 Chronology chrono2 = StrictChronology.getInstance(ISOChronology.getInstanceUTC()); 245 Chronology chrono3 = StrictChronology.getInstance(ISOChronology.getInstance()); 246 247 assertEquals(true, chrono1.equals(chrono2)); 248 assertEquals(false, chrono1.equals(chrono3)); 249 250 DateTime dt1 = new DateTime(0L, chrono1); 251 DateTime dt2 = new DateTime(0L, chrono2); 252 DateTime dt3 = new DateTime(0L, chrono3); 253 254 assertEquals(true, dt1.equals(dt2)); 255 assertEquals(false, dt1.equals(dt3)); 256 257 assertEquals(true, chrono1.hashCode() == chrono2.hashCode()); 258 assertEquals(false, chrono1.hashCode() == chrono3.hashCode()); 259 } 260 261 public void testEqualsHashCode_Limit() { 263 DateTime lower = new DateTime(0L); 264 DateTime higherA = new DateTime(1000000L); 265 DateTime higherB = new DateTime(2000000L); 266 267 Chronology chrono1 = LimitChronology.getInstance(ISOChronology.getInstanceUTC(), lower, higherA); 268 Chronology chrono2A = LimitChronology.getInstance(ISOChronology.getInstanceUTC(), lower, higherA); 269 Chronology chrono2B = LimitChronology.getInstance(ISOChronology.getInstanceUTC(), lower, higherB); 270 Chronology chrono3 = LimitChronology.getInstance(ISOChronology.getInstance(), lower, higherA); 271 272 assertEquals(true, chrono1.equals(chrono2A)); 273 assertEquals(false, chrono1.equals(chrono2B)); 274 assertEquals(false, chrono1.equals(chrono3)); 275 276 DateTime dt1 = new DateTime(0L, chrono1); 277 DateTime dt2A = new DateTime(0L, chrono2A); 278 DateTime dt2B = new DateTime(0L, chrono2B); 279 DateTime dt3 = new DateTime(0L, chrono3); 280 281 assertEquals(true, dt1.equals(dt2A)); 282 assertEquals(false, dt1.equals(dt2B)); 283 assertEquals(false, dt1.equals(dt3)); 284 285 assertEquals(true, chrono1.hashCode() == chrono2A.hashCode()); 286 assertEquals(false, chrono1.hashCode() == chrono2B.hashCode()); 287 assertEquals(false, chrono1.hashCode() == chrono3.hashCode()); 288 } 289 290 public void testEqualsHashCode_Zoned() { 292 DateTimeZone zoneA = DateTimeZone.forID("Europe/Paris"); 293 DateTimeZone zoneB = DateTimeZone.forID("Asia/Tokyo"); 294 295 Chronology chrono1 = ZonedChronology.getInstance(ISOChronology.getInstanceUTC(), zoneA); 296 Chronology chrono2 = ZonedChronology.getInstance(ISOChronology.getInstanceUTC(), zoneA); 297 Chronology chrono3 = ZonedChronology.getInstance(ISOChronology.getInstanceUTC(), zoneB); 298 299 assertEquals(true, chrono1.equals(chrono2)); 300 assertEquals(false, chrono1.equals(chrono3)); 301 302 DateTime dt1 = new DateTime(0L, chrono1); 303 DateTime dt2 = new DateTime(0L, chrono2); 304 DateTime dt3 = new DateTime(0L, chrono3); 305 306 assertEquals(true, dt1.equals(dt2)); 307 assertEquals(false, dt1.equals(dt3)); 308 309 assertEquals(true, chrono1.hashCode() == chrono2.hashCode()); 310 assertEquals(false, chrono1.hashCode() == chrono3.hashCode()); 311 } 312 313 public void testToString() { 315 DateTimeZone paris = DateTimeZone.forID("Europe/Paris"); 316 ISOChronology isoParis = ISOChronology.getInstance(paris); 317 318 assertEquals("ISOChronology[Europe/Paris]", isoParis.toString()); 319 assertEquals("GJChronology[Europe/Paris]", GJChronology.getInstance(paris).toString()); 320 assertEquals("GregorianChronology[Europe/Paris]", GregorianChronology.getInstance(paris).toString()); 321 assertEquals("JulianChronology[Europe/Paris]", JulianChronology.getInstance(paris).toString()); 322 assertEquals("BuddhistChronology[Europe/Paris]", BuddhistChronology.getInstance(paris).toString()); 323 assertEquals("CopticChronology[Europe/Paris]", CopticChronology.getInstance(paris).toString()); 324 assertEquals("EthiopicChronology[Europe/Paris]", EthiopicChronology.getInstance(paris).toString()); 325 assertEquals("IslamicChronology[Europe/Paris]", IslamicChronology.getInstance(paris).toString()); 326 327 assertEquals("LenientChronology[ISOChronology[Europe/Paris]]", LenientChronology.getInstance(isoParis).toString()); 328 assertEquals("StrictChronology[ISOChronology[Europe/Paris]]", StrictChronology.getInstance(isoParis).toString()); 329 assertEquals("LimitChronology[ISOChronology[Europe/Paris], NoLimit, NoLimit]", LimitChronology.getInstance(isoParis, null, null).toString()); 330 assertEquals("ZonedChronology[ISOChronology[UTC], Europe/Paris]", ZonedChronology.getInstance(isoParis, paris).toString()); 331 } 332 333 } 334 | Popular Tags |