1 /* 2 * Copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos 3 * 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * * Redistributions of source code must retain the above copyright notice, 10 * this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the documentation 14 * and/or other materials provided with the distribution. 15 * 16 * * Neither the name of JSR-310 nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 package org.threeten.bp.chrono; 33 34 import static org.testng.Assert.assertEquals; 35 import static org.testng.Assert.assertFalse; 36 import static org.testng.Assert.assertTrue; 37 38 import org.testng.Assert; 39 import org.testng.annotations.DataProvider; 40 import org.testng.annotations.Test; 41 import org.threeten.bp.DateTimeException; 42 import org.threeten.bp.LocalDate; 43 import org.threeten.bp.LocalDateTime; 44 import org.threeten.bp.LocalTime; 45 import org.threeten.bp.Month; 46 import org.threeten.bp.ZoneOffset; 47 import org.threeten.bp.temporal.ChronoUnit; 48 import org.threeten.bp.temporal.TemporalAdjusters; 49 50 /** 51 * Test. 52 */ 53 @Test 54 public class TestMinguoChronology { 55 56 //----------------------------------------------------------------------- 57 // Chrono.ofName("Minguo") Lookup by name 58 //----------------------------------------------------------------------- 59 @Test test_chrono_byName()60 public void test_chrono_byName() { 61 Chronology c = MinguoChronology.INSTANCE; 62 Chronology test = Chronology.of("Minguo"); 63 Assert.assertNotNull(test, "The Minguo calendar could not be found byName"); 64 Assert.assertEquals(test.getId(), "Minguo", "ID mismatch"); 65 Assert.assertEquals(test.getCalendarType(), "roc", "Type mismatch"); 66 Assert.assertEquals(test, c); 67 } 68 69 //----------------------------------------------------------------------- 70 // creation, toLocalDate() 71 //----------------------------------------------------------------------- 72 @DataProvider(name="samples") data_samples()73 Object[][] data_samples() { 74 return new Object[][] { 75 {MinguoChronology.INSTANCE.date(1, 1, 1), LocalDate.of(1912, 1, 1)}, 76 {MinguoChronology.INSTANCE.date(1, 1, 2), LocalDate.of(1912, 1, 2)}, 77 {MinguoChronology.INSTANCE.date(1, 1, 3), LocalDate.of(1912, 1, 3)}, 78 79 {MinguoChronology.INSTANCE.date(2, 1, 1), LocalDate.of(1913, 1, 1)}, 80 {MinguoChronology.INSTANCE.date(3, 1, 1), LocalDate.of(1914, 1, 1)}, 81 {MinguoChronology.INSTANCE.date(3, 12, 6), LocalDate.of(1914, 12, 6)}, 82 {MinguoChronology.INSTANCE.date(4, 1, 1), LocalDate.of(1915, 1, 1)}, 83 {MinguoChronology.INSTANCE.date(4, 7, 3), LocalDate.of(1915, 7, 3)}, 84 {MinguoChronology.INSTANCE.date(4, 7, 4), LocalDate.of(1915, 7, 4)}, 85 {MinguoChronology.INSTANCE.date(5, 1, 1), LocalDate.of(1916, 1, 1)}, 86 {MinguoChronology.INSTANCE.date(100, 3, 3), LocalDate.of(2011, 3, 3)}, 87 {MinguoChronology.INSTANCE.date(101, 10, 28), LocalDate.of(2012, 10, 28)}, 88 {MinguoChronology.INSTANCE.date(101, 10, 29), LocalDate.of(2012, 10, 29)}, 89 }; 90 } 91 92 @Test(dataProvider="samples") test_toLocalDate(ChronoLocalDate minguo, LocalDate iso)93 public void test_toLocalDate(ChronoLocalDate minguo, LocalDate iso) { 94 assertEquals(LocalDate.from(minguo), iso); 95 } 96 97 @Test(dataProvider="samples") test_fromCalendrical(ChronoLocalDate minguo, LocalDate iso)98 public void test_fromCalendrical(ChronoLocalDate minguo, LocalDate iso) { 99 assertEquals(MinguoChronology.INSTANCE.date(iso), minguo); 100 } 101 102 @SuppressWarnings("unused") 103 @Test(dataProvider="samples") test_MinguoDate(ChronoLocalDate minguoDate, LocalDate iso)104 public void test_MinguoDate(ChronoLocalDate minguoDate, LocalDate iso) { 105 ChronoLocalDate hd = minguoDate; 106 ChronoLocalDateTime<?> hdt = hd.atTime(LocalTime.NOON); 107 ZoneOffset zo = ZoneOffset.ofHours(1); 108 ChronoZonedDateTime<?> hzdt = hdt.atZone(zo); 109 hdt = hdt.plus(1, ChronoUnit.YEARS); 110 hdt = hdt.plus(1, ChronoUnit.MONTHS); 111 hdt = hdt.plus(1, ChronoUnit.DAYS); 112 hdt = hdt.plus(1, ChronoUnit.HOURS); 113 hdt = hdt.plus(1, ChronoUnit.MINUTES); 114 hdt = hdt.plus(1, ChronoUnit.SECONDS); 115 hdt = hdt.plus(1, ChronoUnit.NANOS); 116 ChronoLocalDateTime<?> a2 = hzdt.toLocalDateTime(); 117 ChronoLocalDate a3 = a2.toLocalDate(); 118 ChronoLocalDate a5 = hzdt.toLocalDate(); 119 //System.out.printf(" d: %s, dt: %s; odt: %s; zodt: %s; a4: %s%n", date, hdt, hodt, hzdt, a5); 120 } 121 122 @Test() test_MinguoChrono()123 public void test_MinguoChrono() { 124 ChronoLocalDate h1 = MinguoChronology.INSTANCE.date(MinguoEra.ROC, 1, 2, 3); 125 ChronoLocalDate h2 = h1; 126 ChronoLocalDateTime<?> h3 = h2.atTime(LocalTime.NOON); 127 @SuppressWarnings("unused") 128 ChronoZonedDateTime<?> h4 = h3.atZone(ZoneOffset.UTC); 129 } 130 131 @DataProvider(name="badDates") data_badDates()132 Object[][] data_badDates() { 133 return new Object[][] { 134 {1912, 0, 0}, 135 136 {1912, -1, 1}, 137 {1912, 0, 1}, 138 {1912, 14, 1}, 139 {1912, 15, 1}, 140 141 {1912, 1, -1}, 142 {1912, 1, 0}, 143 {1912, 1, 32}, 144 {1912, 2, 29}, 145 {1912, 2, 30}, 146 147 {1912, 12, -1}, 148 {1912, 12, 0}, 149 {1912, 12, 32}, 150 }; 151 } 152 153 @Test(dataProvider="badDates", expectedExceptions=DateTimeException.class) test_badDates(int year, int month, int dom)154 public void test_badDates(int year, int month, int dom) { 155 MinguoChronology.INSTANCE.date(year, month, dom); 156 } 157 158 //----------------------------------------------------------------------- 159 // with(DateTimeAdjuster) 160 //----------------------------------------------------------------------- 161 @Test test_adjust1()162 public void test_adjust1() { 163 ChronoLocalDate base = MinguoChronology.INSTANCE.date(2012, 10, 29); 164 ChronoLocalDate test = base.with(TemporalAdjusters.lastDayOfMonth()); 165 assertEquals(test, MinguoChronology.INSTANCE.date(2012, 10, 31)); 166 } 167 168 @Test test_adjust2()169 public void test_adjust2() { 170 ChronoLocalDate base = MinguoChronology.INSTANCE.date(1728, 12, 2); 171 ChronoLocalDate test = base.with(TemporalAdjusters.lastDayOfMonth()); 172 assertEquals(test, MinguoChronology.INSTANCE.date(1728, 12, 31)); 173 } 174 175 //----------------------------------------------------------------------- 176 // MinguoDate.with(Local*) 177 //----------------------------------------------------------------------- 178 @Test test_adjust_toLocalDate()179 public void test_adjust_toLocalDate() { 180 ChronoLocalDate minguo = MinguoChronology.INSTANCE.date(99, 1, 4); 181 ChronoLocalDate test = minguo.with(LocalDate.of(2012, 7, 6)); 182 assertEquals(test, MinguoChronology.INSTANCE.date(101, 7, 6)); 183 } 184 185 @Test(expectedExceptions=DateTimeException.class) test_adjust_toMonth()186 public void test_adjust_toMonth() { 187 ChronoLocalDate minguo = MinguoChronology.INSTANCE.date(1726, 1, 4); 188 minguo.with(Month.APRIL); 189 } 190 191 //----------------------------------------------------------------------- 192 // LocalDate.with(MinguoDate) 193 //----------------------------------------------------------------------- 194 @Test test_LocalDate_adjustToMinguoDate()195 public void test_LocalDate_adjustToMinguoDate() { 196 ChronoLocalDate minguo = MinguoChronology.INSTANCE.date(101, 10, 29); 197 LocalDate test = LocalDate.MIN.with(minguo); 198 assertEquals(test, LocalDate.of(2012, 10, 29)); 199 } 200 201 @Test test_LocalDateTime_adjustToMinguoDate()202 public void test_LocalDateTime_adjustToMinguoDate() { 203 ChronoLocalDate minguo = MinguoChronology.INSTANCE.date(101, 10, 29); 204 LocalDateTime test = LocalDateTime.MIN.with(minguo); 205 assertEquals(test, LocalDateTime.of(2012, 10, 29, 0, 0)); 206 } 207 208 //----------------------------------------------------------------------- 209 // toString() 210 //----------------------------------------------------------------------- 211 @DataProvider(name="toString") data_toString()212 Object[][] data_toString() { 213 return new Object[][] { 214 {MinguoChronology.INSTANCE.date(1, 1, 1), "Minguo ROC 1-01-01"}, 215 {MinguoChronology.INSTANCE.date(1728, 10, 28), "Minguo ROC 1728-10-28"}, 216 {MinguoChronology.INSTANCE.date(1728, 10, 29), "Minguo ROC 1728-10-29"}, 217 {MinguoChronology.INSTANCE.date(1727, 12, 5), "Minguo ROC 1727-12-05"}, 218 {MinguoChronology.INSTANCE.date(1727, 12, 6), "Minguo ROC 1727-12-06"}, 219 }; 220 } 221 222 @Test(dataProvider="toString") test_toString(ChronoLocalDate minguo, String expected)223 public void test_toString(ChronoLocalDate minguo, String expected) { 224 assertEquals(minguo.toString(), expected); 225 } 226 227 //----------------------------------------------------------------------- 228 // equals() 229 //----------------------------------------------------------------------- 230 @Test test_equals_true()231 public void test_equals_true() { 232 assertTrue(MinguoChronology.INSTANCE.equals(MinguoChronology.INSTANCE)); 233 } 234 235 @Test test_equals_false()236 public void test_equals_false() { 237 assertFalse(MinguoChronology.INSTANCE.equals(IsoChronology.INSTANCE)); 238 } 239 240 } 241