< prev index next >

test/java/time/tck/java/time/chrono/TCKIsoChronology.java

Print this page




  46  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  47  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  48  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  49  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  50  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  51  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  52  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  53  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  54  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  55  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  56  */
  57 package tck.java.time.chrono;
  58 
  59 import static org.testng.Assert.assertEquals;
  60 import static org.testng.Assert.fail;
  61 
  62 import java.time.DateTimeException;
  63 import java.time.LocalDate;
  64 import java.time.LocalDateTime;
  65 import java.time.LocalTime;
  66 import java.time.ZoneId;

  67 import java.time.ZonedDateTime;


  68 import java.time.chrono.Chronology;


  69 import java.time.chrono.IsoChronology;

  70 import java.time.format.ResolverStyle;
  71 import java.time.temporal.ChronoField;
  72 import java.time.temporal.TemporalAccessor;
  73 import java.time.temporal.TemporalAdjusters;
  74 import java.time.temporal.TemporalField;
  75 import java.time.temporal.TemporalQueries;
  76 import java.time.temporal.TemporalQuery;
  77 import java.util.HashMap;
  78 import java.util.Map;
  79 
  80 import org.testng.annotations.DataProvider;
  81 import org.testng.annotations.Test;
  82 
  83 /**
  84  * Test.
  85  */
  86 @Test
  87 public class TCKIsoChronology {
  88     // Can only work with IsoChronology here
  89     // others may be in separate module


  90 
  91     @Test
  92     public void factory_from_TemporalAccessor_dateWithChronlogy() {
  93         assertEquals(Chronology.from(LocalDate.of(2012, 6, 30)), IsoChronology.INSTANCE);
  94     }
  95 
  96     @Test
  97     public void factory_from_TemporalAccessor_chronology() {
  98         assertEquals(Chronology.from(new TemporalAccessor() {
  99             @Override
 100             public boolean isSupported(TemporalField field) {
 101                 throw new UnsupportedOperationException();
 102             }
 103 
 104             @Override
 105             public long getLong(TemporalField field) {
 106                 throw new UnsupportedOperationException();
 107             }
 108 
 109             @SuppressWarnings("unchecked")


 658     public void test_resolve_ymaa_strict(int y, int m, int w, int d, LocalDate expected, boolean smart, boolean strict) {
 659         Map<TemporalField, Long> fieldValues = new HashMap<>();
 660         fieldValues.put(ChronoField.YEAR, (long) y);
 661         fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m);
 662         fieldValues.put(ChronoField.ALIGNED_WEEK_OF_MONTH, (long) w);
 663         fieldValues.put(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, (long) d);
 664         if (strict) {
 665             LocalDate date = IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT);
 666             assertEquals(date, expected);
 667             assertEquals(fieldValues.size(), 0);
 668         } else {
 669             try {
 670                 IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT);
 671                 fail("Should have failed");
 672             } catch (DateTimeException ex) {
 673                 // expected
 674             }
 675         }
 676     }
 677 
































































































 678     //-----------------------------------------------------------------------
 679     private static LocalDate date(int y, int m, int d) {
 680         return LocalDate.of(y, m, d);
 681     }
 682 
 683 }


  46  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  47  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  48  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  49  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  50  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  51  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  52  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  53  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  54  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  55  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  56  */
  57 package tck.java.time.chrono;
  58 
  59 import static org.testng.Assert.assertEquals;
  60 import static org.testng.Assert.fail;
  61 
  62 import java.time.DateTimeException;
  63 import java.time.LocalDate;
  64 import java.time.LocalDateTime;
  65 import java.time.LocalTime;
  66 import java.time.OffsetDateTime;
  67 import java.time.Year;
  68 import java.time.ZonedDateTime;
  69 import java.time.ZoneId;
  70 import java.time.ZoneOffset;
  71 import java.time.chrono.Chronology;
  72 import java.time.chrono.Era;
  73 import java.time.chrono.HijrahEra;
  74 import java.time.chrono.IsoChronology;
  75 import java.time.chrono.IsoEra;
  76 import java.time.format.ResolverStyle;
  77 import java.time.temporal.ChronoField;
  78 import java.time.temporal.TemporalAccessor;
  79 import java.time.temporal.TemporalAdjusters;
  80 import java.time.temporal.TemporalField;
  81 import java.time.temporal.TemporalQueries;
  82 import java.time.temporal.TemporalQuery;
  83 import java.util.HashMap;
  84 import java.util.Map;
  85 
  86 import org.testng.annotations.DataProvider;
  87 import org.testng.annotations.Test;
  88 
  89 /**
  90  * Test.
  91  */
  92 @Test
  93 public class TCKIsoChronology {
  94     // Can only work with IsoChronology here
  95     // others may be in separate module
  96     private static final ZoneOffset OFFSET_P0100 = ZoneOffset.ofHours(1);
  97     private static final ZoneOffset OFFSET_M0100 = ZoneOffset.ofHours(-1);
  98 
  99     @Test
 100     public void factory_from_TemporalAccessor_dateWithChronlogy() {
 101         assertEquals(Chronology.from(LocalDate.of(2012, 6, 30)), IsoChronology.INSTANCE);
 102     }
 103 
 104     @Test
 105     public void factory_from_TemporalAccessor_chronology() {
 106         assertEquals(Chronology.from(new TemporalAccessor() {
 107             @Override
 108             public boolean isSupported(TemporalField field) {
 109                 throw new UnsupportedOperationException();
 110             }
 111 
 112             @Override
 113             public long getLong(TemporalField field) {
 114                 throw new UnsupportedOperationException();
 115             }
 116 
 117             @SuppressWarnings("unchecked")


 666     public void test_resolve_ymaa_strict(int y, int m, int w, int d, LocalDate expected, boolean smart, boolean strict) {
 667         Map<TemporalField, Long> fieldValues = new HashMap<>();
 668         fieldValues.put(ChronoField.YEAR, (long) y);
 669         fieldValues.put(ChronoField.MONTH_OF_YEAR, (long) m);
 670         fieldValues.put(ChronoField.ALIGNED_WEEK_OF_MONTH, (long) w);
 671         fieldValues.put(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH, (long) d);
 672         if (strict) {
 673             LocalDate date = IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT);
 674             assertEquals(date, expected);
 675             assertEquals(fieldValues.size(), 0);
 676         } else {
 677             try {
 678                 IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT);
 679                 fail("Should have failed");
 680             } catch (DateTimeException ex) {
 681                 // expected
 682             }
 683         }
 684     }
 685 
 686     @DataProvider(name = "epochSecond_dataProvider")
 687     Object[][] data_epochSecond() {
 688         return new Object[][] {
 689                 {2008, 3, 3, 1, 2, 2, OFFSET_P0100},
 690                 {2008, 3, 3, 1, 2, 2, OFFSET_M0100},
 691                 {2008, 2, 28, 1, 2, 2, OFFSET_P0100},
 692                 {2009, 3, 3, 1, 2, 2, OFFSET_P0100},
 693                 {2009, 3, 3, 1, 2, 2, OFFSET_M0100},
 694                 {2009, 2, 28, 1, 2, 2, OFFSET_P0100},
 695                 {1968, 3, 3, 1, 2, 2, OFFSET_P0100},
 696                 {1968, 3, 3, 1, 2, 2, OFFSET_M0100},
 697                 {1968, 2, 28, 1, 2, 2, OFFSET_P0100},
 698                 {1969, 3, 3 , 1, 2, 2, OFFSET_P0100},
 699                 {1969, 3, 3, 1, 2, 2, OFFSET_M0100},
 700                 {1969, 2, 28, 1, 2, 2, OFFSET_P0100},
 701                 {1970, 1, 1, 1, 2, 2, OFFSET_P0100},
 702                 {1970, 1, 1, 1, 2, 2, OFFSET_M0100},
 703                 {-4, 3, 3 , 1, 2, 2, OFFSET_P0100},
 704                 {-1, 3, 3 , 1, 2, 2, OFFSET_P0100},
 705         };
 706     }
 707 
 708     @Test(dataProvider = "epochSecond_dataProvider")
 709     public void test_epochSecond_1(int y, int m, int d, int h , int min, int s, ZoneOffset offset) {
 710         assertEquals(IsoChronology.INSTANCE.epochSecond(y, m, d, h, min, s, offset),
 711                      OffsetDateTime.of(y, m, d, h, min, s, 0, offset).toEpochSecond());
 712     }
 713 
 714     @Test
 715     public void test_epochSecond_2() {
 716         assertEquals(IsoChronology.INSTANCE.epochSecond(2008, 3, 3, 1, 2, 2, OFFSET_P0100),
 717                      ZonedDateTime.of(2008, 3, 3, 1, 2, 2, 0, ZoneId.of("+01:00")).toEpochSecond());
 718         assertEquals(IsoChronology.INSTANCE.epochSecond(1969, 3, 3, 1, 2, 2, OFFSET_P0100),
 719                      ZonedDateTime.of(1969, 3, 3, 1, 2, 2, 0, ZoneId.of("+01:00")).toEpochSecond());
 720     }
 721 
 722     @Test
 723     public void test_epochSecond_max() {
 724         assertEquals(IsoChronology.INSTANCE.epochSecond(Year.MAX_VALUE, 12, 31, 23, 59, 59, ZoneOffset.MIN),
 725                      OffsetDateTime.of(Year.MAX_VALUE, 12, 31, 23, 59, 59, 0, ZoneOffset.MIN).toEpochSecond());
 726     }
 727 
 728     @Test
 729     public void test_epochSecond_min() {
 730         assertEquals(IsoChronology.INSTANCE.epochSecond(Year.MIN_VALUE, 1, 1, 0, 0, 0, ZoneOffset.MAX),
 731                      OffsetDateTime.of(Year.MIN_VALUE, 1, 1, 0, 0, 0, 0, ZoneOffset.MAX).toEpochSecond());
 732     }
 733 
 734     @Test(expectedExceptions=DateTimeException.class)
 735     public void test_epochSecond_bad() {
 736         IsoChronology.INSTANCE.epochSecond(2009, 2, 29, 1, 2, 2, OFFSET_P0100);
 737     }
 738 
 739     @DataProvider(name = "era_epochSecond_dataProvider")
 740     Object[][] data_era_epochSecond() {
 741         return new Object[][] {
 742                 {IsoEra.CE, 2008, 3, 3, 1, 2, 2, OFFSET_P0100},
 743                 {IsoEra.CE, 2008, 3, 3, 1, 2, 2, OFFSET_M0100},
 744                 {IsoEra.CE, 2008, 2, 28, 1, 2, 2, OFFSET_P0100},
 745                 {IsoEra.CE, 2009, 3, 3, 1, 2, 2, OFFSET_P0100},
 746                 {IsoEra.CE, 2009, 3, 3, 1, 2, 2, OFFSET_M0100},
 747                 {IsoEra.CE, 2009, 2, 28, 1, 2, 2, OFFSET_P0100},
 748                 {IsoEra.CE, 1968, 3, 3, 1, 2, 2, OFFSET_P0100},
 749                 {IsoEra.CE, 1968, 3, 3, 1, 2, 2, OFFSET_M0100},
 750                 {IsoEra.CE, 1968, 2, 28, 1, 2, 2, OFFSET_P0100},
 751                 {IsoEra.CE, 1969, 3, 3 , 1, 2, 2, OFFSET_P0100},
 752                 {IsoEra.CE, 1969, 3, 3, 1, 2, 2, OFFSET_M0100},
 753                 {IsoEra.CE, 1969, 2, 28, 1, 2, 2, OFFSET_P0100},
 754                 {IsoEra.CE, 1970, 1, 1, 1, 2, 2, OFFSET_P0100},
 755                 {IsoEra.CE, 1970, 1, 1, 1, 2, 2, OFFSET_M0100},
 756                 {IsoEra.BCE, 5, 3, 3 , 1, 2, 2, OFFSET_P0100},
 757                 {IsoEra.BCE, 2, 3, 3 , 1, 2, 2, OFFSET_P0100},
 758         };
 759     }
 760 
 761     @Test(dataProvider = "era_epochSecond_dataProvider")
 762     public void test_era_epochSecond_1(Era era, int y, int m, int d, int h , int min, int s, ZoneOffset offset) {
 763         assertEquals(IsoChronology.INSTANCE.epochSecond(era, y, m, d, h, min, s, offset),
 764                      OffsetDateTime.of(IsoChronology.INSTANCE.date(era, y, m, d), LocalTime.of(h, min, s), offset)
 765                                    .toEpochSecond());
 766     }
 767 
 768     @Test
 769     public void test_era_epochSecond_2() {
 770         assertEquals(IsoChronology.INSTANCE.epochSecond(IsoEra.CE, 2008, 3, 3, 1, 2, 2, OFFSET_P0100),
 771                      ZonedDateTime.of(2008, 3, 3, 1, 2, 2, 0, ZoneId.of("+01:00")).toEpochSecond());
 772         assertEquals(IsoChronology.INSTANCE.epochSecond(IsoEra.CE, 1969, 3, 3, 1, 2, 2, OFFSET_P0100),
 773                      ZonedDateTime.of(1969, 3, 3, 1, 2, 2, 0, ZoneId.of("+01:00")).toEpochSecond());
 774     }
 775 
 776     @Test(expectedExceptions=ClassCastException.class)
 777     public void test_era_epochSecond_bad() {
 778         IsoChronology.INSTANCE.epochSecond(HijrahEra.AH, 2009, 2, 29, 1, 2, 2, OFFSET_P0100);
 779     }
 780 
 781 
 782     //-----------------------------------------------------------------------
 783     private static LocalDate date(int y, int m, int d) {
 784         return LocalDate.of(y, m, d);
 785     }

 786 }
< prev index next >