14a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer/* 24a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * Copyright (C) 2017 The Android Open Source Project 34a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * 44a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * Licensed under the Apache License, Version 2.0 (the "License"); 54a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * you may not use this file except in compliance with the License. 64a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * You may obtain a copy of the License at 74a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * 84a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * http://www.apache.org/licenses/LICENSE-2.0 94a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * 104a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * Unless required by applicable law or agreed to in writing, software 114a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * distributed under the License is distributed on an "AS IS" BASIS, 124a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * See the License for the specific language governing permissions and 144a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * limitations under the License. 154a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer */ 164a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerpackage libcore.java.time.chrono; 174a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 184a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport org.junit.Test; 194a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.Instant; 204a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.LocalDate; 214a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.LocalTime; 224a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.ZoneId; 234a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.ZoneOffset; 244a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.ZonedDateTime; 254a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.chrono.ChronoZonedDateTime; 264a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.chrono.JapaneseChronology; 274a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.chrono.JapaneseDate; 284a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.chrono.JapaneseEra; 294a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport java.time.temporal.ChronoField; 304a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 314a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport static org.junit.Assert.assertEquals; 324a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerimport static org.junit.Assert.assertSame; 334a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 344a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer/** 354a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * Additional tests for {@link JapaneseChronology} and {@link JapaneseDate}. 364a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * 374a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer * @see tck.java.time.chrono.TCKJapaneseChronology 384a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer */ 394a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauerpublic class JapaneseChronologyTest { 404a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 414a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer @Test 424a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer public void test_zonedDateTime() { 434a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer ZonedDateTime zonedDateTime = ZonedDateTime 444a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer .of(2017, 4, 1, 15, 14, 13, 12, ZoneId.of("Europe/London")); 454a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 464a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer ChronoZonedDateTime<JapaneseDate> result = JapaneseChronology.INSTANCE 474a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer .zonedDateTime(zonedDateTime.toInstant(), zonedDateTime.getZone()); 484a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(JapaneseDate.of(JapaneseEra.HEISEI, 29, 4, 1), result.toLocalDate()); 494a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(LocalTime.of(15, 14, 13, 12), result.toLocalTime()); 504a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(ZoneOffset.ofHours(1), result.getOffset()); 514a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer } 524a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 534a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer @Test(expected = NullPointerException.class) 544a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer public void test_zonedDateTime_nullInstant() { 554a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer JapaneseChronology.INSTANCE.zonedDateTime(null, ZoneOffset.UTC); 564a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer } 574a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 584a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer @Test(expected = NullPointerException.class) 594a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer public void test_zonedDateTime_nullZone() { 604a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer JapaneseChronology.INSTANCE.zonedDateTime(Instant.EPOCH, null); 614a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer } 624a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 634a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer @Test 644a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer public void test_JapaneseDate_getChronology() { 654a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertSame(JapaneseChronology.INSTANCE, JapaneseDate.now().getChronology()); 664a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer } 674a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 684a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer @Test 694a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer public void test_JapaneseDate_getEra() { 704a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer // pick the first january of the second year of each era, except for Meiji, because the 714a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer // first supported year in JapaneseChronology is Meiji 6. 724a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(JapaneseEra.MEIJI, JapaneseDate.from(LocalDate.of(1873, 1, 1)).getEra()); 734a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(JapaneseEra.TAISHO, JapaneseDate.from(LocalDate.of(1913, 1, 1)).getEra()); 744a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(JapaneseEra.SHOWA, JapaneseDate.from(LocalDate.of(1927, 1, 1)).getEra()); 754a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(JapaneseEra.HEISEI, JapaneseDate.from(LocalDate.of(1990, 1, 1)).getEra()); 764a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer } 774a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer 784a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer @Test 794a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer public void test_JapaneseDate_isSupported_TemporalField() { 804a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer JapaneseDate date = JapaneseDate.now(); 814a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer // all date based fields, except for the aligned week ones are supported. 824a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); 834a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); 844a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.ALIGNED_WEEK_OF_MONTH)); 854a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.ALIGNED_WEEK_OF_YEAR)); 864a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.AMPM_OF_DAY)); 874a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.CLOCK_HOUR_OF_AMPM)); 884a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.CLOCK_HOUR_OF_DAY)); 894a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.DAY_OF_MONTH)); 904a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.DAY_OF_WEEK)); 914a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.DAY_OF_YEAR)); 924a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.EPOCH_DAY)); 934a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.ERA)); 944a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.HOUR_OF_AMPM)); 954a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.HOUR_OF_DAY)); 964a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.INSTANT_SECONDS)); 974a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.MICRO_OF_DAY)); 984a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.MICRO_OF_SECOND)); 994a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.MILLI_OF_DAY)); 1004a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.MILLI_OF_SECOND)); 1014a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.MINUTE_OF_DAY)); 1024a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.MINUTE_OF_HOUR)); 1034a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.MONTH_OF_YEAR)); 1044a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.NANO_OF_DAY)); 1054a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.NANO_OF_SECOND)); 1064a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.OFFSET_SECONDS)); 1074a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.PROLEPTIC_MONTH)); 1084a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.SECOND_OF_DAY)); 1094a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(false, date.isSupported(ChronoField.SECOND_OF_MINUTE)); 1104a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.YEAR)); 1114a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer assertEquals(true, date.isSupported(ChronoField.YEAR_OF_ERA)); 1124a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer } 1134a29794d136843c8a0fe71ad79be0e5dc45a7596Joachim Sauer} 114