109 import java.time.LocalDateTime;
110 import java.time.LocalTime;
111 import java.time.Month;
112 import java.time.OffsetDateTime;
113 import java.time.OffsetTime;
114 import java.time.Year;
115 import java.time.ZoneId;
116 import java.time.ZoneOffset;
117 import java.time.ZonedDateTime;
118 import java.time.chrono.IsoChronology;
119 import java.time.format.DateTimeFormatter;
120 import java.time.format.DateTimeParseException;
121 import java.time.temporal.ChronoField;
122 import java.time.temporal.ChronoUnit;
123 import java.time.temporal.JulianFields;
124 import java.time.temporal.Temporal;
125 import java.time.temporal.TemporalAccessor;
126 import java.time.temporal.TemporalAdjuster;
127 import java.time.temporal.TemporalField;
128 import java.time.temporal.TemporalQuery;
129 import java.util.ArrayList;
130 import java.util.Arrays;
131 import java.util.List;
132
133 import org.testng.annotations.BeforeMethod;
134 import org.testng.annotations.DataProvider;
135 import org.testng.annotations.Test;
136 import test.java.time.MockSimplePeriod;
137
138 /**
139 * Test OffsetDateTime.
140 */
141 @Test
142 public class TCKOffsetDateTime extends AbstractDateTimeTest {
143
144 private static final ZoneId ZONE_PARIS = ZoneId.of("Europe/Paris");
145 private static final ZoneId ZONE_GAZA = ZoneId.of("Asia/Gaza");
146 private static final ZoneOffset OFFSET_PONE = ZoneOffset.ofHours(1);
147 private static final ZoneOffset OFFSET_PTWO = ZoneOffset.ofHours(2);
148 private static final ZoneOffset OFFSET_MONE = ZoneOffset.ofHours(-1);
538 LocalTime localTime = LocalTime.of(h, m, s, n);
539 LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
540 OffsetDateTime a = OffsetDateTime.of(localDateTime, offset);
541
542 assertEquals(a.getYear(), localDate.getYear());
543 assertEquals(a.getMonth(), localDate.getMonth());
544 assertEquals(a.getDayOfMonth(), localDate.getDayOfMonth());
545 assertEquals(a.getDayOfYear(), localDate.getDayOfYear());
546 assertEquals(a.getDayOfWeek(), localDate.getDayOfWeek());
547
548 assertEquals(a.getHour(), localDateTime.getHour());
549 assertEquals(a.getMinute(), localDateTime.getMinute());
550 assertEquals(a.getSecond(), localDateTime.getSecond());
551 assertEquals(a.getNano(), localDateTime.getNano());
552
553 assertEquals(a.toOffsetTime(), OffsetTime.of(localTime, offset));
554 assertEquals(a.toString(), localDateTime.toString() + offset.toString());
555 }
556
557 //-----------------------------------------------------------------------
558 // get(TemporalField)
559 //-----------------------------------------------------------------------
560 @Test
561 public void test_get_TemporalField() {
562 OffsetDateTime test = OffsetDateTime.of(LocalDate.of(2008, 6, 30), LocalTime.of(12, 30, 40, 987654321), OFFSET_PONE);
563 assertEquals(test.get(ChronoField.YEAR), 2008);
564 assertEquals(test.get(ChronoField.MONTH_OF_YEAR), 6);
565 assertEquals(test.get(ChronoField.DAY_OF_MONTH), 30);
566 assertEquals(test.get(ChronoField.DAY_OF_WEEK), 1);
567 assertEquals(test.get(ChronoField.DAY_OF_YEAR), 182);
568
569 assertEquals(test.get(ChronoField.HOUR_OF_DAY), 12);
570 assertEquals(test.get(ChronoField.MINUTE_OF_HOUR), 30);
571 assertEquals(test.get(ChronoField.SECOND_OF_MINUTE), 40);
572 assertEquals(test.get(ChronoField.NANO_OF_SECOND), 987654321);
573 assertEquals(test.get(ChronoField.HOUR_OF_AMPM), 0);
574 assertEquals(test.get(ChronoField.AMPM_OF_DAY), 1);
575
576 assertEquals(test.get(ChronoField.OFFSET_SECONDS), 3600);
577 }
1186 @Test
1187 public void test_toEpochSecond_beforeEpoch() {
1188 for (int i = 0; i < 100000; i++) {
1189 OffsetDateTime a = OffsetDateTime.of(1970, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC).minusSeconds(i);
1190 assertEquals(a.toEpochSecond(), -i);
1191 }
1192 }
1193
1194 //-----------------------------------------------------------------------
1195 // compareTo()
1196 //-----------------------------------------------------------------------
1197 @Test
1198 public void test_compareTo_timeMins() {
1199 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 29, 3, 0, OFFSET_PONE);
1200 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 30, 2, 0, OFFSET_PONE); // a is before b due to time
1201 assertEquals(a.compareTo(b) < 0, true);
1202 assertEquals(b.compareTo(a) > 0, true);
1203 assertEquals(a.compareTo(a) == 0, true);
1204 assertEquals(b.compareTo(b) == 0, true);
1205 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1206 }
1207
1208 @Test
1209 public void test_compareTo_timeSecs() {
1210 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 29, 2, 0, OFFSET_PONE);
1211 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 29, 3, 0, OFFSET_PONE); // a is before b due to time
1212 assertEquals(a.compareTo(b) < 0, true);
1213 assertEquals(b.compareTo(a) > 0, true);
1214 assertEquals(a.compareTo(a) == 0, true);
1215 assertEquals(b.compareTo(b) == 0, true);
1216 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1217 }
1218
1219 @Test
1220 public void test_compareTo_timeNanos() {
1221 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 29, 40, 4, OFFSET_PONE);
1222 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 29, 40, 5, OFFSET_PONE); // a is before b due to time
1223 assertEquals(a.compareTo(b) < 0, true);
1224 assertEquals(b.compareTo(a) > 0, true);
1225 assertEquals(a.compareTo(a) == 0, true);
1226 assertEquals(b.compareTo(b) == 0, true);
1227 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1228 }
1229
1230 @Test
1231 public void test_compareTo_offset() {
1232 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 30, 0, 0, OFFSET_PTWO);
1233 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 30, 0, 0, OFFSET_PONE); // a is before b due to offset
1234 assertEquals(a.compareTo(b) < 0, true);
1235 assertEquals(b.compareTo(a) > 0, true);
1236 assertEquals(a.compareTo(a) == 0, true);
1237 assertEquals(b.compareTo(b) == 0, true);
1238 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1239 }
1240
1241 @Test
1242 public void test_compareTo_offsetNanos() {
1243 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 30, 40, 6, OFFSET_PTWO);
1244 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 30, 40, 5, OFFSET_PONE); // a is before b due to offset
1245 assertEquals(a.compareTo(b) < 0, true);
1246 assertEquals(b.compareTo(a) > 0, true);
1247 assertEquals(a.compareTo(a) == 0, true);
1248 assertEquals(b.compareTo(b) == 0, true);
1249 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1250 }
1251
1252 @Test
1253 public void test_compareTo_both() {
1254 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 50, 0, 0, OFFSET_PTWO);
1255 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 20, 0, 0, OFFSET_PONE); // a is before b on instant scale
1256 assertEquals(a.compareTo(b) < 0, true);
1257 assertEquals(b.compareTo(a) > 0, true);
1258 assertEquals(a.compareTo(a) == 0, true);
1259 assertEquals(b.compareTo(b) == 0, true);
1260 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1261 }
1262
1263 @Test
1264 public void test_compareTo_bothNanos() {
1265 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 20, 40, 4, OFFSET_PTWO);
1266 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 10, 20, 40, 5, OFFSET_PONE); // a is before b on instant scale
1267 assertEquals(a.compareTo(b) < 0, true);
1268 assertEquals(b.compareTo(a) > 0, true);
1269 assertEquals(a.compareTo(a) == 0, true);
1270 assertEquals(b.compareTo(b) == 0, true);
1271 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1272 }
1273
1274 @Test
1275 public void test_compareTo_hourDifference() {
1276 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 10, 0, 0, 0, OFFSET_PONE);
1277 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 0, 0, 0, OFFSET_PTWO); // a is before b despite being same time-line time
1278 assertEquals(a.compareTo(b) < 0, true);
1279 assertEquals(b.compareTo(a) > 0, true);
1280 assertEquals(a.compareTo(a) == 0, true);
1281 assertEquals(b.compareTo(b) == 0, true);
1282 assertEquals(a.toInstant().compareTo(b.toInstant()) == 0, true);
1283 }
1284
1285 @Test
1286 public void test_compareTo_max() {
1287 OffsetDateTime a = OffsetDateTime.of(Year.MAX_VALUE, 12, 31, 23, 59, 0, 0, OFFSET_MONE);
1288 OffsetDateTime b = OffsetDateTime.of(Year.MAX_VALUE, 12, 31, 23, 59, 0, 0, OFFSET_MTWO); // a is before b due to offset
1289 assertEquals(a.compareTo(b) < 0, true);
1290 assertEquals(b.compareTo(a) > 0, true);
1291 assertEquals(a.compareTo(a) == 0, true);
|
109 import java.time.LocalDateTime;
110 import java.time.LocalTime;
111 import java.time.Month;
112 import java.time.OffsetDateTime;
113 import java.time.OffsetTime;
114 import java.time.Year;
115 import java.time.ZoneId;
116 import java.time.ZoneOffset;
117 import java.time.ZonedDateTime;
118 import java.time.chrono.IsoChronology;
119 import java.time.format.DateTimeFormatter;
120 import java.time.format.DateTimeParseException;
121 import java.time.temporal.ChronoField;
122 import java.time.temporal.ChronoUnit;
123 import java.time.temporal.JulianFields;
124 import java.time.temporal.Temporal;
125 import java.time.temporal.TemporalAccessor;
126 import java.time.temporal.TemporalAdjuster;
127 import java.time.temporal.TemporalField;
128 import java.time.temporal.TemporalQuery;
129 import java.time.temporal.TemporalUnit;
130 import java.util.ArrayList;
131 import java.util.Arrays;
132 import java.util.List;
133
134 import org.testng.annotations.BeforeMethod;
135 import org.testng.annotations.DataProvider;
136 import org.testng.annotations.Test;
137 import test.java.time.MockSimplePeriod;
138
139 /**
140 * Test OffsetDateTime.
141 */
142 @Test
143 public class TCKOffsetDateTime extends AbstractDateTimeTest {
144
145 private static final ZoneId ZONE_PARIS = ZoneId.of("Europe/Paris");
146 private static final ZoneId ZONE_GAZA = ZoneId.of("Asia/Gaza");
147 private static final ZoneOffset OFFSET_PONE = ZoneOffset.ofHours(1);
148 private static final ZoneOffset OFFSET_PTWO = ZoneOffset.ofHours(2);
149 private static final ZoneOffset OFFSET_MONE = ZoneOffset.ofHours(-1);
539 LocalTime localTime = LocalTime.of(h, m, s, n);
540 LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
541 OffsetDateTime a = OffsetDateTime.of(localDateTime, offset);
542
543 assertEquals(a.getYear(), localDate.getYear());
544 assertEquals(a.getMonth(), localDate.getMonth());
545 assertEquals(a.getDayOfMonth(), localDate.getDayOfMonth());
546 assertEquals(a.getDayOfYear(), localDate.getDayOfYear());
547 assertEquals(a.getDayOfWeek(), localDate.getDayOfWeek());
548
549 assertEquals(a.getHour(), localDateTime.getHour());
550 assertEquals(a.getMinute(), localDateTime.getMinute());
551 assertEquals(a.getSecond(), localDateTime.getSecond());
552 assertEquals(a.getNano(), localDateTime.getNano());
553
554 assertEquals(a.toOffsetTime(), OffsetTime.of(localTime, offset));
555 assertEquals(a.toString(), localDateTime.toString() + offset.toString());
556 }
557
558 //-----------------------------------------------------------------------
559 // isSupported(TemporalField)
560 //-----------------------------------------------------------------------
561 @Test
562 public void test_isSupported_TemporalField() {
563 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported((TemporalField) null), false);
564 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.NANO_OF_SECOND), true);
565 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.NANO_OF_DAY), true);
566 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.MICRO_OF_SECOND), true);
567 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.MICRO_OF_DAY), true);
568 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.MILLI_OF_SECOND), true);
569 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.MILLI_OF_DAY), true);
570 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.SECOND_OF_MINUTE), true);
571 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.SECOND_OF_DAY), true);
572 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.MINUTE_OF_HOUR), true);
573 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.MINUTE_OF_DAY), true);
574 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.HOUR_OF_AMPM), true);
575 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.CLOCK_HOUR_OF_AMPM), true);
576 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.HOUR_OF_DAY), true);
577 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.CLOCK_HOUR_OF_DAY), true);
578 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.AMPM_OF_DAY), true);
579 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.DAY_OF_WEEK), true);
580 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH), true);
581 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), true);
582 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.DAY_OF_MONTH), true);
583 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.DAY_OF_YEAR), true);
584 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.EPOCH_DAY), true);
585 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.ALIGNED_WEEK_OF_MONTH), true);
586 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.ALIGNED_WEEK_OF_YEAR), true);
587 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.MONTH_OF_YEAR), true);
588 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.PROLEPTIC_MONTH), true);
589 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.YEAR), true);
590 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.YEAR_OF_ERA), true);
591 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.ERA), true);
592 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.INSTANT_SECONDS), true);
593 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoField.OFFSET_SECONDS), true);
594 }
595
596 //-----------------------------------------------------------------------
597 // isSupported(TemporalUnit)
598 //-----------------------------------------------------------------------
599 @Test
600 public void test_isSupported_TemporalUnit() {
601 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported((TemporalUnit) null), false);
602 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.NANOS), true);
603 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.MICROS), true);
604 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.MILLIS), true);
605 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.SECONDS), true);
606 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.MINUTES), true);
607 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.HOURS), true);
608 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.HALF_DAYS), true);
609 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.DAYS), true);
610 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.WEEKS), true);
611 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.MONTHS), true);
612 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.YEARS), true);
613 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.DECADES), true);
614 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.CENTURIES), true);
615 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.MILLENNIA), true);
616 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.ERAS), true);
617 assertEquals(TEST_2008_6_30_11_30_59_000000500.isSupported(ChronoUnit.FOREVER), false);
618 }
619
620 //-----------------------------------------------------------------------
621 // get(TemporalField)
622 //-----------------------------------------------------------------------
623 @Test
624 public void test_get_TemporalField() {
625 OffsetDateTime test = OffsetDateTime.of(LocalDate.of(2008, 6, 30), LocalTime.of(12, 30, 40, 987654321), OFFSET_PONE);
626 assertEquals(test.get(ChronoField.YEAR), 2008);
627 assertEquals(test.get(ChronoField.MONTH_OF_YEAR), 6);
628 assertEquals(test.get(ChronoField.DAY_OF_MONTH), 30);
629 assertEquals(test.get(ChronoField.DAY_OF_WEEK), 1);
630 assertEquals(test.get(ChronoField.DAY_OF_YEAR), 182);
631
632 assertEquals(test.get(ChronoField.HOUR_OF_DAY), 12);
633 assertEquals(test.get(ChronoField.MINUTE_OF_HOUR), 30);
634 assertEquals(test.get(ChronoField.SECOND_OF_MINUTE), 40);
635 assertEquals(test.get(ChronoField.NANO_OF_SECOND), 987654321);
636 assertEquals(test.get(ChronoField.HOUR_OF_AMPM), 0);
637 assertEquals(test.get(ChronoField.AMPM_OF_DAY), 1);
638
639 assertEquals(test.get(ChronoField.OFFSET_SECONDS), 3600);
640 }
1249 @Test
1250 public void test_toEpochSecond_beforeEpoch() {
1251 for (int i = 0; i < 100000; i++) {
1252 OffsetDateTime a = OffsetDateTime.of(1970, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC).minusSeconds(i);
1253 assertEquals(a.toEpochSecond(), -i);
1254 }
1255 }
1256
1257 //-----------------------------------------------------------------------
1258 // compareTo()
1259 //-----------------------------------------------------------------------
1260 @Test
1261 public void test_compareTo_timeMins() {
1262 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 29, 3, 0, OFFSET_PONE);
1263 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 30, 2, 0, OFFSET_PONE); // a is before b due to time
1264 assertEquals(a.compareTo(b) < 0, true);
1265 assertEquals(b.compareTo(a) > 0, true);
1266 assertEquals(a.compareTo(a) == 0, true);
1267 assertEquals(b.compareTo(b) == 0, true);
1268 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1269 assertEquals(OffsetDateTime.timeLineOrder().compare(a, b) < 0, true);
1270 }
1271
1272 @Test
1273 public void test_compareTo_timeSecs() {
1274 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 29, 2, 0, OFFSET_PONE);
1275 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 29, 3, 0, OFFSET_PONE); // a is before b due to time
1276 assertEquals(a.compareTo(b) < 0, true);
1277 assertEquals(b.compareTo(a) > 0, true);
1278 assertEquals(a.compareTo(a) == 0, true);
1279 assertEquals(b.compareTo(b) == 0, true);
1280 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1281 assertEquals(OffsetDateTime.timeLineOrder().compare(a, b) < 0, true);
1282 }
1283
1284 @Test
1285 public void test_compareTo_timeNanos() {
1286 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 29, 40, 4, OFFSET_PONE);
1287 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 29, 40, 5, OFFSET_PONE); // a is before b due to time
1288 assertEquals(a.compareTo(b) < 0, true);
1289 assertEquals(b.compareTo(a) > 0, true);
1290 assertEquals(a.compareTo(a) == 0, true);
1291 assertEquals(b.compareTo(b) == 0, true);
1292 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1293 assertEquals(OffsetDateTime.timeLineOrder().compare(a, b) < 0, true);
1294 }
1295
1296 @Test
1297 public void test_compareTo_offset() {
1298 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 30, 0, 0, OFFSET_PTWO);
1299 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 30, 0, 0, OFFSET_PONE); // a is before b due to offset
1300 assertEquals(a.compareTo(b) < 0, true);
1301 assertEquals(b.compareTo(a) > 0, true);
1302 assertEquals(a.compareTo(a) == 0, true);
1303 assertEquals(b.compareTo(b) == 0, true);
1304 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1305 assertEquals(OffsetDateTime.timeLineOrder().compare(a, b) < 0, true);
1306 }
1307
1308 @Test
1309 public void test_compareTo_offsetNanos() {
1310 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 30, 40, 6, OFFSET_PTWO);
1311 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 30, 40, 5, OFFSET_PONE); // a is before b due to offset
1312 assertEquals(a.compareTo(b) < 0, true);
1313 assertEquals(b.compareTo(a) > 0, true);
1314 assertEquals(a.compareTo(a) == 0, true);
1315 assertEquals(b.compareTo(b) == 0, true);
1316 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1317 assertEquals(OffsetDateTime.timeLineOrder().compare(a, b) < 0, true);
1318 }
1319
1320 @Test
1321 public void test_compareTo_both() {
1322 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 50, 0, 0, OFFSET_PTWO);
1323 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 20, 0, 0, OFFSET_PONE); // a is before b on instant scale
1324 assertEquals(a.compareTo(b) < 0, true);
1325 assertEquals(b.compareTo(a) > 0, true);
1326 assertEquals(a.compareTo(a) == 0, true);
1327 assertEquals(b.compareTo(b) == 0, true);
1328 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1329 assertEquals(OffsetDateTime.timeLineOrder().compare(a, b) < 0, true);
1330 }
1331
1332 @Test
1333 public void test_compareTo_bothNanos() {
1334 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 20, 40, 4, OFFSET_PTWO);
1335 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 10, 20, 40, 5, OFFSET_PONE); // a is before b on instant scale
1336 assertEquals(a.compareTo(b) < 0, true);
1337 assertEquals(b.compareTo(a) > 0, true);
1338 assertEquals(a.compareTo(a) == 0, true);
1339 assertEquals(b.compareTo(b) == 0, true);
1340 assertEquals(a.toInstant().compareTo(b.toInstant()) < 0, true);
1341 assertEquals(OffsetDateTime.timeLineOrder().compare(a, b) < 0, true);
1342 }
1343
1344 @Test
1345 public void test_compareTo_bothInstantComparator() {
1346 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 11, 20, 40, 4, OFFSET_PTWO);
1347 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 10, 20, 40, 5, OFFSET_PONE);
1348 assertEquals(a.compareTo(b), OffsetDateTime.timeLineOrder().compare(a,b), "for nano != nano, compareTo and timeLineOrder() should be the same");
1349 }
1350
1351 @Test
1352 public void test_compareTo_hourDifference() {
1353 OffsetDateTime a = OffsetDateTime.of(2008, 6, 30, 10, 0, 0, 0, OFFSET_PONE);
1354 OffsetDateTime b = OffsetDateTime.of(2008, 6, 30, 11, 0, 0, 0, OFFSET_PTWO); // a is before b despite being same time-line time
1355 assertEquals(a.compareTo(b) < 0, true);
1356 assertEquals(b.compareTo(a) > 0, true);
1357 assertEquals(a.compareTo(a) == 0, true);
1358 assertEquals(b.compareTo(b) == 0, true);
1359 assertEquals(a.toInstant().compareTo(b.toInstant()) == 0, true);
1360 }
1361
1362 @Test
1363 public void test_compareTo_max() {
1364 OffsetDateTime a = OffsetDateTime.of(Year.MAX_VALUE, 12, 31, 23, 59, 0, 0, OFFSET_MONE);
1365 OffsetDateTime b = OffsetDateTime.of(Year.MAX_VALUE, 12, 31, 23, 59, 0, 0, OFFSET_MTWO); // a is before b due to offset
1366 assertEquals(a.compareTo(b) < 0, true);
1367 assertEquals(b.compareTo(a) > 0, true);
1368 assertEquals(a.compareTo(a) == 0, true);
|