< prev index next >

test/java/time/tck/java/time/chrono/TCKChronology.java

Print this page




  51  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  52  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  53  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  54  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  55  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  56  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  57  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  58  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  59  */
  60 package tck.java.time.chrono;
  61 
  62 import static org.testng.Assert.assertEquals;
  63 import static org.testng.Assert.assertNotNull;
  64 import static org.testng.Assert.assertSame;
  65 import static org.testng.Assert.assertTrue;
  66 
  67 import java.io.ByteArrayInputStream;
  68 import java.io.ByteArrayOutputStream;
  69 import java.io.ObjectInputStream;
  70 import java.io.ObjectOutputStream;
  71 import java.time.ZoneId;
  72 import java.time.Clock;
  73 import java.time.DateTimeException;





  74 import java.time.chrono.ChronoLocalDate;
  75 import java.time.chrono.Chronology;

  76 import java.time.chrono.HijrahChronology;
  77 import java.time.chrono.HijrahEra;
  78 import java.time.chrono.IsoChronology;
  79 import java.time.chrono.IsoEra;
  80 import java.time.chrono.JapaneseChronology;
  81 import java.time.chrono.JapaneseEra;
  82 import java.time.chrono.MinguoChronology;
  83 import java.time.chrono.MinguoEra;
  84 import java.time.chrono.ThaiBuddhistChronology;
  85 import java.time.chrono.ThaiBuddhistEra;
  86 import java.time.format.TextStyle;
  87 import java.time.temporal.ChronoField;
  88 import java.util.Locale;
  89 import java.util.Set;
  90 
  91 import org.testng.annotations.DataProvider;
  92 import org.testng.annotations.Test;
  93 
  94 /**
  95  * Test Chronology class.
  96  */
  97 @Test
  98 public class TCKChronology {
  99 








 100     //-----------------------------------------------------------------------
 101     // regular data factory for ID and calendarType of available calendars
 102     //-----------------------------------------------------------------------
 103     @DataProvider(name = "calendarNameAndType")
 104     Object[][] data_of_calendars() {
 105         return new Object[][] {
 106                     {"Hijrah-umalqura", "islamic-umalqura"},
 107                     {"ISO", "iso8601"},
 108                     {"Japanese", "japanese"},
 109                     {"Minguo", "roc"},
 110                     {"ThaiBuddhist", "buddhist"},
 111                 };
 112     }
 113 
 114     @Test(dataProvider = "calendarNameAndType")
 115     public void test_getters(String chronoId, String calendarSystemType) {
 116         Chronology chrono = Chronology.of(chronoId);
 117         assertNotNull(chrono, "Required calendar not found by ID: " + chronoId);
 118         assertEquals(chrono.getId(), chronoId);
 119         assertEquals(chrono.getCalendarType(), calendarSystemType);


 320             builder.setUnicodeLocaleKeyword("ca", chrono.getCalendarType());
 321             Locale locale = builder.build();
 322             assertEquals(Chronology.ofLocale(locale), chrono, "Lookup by type");
 323         }
 324     }
 325 
 326     @Test(expectedExceptions=DateTimeException.class)
 327     public void test_lookupLocale() {
 328         Locale.Builder builder = new Locale.Builder().setLanguage("en").setRegion("CA");
 329         builder.setUnicodeLocaleKeyword("ca", "xxx");
 330 
 331         Locale locale = builder.build();
 332         Chronology.ofLocale(locale);
 333     }
 334 
 335     @Test(expectedExceptions = DateTimeException.class)
 336     public void test_noChrono() {
 337         Chronology chrono = Chronology.of("FooFoo");
 338     }
 339 
























































 340 }


  51  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  52  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  53  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  54  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  55  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  56  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  57  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  58  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  59  */
  60 package tck.java.time.chrono;
  61 
  62 import static org.testng.Assert.assertEquals;
  63 import static org.testng.Assert.assertNotNull;
  64 import static org.testng.Assert.assertSame;
  65 import static org.testng.Assert.assertTrue;
  66 
  67 import java.io.ByteArrayInputStream;
  68 import java.io.ByteArrayOutputStream;
  69 import java.io.ObjectInputStream;
  70 import java.io.ObjectOutputStream;

  71 import java.time.Clock;
  72 import java.time.DateTimeException;
  73 import java.time.LocalDate;
  74 import java.time.LocalTime;
  75 import java.time.OffsetDateTime;
  76 import java.time.ZoneId;
  77 import java.time.ZoneOffset;
  78 import java.time.chrono.ChronoLocalDate;
  79 import java.time.chrono.Chronology;
  80 import java.time.chrono.Era;
  81 import java.time.chrono.HijrahChronology;
  82 import java.time.chrono.HijrahEra;
  83 import java.time.chrono.IsoChronology;
  84 import java.time.chrono.IsoEra;
  85 import java.time.chrono.JapaneseChronology;
  86 import java.time.chrono.JapaneseEra;
  87 import java.time.chrono.MinguoChronology;
  88 import java.time.chrono.MinguoEra;
  89 import java.time.chrono.ThaiBuddhistChronology;
  90 import java.time.chrono.ThaiBuddhistEra;
  91 import java.time.format.TextStyle;
  92 import java.time.temporal.ChronoField;
  93 import java.util.Locale;
  94 import java.util.Set;
  95 
  96 import org.testng.annotations.DataProvider;
  97 import org.testng.annotations.Test;
  98 
  99 /**
 100  * Test Chronology class.
 101  */
 102 @Test
 103 public class TCKChronology {
 104 
 105     private static final ZoneOffset OFFSET_P0100 = ZoneOffset.ofHours(1);
 106     private static final ZoneOffset OFFSET_M0100 = ZoneOffset.ofHours(-1);
 107 
 108     private static final int YDIFF_MEIJI = 1867;
 109     private static final int YDIFF_SHOWA = 1925;
 110     private static final int YDIFF_HEISEI = 1988;
 111     private static final int YDIFF_MINGUO = 1911;
 112     private static final int YDIFF_THAIBUDDHIST = 543;
 113     //-----------------------------------------------------------------------
 114     // regular data factory for ID and calendarType of available calendars
 115     //-----------------------------------------------------------------------
 116     @DataProvider(name = "calendarNameAndType")
 117     Object[][] data_of_calendars() {
 118         return new Object[][] {
 119                     {"Hijrah-umalqura", "islamic-umalqura"},
 120                     {"ISO", "iso8601"},
 121                     {"Japanese", "japanese"},
 122                     {"Minguo", "roc"},
 123                     {"ThaiBuddhist", "buddhist"},
 124                 };
 125     }
 126 
 127     @Test(dataProvider = "calendarNameAndType")
 128     public void test_getters(String chronoId, String calendarSystemType) {
 129         Chronology chrono = Chronology.of(chronoId);
 130         assertNotNull(chrono, "Required calendar not found by ID: " + chronoId);
 131         assertEquals(chrono.getId(), chronoId);
 132         assertEquals(chrono.getCalendarType(), calendarSystemType);


 333             builder.setUnicodeLocaleKeyword("ca", chrono.getCalendarType());
 334             Locale locale = builder.build();
 335             assertEquals(Chronology.ofLocale(locale), chrono, "Lookup by type");
 336         }
 337     }
 338 
 339     @Test(expectedExceptions=DateTimeException.class)
 340     public void test_lookupLocale() {
 341         Locale.Builder builder = new Locale.Builder().setLanguage("en").setRegion("CA");
 342         builder.setUnicodeLocaleKeyword("ca", "xxx");
 343 
 344         Locale locale = builder.build();
 345         Chronology.ofLocale(locale);
 346     }
 347 
 348     @Test(expectedExceptions = DateTimeException.class)
 349     public void test_noChrono() {
 350         Chronology chrono = Chronology.of("FooFoo");
 351     }
 352 
 353     @DataProvider(name = "epochSecond_dataProvider")
 354     Object[][]  data_epochSecond() {
 355         return new Object[][] {
 356                 {JapaneseChronology.INSTANCE, 1873, 9, 7, 1, 2, 2, OFFSET_P0100},
 357                 {JapaneseChronology.INSTANCE, 1928, 2, 28, 1, 2, 2, OFFSET_M0100},
 358                 {JapaneseChronology.INSTANCE, 1989, 1, 8, 1, 2, 2, OFFSET_P0100},
 359                 {HijrahChronology.INSTANCE, 1434, 9, 7, 1, 2, 2, OFFSET_P0100},
 360                 {MinguoChronology.INSTANCE, 1873, 9, 7, 1, 2, 2, OFFSET_P0100},
 361                 {MinguoChronology.INSTANCE, 1928, 2, 28, 1, 2, 2, OFFSET_M0100},
 362                 {MinguoChronology.INSTANCE, 1989, 1, 8, 1, 2, 2, OFFSET_P0100},
 363                 {ThaiBuddhistChronology.INSTANCE, 1873, 9, 7, 1, 2, 2, OFFSET_P0100},
 364                 {ThaiBuddhistChronology.INSTANCE, 1928, 2, 28, 1, 2, 2, OFFSET_M0100},
 365                 {ThaiBuddhistChronology.INSTANCE, 1989, 1, 8, 1, 2, 2, OFFSET_P0100},
 366                 {IsoChronology.INSTANCE, 1873, 9, 7, 1, 2, 2, OFFSET_P0100},
 367                 {IsoChronology.INSTANCE, 1928, 2, 28, 1, 2, 2, OFFSET_M0100},
 368                 {IsoChronology.INSTANCE, 1989, 1, 8, 1, 2, 2, OFFSET_P0100},
 369 
 370         };
 371     }
 372 
 373     @Test(dataProvider = "epochSecond_dataProvider")
 374     public void test_epochSecond(Chronology chrono, int y, int m, int d, int h, int min, int s, ZoneOffset offset) {
 375         ChronoLocalDate chronoLd = chrono.date(y, m, d);
 376         assertEquals(chrono.epochSecond(y, m, d, h, min, s, offset),
 377                      OffsetDateTime.of(LocalDate.from(chronoLd), LocalTime.of(h, min, s), offset)
 378                                    .toEpochSecond());
 379     }
 380 
 381     @DataProvider(name = "era_epochSecond_dataProvider")
 382     Object[][]  data_era_epochSecond() {
 383         return new Object[][] {
 384                 {JapaneseChronology.INSTANCE, JapaneseEra.MEIJI, 1873 - YDIFF_MEIJI, 9, 7, 1, 2, 2, OFFSET_P0100},
 385                 {JapaneseChronology.INSTANCE, JapaneseEra.SHOWA, 1928 - YDIFF_SHOWA, 2, 28, 1, 2, 2, OFFSET_M0100},
 386                 {JapaneseChronology.INSTANCE, JapaneseEra.HEISEI, 1989 - YDIFF_HEISEI, 1, 8, 1, 2, 2, OFFSET_P0100},
 387                 {HijrahChronology.INSTANCE, HijrahEra.AH, 1434, 9, 7, 1, 2, 2, OFFSET_P0100},
 388                 {MinguoChronology.INSTANCE, MinguoEra.BEFORE_ROC, 1873 - YDIFF_MINGUO, 9, 7, 1, 2, 2, OFFSET_P0100},
 389                 {MinguoChronology.INSTANCE, MinguoEra.ROC, 1928 - YDIFF_MINGUO, 2, 28, 1, 2, 2, OFFSET_M0100},
 390                 {MinguoChronology.INSTANCE, MinguoEra.ROC, 1989 - YDIFF_MINGUO, 1, 8, 1, 2, 2, OFFSET_P0100},
 391                 {ThaiBuddhistChronology.INSTANCE, ThaiBuddhistEra.BE, 1873 + YDIFF_THAIBUDDHIST, 9, 7, 1, 2, 2, OFFSET_P0100},
 392                 {ThaiBuddhistChronology.INSTANCE, ThaiBuddhistEra.BE, 1928 + YDIFF_THAIBUDDHIST, 2, 28, 1, 2, 2, OFFSET_M0100},
 393                 {ThaiBuddhistChronology.INSTANCE, ThaiBuddhistEra.BE, 1989 + YDIFF_THAIBUDDHIST, 1, 8, 1, 2, 2, OFFSET_P0100},
 394                 {IsoChronology.INSTANCE, IsoEra.CE, 1873, 9, 7, 1, 2, 2, OFFSET_P0100},
 395                 {IsoChronology.INSTANCE, IsoEra.CE, 1928, 2, 28, 1, 2, 2, OFFSET_M0100},
 396                 {IsoChronology.INSTANCE, IsoEra.CE, 1989, 1, 8, 1, 2, 2, OFFSET_P0100},
 397 
 398         };
 399     }
 400 
 401     @Test(dataProvider = "era_epochSecond_dataProvider")
 402     public void test_epochSecond(Chronology chrono, Era era, int y, int m, int d, int h, int min, int s, ZoneOffset offset) {
 403         ChronoLocalDate chronoLd = chrono.date(era, y, m, d);
 404         assertEquals(chrono.epochSecond(era, y, m, d, h, min, s, offset),
 405                      OffsetDateTime.of(LocalDate.from(chronoLd), LocalTime.of(h, min, s), offset)
 406                                    .toEpochSecond());
 407     }
 408 
 409 }
< prev index next >