--- old/test/java/time/test/java/time/chrono/TestChronoLocalDate.java 2013-07-18 10:21:33.000000000 -0700 +++ new/test/java/time/test/java/time/chrono/TestChronoLocalDate.java 2013-07-18 10:21:33.000000000 -0700 @@ -60,7 +60,9 @@ import static org.testng.Assert.assertTrue; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.chrono.ChronoLocalDate; +import java.time.chrono.ChronoLocalDateTime; import java.time.chrono.Chronology; import java.time.chrono.ThaiBuddhistChronology; import java.time.chrono.ThaiBuddhistDate; @@ -80,8 +82,8 @@ //----------------------------------------------------------------------- public void test_date_comparator_checkGenerics_ISO() { - List> dates = new ArrayList<>(); - ChronoLocalDate date = LocalDate.of(2013, 1, 1); + List dates = new ArrayList<>(); + ChronoLocalDate date = LocalDate.of(2013, 1, 1); // Insert dates in order, no duplicates dates.add(date.minus(10, ChronoUnit.YEARS)); @@ -96,55 +98,7 @@ dates.add(date.plus(1, ChronoUnit.YEARS)); dates.add(date.plus(10, ChronoUnit.YEARS)); - List> copy = new ArrayList<>(dates); - Collections.shuffle(copy); - Collections.sort(copy, ChronoLocalDate.timeLineOrder()); - assertEquals(copy, dates); - assertTrue(ChronoLocalDate.timeLineOrder().compare(copy.get(0), copy.get(1)) < 0); - } - - public void test_date_comparator_checkGenerics_unknown() { - List> dates = new ArrayList<>(); - ChronoLocalDate date = LocalDate.of(2013, 1, 1); - - // Insert dates in order, no duplicates - dates.add(date.minus(10, ChronoUnit.YEARS)); - dates.add(date.minus(1, ChronoUnit.YEARS)); - dates.add(date.minus(1, ChronoUnit.MONTHS)); - dates.add(date.minus(1, ChronoUnit.WEEKS)); - dates.add(date.minus(1, ChronoUnit.DAYS)); - dates.add(date); - dates.add(date.plus(1, ChronoUnit.DAYS)); - dates.add(date.plus(1, ChronoUnit.WEEKS)); - dates.add(date.plus(1, ChronoUnit.MONTHS)); - dates.add(date.plus(1, ChronoUnit.YEARS)); - dates.add(date.plus(10, ChronoUnit.YEARS)); - - List> copy = new ArrayList<>(dates); - Collections.shuffle(copy); - Collections.sort(copy, ChronoLocalDate.timeLineOrder()); - assertEquals(copy, dates); - assertTrue(ChronoLocalDate.timeLineOrder().compare(copy.get(0), copy.get(1)) < 0); - } - - public > void test_date_comparator_checkGenerics_unknownExtends() { - List> dates = new ArrayList<>(); - ChronoLocalDate date = (ChronoLocalDate) LocalDate.of(2013, 1, 1); // TODO generics raw type - - // Insert dates in order, no duplicates - dates.add(date.minus(10, ChronoUnit.YEARS)); - dates.add(date.minus(1, ChronoUnit.YEARS)); - dates.add(date.minus(1, ChronoUnit.MONTHS)); - dates.add(date.minus(1, ChronoUnit.WEEKS)); - dates.add(date.minus(1, ChronoUnit.DAYS)); - dates.add(date); - dates.add(date.plus(1, ChronoUnit.DAYS)); - dates.add(date.plus(1, ChronoUnit.WEEKS)); - dates.add(date.plus(1, ChronoUnit.MONTHS)); - dates.add(date.plus(1, ChronoUnit.YEARS)); - dates.add(date.plus(10, ChronoUnit.YEARS)); - - List> copy = new ArrayList<>(dates); + List copy = new ArrayList<>(dates); Collections.shuffle(copy); Collections.sort(copy, ChronoLocalDate.timeLineOrder()); assertEquals(copy, dates); @@ -178,13 +132,12 @@ //----------------------------------------------------------------------- public void test_date_checkGenerics_genericsMethod() { Chronology chrono = ThaiBuddhistChronology.INSTANCE; - ChronoLocalDate date = chrono.dateNow(); - // date = processOK(date); // does not compile + ChronoLocalDate date = chrono.dateNow(); + date = processOK(date); date = processClassOK(ThaiBuddhistDate.class); date = dateSupplier(); - // date = processWeird(date); // does not compile (correct) - // date = processClassWeird(ThaiBuddhistDate.class); // does not compile (correct) + date = processClassWeird(ThaiBuddhistDate.class); } public void test_date_checkGenerics_genericsMethod_concreteType() { @@ -195,12 +148,12 @@ date = processClassOK(ThaiBuddhistDate.class); date = dateSupplier(); - // date = processWeird(date); // does not compile (correct) // date = processClassWeird(ThaiBuddhistDate.class); // does not compile (correct) } - public > void test_date_checkGenerics_genericsMethod_withType() { + public void test_date_checkGenerics_genericsMethod_withType() { Chronology chrono = ThaiBuddhistChronology.INSTANCE; + @SuppressWarnings("unchecked") D date = (D) chrono.dateNow(); date = processOK(date); // date = processClassOK(ThaiBuddhistDate.class); // does not compile (correct) @@ -210,24 +163,40 @@ // date = processClassWeird(ThaiBuddhistDate.class); // does not compile (correct) } - private > D dateSupplier() { - return (D) (ChronoLocalDate) ThaiBuddhistChronology.INSTANCE.dateNow(); // TODO raw types + @SuppressWarnings("unchecked") + private D dateSupplier() { + return (D) ThaiBuddhistChronology.INSTANCE.dateNow(); } // decent generics signatures that need to work - private > D processOK(D date) { - return date; + @SuppressWarnings("unchecked") + private D processOK(D date) { + return (D) date.plus(1, ChronoUnit.DAYS); } - private > D processClassOK(Class cls) { + private D processClassOK(Class cls) { return null; } // weird generics signatures that shouldn't really work - private > ChronoLocalDate processWeird(ChronoLocalDate date) { - return date; - } - private > ChronoLocalDate processClassWeird(Class cls) { + private ChronoLocalDate processClassWeird(Class cls) { return null; } + public void test_date_checkGenerics_chronoLocalDateTime1() { + LocalDateTime now = LocalDateTime.now(); + Chronology chrono = ThaiBuddhistChronology.INSTANCE; + ChronoLocalDateTime ldt = chrono.localDateTime(now); + ldt = processCLDT(ldt); + } + + public void test_date_checkGenerics_chronoLocalDateTime2() { + LocalDateTime now = LocalDateTime.now(); + Chronology chrono = ThaiBuddhistChronology.INSTANCE; + ChronoLocalDateTime ldt = chrono.localDateTime(now); + ldt = processCLDT(ldt); + } + + private ChronoLocalDateTime processCLDT(ChronoLocalDateTime dt) { + return dt; + } }