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 }
|